Я хотел настроить массив кнопок мувиклипа, чтобы перемещаться по моей временной шкале с помощью меток, вот где он стал грушевидным.
Потратив три дня на чтение и попытку большинства онлайн-решений, я не смог найтиметод, который работал на 100% без сбоев тем или иным образом.
Я испытал некоторую радость от метода, приведенного ниже, когда увидел запись в блоге, посвященную различным способам вызова фреймов и т. д., и выделил указанную ниже ошибку:
clipArray[i].mouseChildren = false; //Hidden bugbear
Я добавил полный код ниже, так что, надеюсь, он может помочь любому, кто так же почти прибег к Хари-Кари, попробовать это.
import flash.events.MouseEvent;
import flash.events.Event;
var clipArray:Array = [btn_1,btn_2]; // Movieclip's called btn_1 etc...
var destArray:Array = ["page_1","page_2"]; Labels on timeline...
for (var i:int = 0; i < clipArray.length; i++) {
clipArray[i].buttonMode = true; // Define Button from Movie Clip
clipArray[i].useHandCursor = true; // Enable HandCursor over clip
clipArray[i].mouseChildren = false; // Define clip as single denomination
clipArray[i].addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
clipArray[i].addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
clipArray[i].addEventListener(Event.ENTER_FRAME, frameHandler);
clipArray[i].addEventListener(MouseEvent.CLICK,clickHandler, false, 0, true);
}
function clickHandler(event:MouseEvent):void {
for (var i:int = 0; i < clipArray.length; i++) {
if (event.currentTarget == clipArray[i]) {
this.gotoAndStop(destArray[i]);
clipArray[i].mouseEnabled = false;
clipArray[i].useHandCursor = false;
clipArray[i].alpha = 0.5;
} else {
clipArray[i].mouseEnabled = true;
clipArray[i].useHandCursor = true;
clipArray[i].alpha = 1;
}
}
}
function mouseOverHandler(e:MouseEvent){
e.target.onOff = true;
}
function mouseOutHandler(e:MouseEvent){
e.target.onOff = false;
}
function frameHandler(e:Event){
if(e.target.onOff){
e.target.nextFrame();
} else {
e.target.prevFrame();
}
}
Это работает отлично, но теперь мойПонимание того, является ли это «хороший» код или нет, является проблемой, если это можно улучшить каким-либо образом, я хотел бы знать, почему и как проблема с изучением AS3 из 2 заключается в том, что вы часто используете код, увидев его в Интернетебез полного понимания деталей.
Ориентировочно, я рад, поскольку это оказалось кошмаром, чтобы найти или решитьи надеюсь, что это поможет кому-то еще в подобном состоянии.
Добавление кнопок MovieClip с плавностью и отменой из массива стало трехдневной миссией, когда вы учитесь ...