文档类
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author zkl
*/
public class Rotate extends Sprite {
private var balls:Array;
private var numBalls:Number = 10;
private var radius:Number = 100;
private var colors:Array=[0xFF0000,0x00FF00,0x0000FF,0x33CC00,0x9900FF,0xCC6600]
public function Rotate(){
init();
}
private function init():void {
//弧度(360 / numBalls * Math.PI / 180)
var an:Number = 2 / numBalls * Math.PI;
balls = new Array;
for (var i:int = 0; i < numBalls; i++){
var ball:Ball = new Ball(20,colors[int(Math.random()*numBalls)]);
balls.push(ball);
addChild(ball);
//以中心为圆心,排列
ball.x = Math.cos(an * i) * radius + stage.stageWidth / 2;
ball.y = Math.sin(an * i) * radius + stage.stageHeight / 2;
ball.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
}
addEventListener(Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event):void {
var angle:Number = (mouseX - stage.stageWidth / 2) * .001;
var cos:Number = Math.cos(angle);
var sin:Number = Math.sin(angle);
for (var i:int = 0; i < numBalls; i++){
var ball:Ball = balls[i];
var x1:Number = ball.x - stage.stageWidth / 2;
var y1:Number = ball.y - stage.stageHeight / 2;
var x2:Number = cos * x1 - sin * y1;
var y2:Number = cos * y1 + sin * x1;
ball.x = stage.stageWidth / 2 + x2;
ball.y = stage.stageHeight / 2 + y2;
}
}
private function mouseHandler(e:MouseEvent):void {
switch (e.type){
case MouseEvent.MOUSE_OVER:
removeEventListener(Event.ENTER_FRAME, enterFrame);
e.target.addEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
break;
case MouseEvent.MOUSE_OUT:
addEventListener(Event.ENTER_FRAME, enterFrame);
e.target.removeEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
break;
}
}
}
}