flash on 2010-1-20
♥0 |
Line 72 |
Modified 2010-01-20 13:30:35 |
MIT License
archived:2017-03-20 01:46:39
ActionScript3 source code
/**
* Copyright nausicaa ( http://wonderfl.net/user/nausicaa )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eXSC
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class BallFollowMouse extends Sprite {
private var ballCount:uint = 50;
private var speed:Number = 0.2;
public function BallFollowMouse() {
var _txt:TextField=new TextField();
addChild(_txt);
_txt.autoSize=TextFieldAutoSize.LEFT;
_txt.text=new BallEvent(BallEvent.FOLLOW,0,1,2).toString();
for(var i:uint=0;i<ballCount;i++){
addChild(new Ball(this,200));
}
addEventListener(Event.ENTER_FRAME,followMouse);
}
private function followMouse(eventObject:Event):void{
dispatchEvent(new BallEvent(BallEvent.FOLLOW,mouseX,mouseY,speed));
}
}
}
import flash.display.Sprite;
import flash.display.Graphics;
import flash.events.Event;
class Ball extends Sprite{
private const deceleration:Number = 0.5;
private var angle:Number;
private var radius:Number;
private var sizeRate:Number = 0.1;
public function Ball(timeline:Sprite,maxRadius:Number){
var randomRate:Number = Math.random();
angle = 2*Math.PI*Math.random();
radius = maxRadius*randomRate;
createBall(randomRate);
timeline.addEventListener(BallEvent.FOLLOW, follow);
}
private function createBall(randomRate:Number):void{
var myGraphics:Graphics = graphics;
myGraphics.beginFill(Math.floor(0xffffff*randomRate)+1);
myGraphics.drawCircle(0,0,radius*sizeRate);
alpha = 1-randomRate;
}
private function follow(eventObject:BallEvent):void{
var randomRate:Number=Math.random();
angle += eventObject.speed;
angle%=Math.PI*2;
var nX:Number=eventObject.targetX+radius*Math.cos(angle);
var nY:Number=eventObject.targetY+radius*Math.sin(angle);
x += (nX-x)*deceleration*randomRate;
y += (nY-y)*deceleration*randomRate;
}
}
class BallEvent extends Event{
public static const FOLLOW:String = "follow"
//private var _targetX:Number;
public var targetX:Number;
//private var _targetY:Number;
public var targetY:Number;
//private var _speed:Number;
public var speed:Number;
/*public function get targetX():Number{
return _targetX;
}
public function get targetY():Number{
return _targetY;
}
public function get speed():Number{
return _speed;
}*/
public function BallEvent(event_str:String, myTargetX:Number, myTargetY:Number, mySpeed:Number) {
super(event_str)
//_targetX = myTargetX;
targetX=myTargetX;
//_targetY = myTargetY;
targetY=myTargetY;
//_speed = mySpeed;
speed=mySpeed;
}
public override function clone():Event{
return new BallEvent(type, targetX, targetY, speed);
}
public override function toString():String{
return formatToString("BallEvent", "type", "bubbles", "cancelable", "eventPhase", "targetX", "targetY", "speed");
}
}