Новый ответ:
В этом случае вы можете поместить каждый куб, который вы хотите повернуть, в массив и вызвать ENTER_FRAME для клипа контейнера (не для каждого куба).
Loopingчерез ваш массив (в контейнере) будет быстрее, чем отправлять тонны событий ENTER_FRAME (я думаю).
(запросите примеры, если вам нужно; D)
Пример
Предполагая, что renderView
является методом MenuCube, я предлагаю вам поместить весь код, необходимый для вращения, в renderView
(информация, такая как i++
, curTheta
и curPhi
).
// The container where every cube will reside
public var CubeContainer:Sprite;
// Creating Cubes, setting a listener to rotate them on MOUSE_OVER
// and adding them to the container.
public function CreateCubes()
{
CubeContainer = new Sprite();
for (var i:int = 0; i < 10; i++)
{
var NewCube = new CubeMenu(/*...*/);
NewCube.addEventListener(MouseEvent.MOUSE_OVER, RotateMe);
CubeContainer.addChild(NewCube);
}
CubeContainer.addEventListener(Event.ENTER_FRAME, RotateCubes);
}
// When MOUSE_OVER fires, start rotating (by pushing it into an Array)
// and remove MOUSE_OVER listener
public function RotateMe(e:MouseEvent):void
{
var TargetCube:CubeMenu = e.currentTarget;
CubesToRotate.push(TargetCube);
TargetCube.removeEventListener(MouseEvent.MOUSE_OVER, RotateMe);
}
// ENTER_FRAME of the container...
// This will check every container that need to be rotated
// and call renderView for it.
public function RotateCubes(e:Event):void
{
for(var i:int = 0; i <= CubesToRotate.length; i++)
{
var CurrentCube:CubeMenu = CubesToRotate[i];
CurrentCube.renderView();
}
}
Старый ответ:
Если я правильно понял, вы можете использовать события MOUSE_OVER и MOUSE_OUT:
private var i:int = 0;
private function setUpListeners():void
{
spBoard.addEventListener(MouseEvent.MOUSE_OVER, boardOver);
spBoard.addEventListener(MouseEvent.MOUSE_OUT, boardOut);
}
private function boardOver(e:MouseEvent):void
{
addEventListener(Event.ENTER_FRAME, rotateSquare);
}
private function boardOut(e:MouseEvent):void
{
removeEventListener(Event.ENTER_FRAME, rotateSquare);
}
private function rotateSquare(e:Event)
{
renderView(curTheta+i, curPhi+i);
i++;
}
Таким образом, ваши события мыши будут отправляться только при наведении курсора мыши на spBoard
.
ps. Как видите, переменная i
должна быть определена вне функций, чтобы это работало.