protected function setupEmitterForMonsterArrows():void { var emitter:Emitter2D = new Emitter2D(); // - 1 emitter.counter = new Steady(1); var wayline:Wayline = _waylines[0]; emitter.addInitializer( new Position( new LineZone( new Point(wayline.x - wayline.radius*Math.cos(wayline.rotation), wayline.y - wayline.radius*Math.sin(wayline.rotation)), new Point(wayline.x + wayline.radius*Math.cos(wayline.rotation), wayline.y + wayline.radius*Math.sin(wayline.rotation)) ) ) ); // , // emitter.addInitializer( new ImageClass( Arrow, [10] ) ); emitter.addAction( new DeathZone( new RectangleZone( -30, -30, stage.stageWidth+60, stage.stageHeight + 60 ), true ) ); emitter.addAction( new Move() ); emitter.addAction( new RotateToDirection() ); // , , // action // emitter.addAction( new MinimumDistance( 7, 600 ) ); // emitter.addAction( new ActionResistance(.1)); emitter.addAction( new FollowWaylines(_waylines) ); var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(); addChild( renderer ); renderer.addEmitter( emitter ); // emitterWaylinesForMonsterArrows = emitter; emitterWaylinesForMonsterArrows.start(); }
override protected function setup(e:Event=null):void { super.setup(); // setupEmitterForMonsterArrows(); }
override protected function setup(e:Event=null):void { super.setup(); // setupEmitterForMonsterArrows(); // action " " // (!) , - emitterWaylines.addAction( new Antigravities(emitterWaylinesForMonsterArrows, -400000) ); }
override protected function setupWaylines():void { _waylines = []; var w:Number = stage.stageWidth; var h:Number = stage.stageHeight; var points:Array = [new Point(-9,h*.4), new Point(w*.3,h*.4), new Point(w*.5,h*.1), new Point(w*.8,h*.1), new Point(w*.8,h*.9), new Point(w*.5, h*.9), new Point(w*.3, h*.8), new Point(-40, h*.8)]; var fitline:FitLine = new FitLine(points); var path:Path = new Path(fitline.fitPoints); /* * . 40, 25 * * , , * , , */ var step:Number = path.length / 25; var strength:Number = 100; for(var i:int=0; i<path.length; i+=step) { var segmentLength:int = 60;//*Math.random()+10; var pathpoint:PathPoint = path.getPathPoint(i); var wayline:Wayline = new Wayline(pathpoint.x, pathpoint.y, segmentLength, pathpoint.rotation-Math.PI/2, strength); _waylines.push(wayline); } }
emitter.addInitializer( new Position( new LineZone( new Point(wayline.x - (wayline.radius-10)*Math.cos(wayline.rotation), wayline.y - (wayline.radius-10)*Math.sin(wayline.rotation)), new Point(wayline.x + (wayline.radius-10)*Math.cos(wayline.rotation), wayline.y + (wayline.radius-10)*Math.sin(wayline.rotation)) ) ) );
protected function setupEmitterForExplosion():void { var emitter:Emitter2D = new Emitter2D(); // - emitter.addAction( new Move() ); // , - emitter.addAction( new SpeedLimit(40)); // - emitter.addAction( new Friction(40) ); // - ( ) emitter.addAction( new DeathZone( new RectangleZone( -30, -10, stage.stageWidth+40, stage.stageHeight + 20 ), true ) ); // var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(); addChild( renderer ); renderer.addEmitter( emitter ); // emitterExplosion = emitter; emitterExplosion.start(); }
stage.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
private function handleMouseDown(e:MouseEvent):void { explosion(e); }
private function explosion(e:MouseEvent):void { if(emitterWaylines == null){ return; } if(emitterExplosion == null){ return; } // var explRadius:int = 30; // // ( , dot- ) var particleOrigin:Particle2D; var particleClone:Particle2D; var particlePoint:Point = new Point(); // ... var explPoint:Point = new Point(e.stageX, e.stageY); // var particles:Array = emitterWaylines.particlesArray; var length:int = particles.length; // for(var p:int=0; p<length; p++) { particleOrigin = particles[p]; particlePoint.x = particleOrigin.x; particlePoint.y = particleOrigin.y; // , if(Point.distance(explPoint, particlePoint) < explRadius) { /* * , - * - */ particleClone = particleOrigin.clone(emitterExplosion.particleFactory) as Particle2D; particleClone.angVelocity = -5 + Math.random() * 10; /* * Arrow ( ) - ActionScript , * ! , * emitterWaylines * - renderer.removeChild() * * . . * ( , ) , * ( - ) */ particleClone.image = new Arrow(4, 0xff0000); // emitterExplosion.addParticle(particleClone); // particleOrigin.isDead = true; } } /* * action * * , , - , * , (. ). * * - : * * , , ... * - */ var explosion:Explosion = new Explosion(10000, explPoint.x, explPoint.y, 100); emitterExplosion.addAction(explosion); /* * - * Emitter2D.update(.2) - */ // emitterExplosion.update(0.2); // action Explosion - emitterExplosion.removeAction(explosion); }
protected function setupEmitterForExplosion():void { var emitter:Emitter2D = new Emitter2D(); ... // action "" . , . // . , emitterExplosion.addAction( new Age() ); ... // " ", "" emitterExplosion.addEventListener(ParticleEvent.PARTICLE_DEAD, handleParticleDeadFromEmitterExplosion); }
private function explosion(e:MouseEvent):void { ... // for(var p:int=0; p<length; p++) { ... // , if(Point.distance(explPoint, particlePoint) < explRadius) { particleClone = particleOrigin.clone(emitterExplosion.particleFactory) as Particle2D; particleClone.angVelocity = -5 + Math.random() * 10; /* * action Age() , * , "" * */ particleClone.lifetime = 3; particleClone.age = 0; ... } } ... }
protected function explosion(e:MouseEvent):void { ... particleClone.velX = 0; particleClone.velY = 0; ... }
Source: https://habr.com/ru/post/218697/
All Articles