Как классы в проекте ActionScript переопределяют классы в SWC-файле Flash CS3? - PullRequest
0 голосов
/ 06 мая 2011

У меня есть проект Actionscript, который использует визуальные символы из SWC.

У меня есть CheckoutButton, с которым связан следующий класс (скомпилированный в SWC во Flash CS3).

public class CheckoutButton extends SimpleButton {

    public function CheckoutButton () {     
        this.addEventListener(MouseEvent.CLICK, checkoutClicked);
    }

    // click on the button and the alpha will go to 50%
    public function checkoutClicked(e:MouseEvent):void {
        this.alpha = .5;  // take user to checkout
    }

    public function dispose ():void {

    }
}

Важное замечание: Файл CheckoutButton.as находится в пути к классам для проекта ActionScript, использующего SWC.


Я использую скомпилированный SWC в проекте ActionScript и запустил следующие сценарии:

1) УДАЛЯЮ CheckoutButton.as из пути к классам для моего проекта actioncript:

var x:CheckoutButton = new CheckoutButton();
addChild(x);

Я получаю экземпляр визуального символа из моего файла Flash CS3. Когда я нажимаю на него, его альфа достигает 50%. Это снова именно так, как я ожидал.

2) Я запускаю этот код с CheckoutButton.as в пути к классам для моего проекта actionscript:

var x:CheckoutButton = new CheckoutButton();
addChild(x);

Ничего не происходит вообще. Это именно то, что я ожидаю - потому что я в основном переопределил определение класса из SWC с SimpleButton, который не имеет никакой визуальной функциональности.


Теперь у меня также есть анимация временной шкалы CheckoutAnimation в моем файле Flash, которая, как оказалось, содержит экземпляр символа CheckoutButton.

3) Я запускаю проект actionscript после УДАЛЕНИЯ CheckoutButton.as из пути к классам:

var x:CheckoutAnimation  = new CheckoutAnimation();
addChild(x);

Символ в анимации собирает определение класса (как изначально скомпилировано в SWC), и когда я нажимаю на него, альфа символа становится равным 50%. Это именно так, как и ожидалось.

4) Я запускаю проект actionscript с CheckoutButton.as, все еще находящимся в пути к классам:

var x:CheckoutAnimation  = new CheckoutAnimation();
addChild(x);

Символ извлечения появляется в анимации, но нажатие на него ничего не делает !!

ПОЧЕМУ ЭТО! Я НЕ ПОНИМАЮ! Я не понимаю, почему я не получаю такой же результат, как в (2) выше, и я точно не понимаю, почему не выполняется ни один код. В чем здесь конфликт?

1 Ответ

0 голосов
/ 07 мая 2011

Это длинный путь, но, исходя из небольшого количества предоставленного вами кода, это единственное, что приходит на ум.В вашем примере вы добавили x в список отображения 4 раза.Возможно, что в списке отображения есть несколько экземпляров этого символа, расположенных друг над другом.Когда вы устанавливаете альфа любого или всех из них, вы не замечаете изменений, потому что видите другие символы под ним.

Я понимаю, что ваш код здесь может быть просто примером, но если у вас естьдобавили x в список отображения 4 раза, тогда это ваша проблема.Я делал это раньше, и это может остаться незамеченным, пока вы не начнете играть с альфами или начнете перемещать объекты вокруг.

...