Цитата:
Сообщение от Tails
Поставьте gotoAndPlay вместо play.
|
С gotoAndPlay срабатывает на данном этапе, но задача чуть сложнее.
Внутри объекта Pointer содержится четыре анимации перемещения между тремя точками.
После нескольких движений происходит сбой. Причем текущая позиция (pointer.pos) выводится корректно на любом шаге, но с анимацией творится чехарда.

Код AS3:
package src {
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
public class Main extends MovieClip {
private var pointer:Pointer = new Pointer();
private var startRoom:StartRoom = new StartRoom();
private var leftRoom:LeftRoom = new LeftRoom();
private var rightRoom:RightRoom = new RightRoom();
public function Main() {
pointer.pos = "startRoom";
pointer.x = 250; pointer.y = 200;
startRoom.x = 250; startRoom.y = 250;
leftRoom.x = 50; leftRoom.y = 250;
rightRoom.x = 450; rightRoom.y = 250;
addChild(startRoom);
addChild(leftRoom);
addChild(rightRoom);
addChild(pointer);
startRoom.addEventListener(MouseEvent.CLICK, startRoomClick);
leftRoom.addEventListener(MouseEvent.CLICK, leftRoomClick);
rightRoom.addEventListener(MouseEvent.CLICK, rightRoomClick);
} // Конец конструктора
public function startRoomClick(event:MouseEvent):void {
if (pointer.pos == "leftRoom") {
pointer.gotoAndPlay("leftToStart");
pointer.pos = "startRoom";
trace("Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "rightRoom") {
pointer.gotoAndPlay("rightToStart");
pointer.pos = "startRoom";
trace("Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "startRoom") {
trace("Клик по себе. Текущая позиция: " + pointer.pos);
};
}
public function leftRoomClick(event:MouseEvent):void {
if (pointer.pos == "startRoom") {
pointer.gotoAndPlay("startToLeft");
pointer.pos = "leftRoom";
trace("Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "rightRoom") {
trace("Не доступно. Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "leftRoom") {
trace("Клик по себе. Текущая позиция: " + pointer.pos);
};
}
public function rightRoomClick(event:MouseEvent):void {
if (pointer.pos == "startRoom") {
pointer.gotoAndPlay("startToRight");
pointer.pos = "rightRoom";
trace("Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "leftRoom") {
trace("Не доступно. Текущая позиция: " + pointer.pos);
} else if (pointer.pos == "rightRoom") {
trace("Клик по себе. Текущая позиция: " + pointer.pos);
};
}
} // Конец класса
}