#actionscript-3 #actionscript #swc
#actionscript-3 #actionscript #swc
Вопрос:
У меня есть проект 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
из пути к классам для моего проекта actionscript:
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:
Это рискованный шаг, но, основываясь на небольшом фрагменте кода, который вы предоставили, это единственное, что приходит на ум. В вашем примере вы добавили x в список отображения 4 раза. Возможно, что в списке отображения имеется несколько экземпляров этого символа, наложенных друг на друга. Когда вы устанавливаете альфа-значение для любого из них или для всех, вы не замечаете изменений, потому что видите другие символы под ним.
Я понимаю, что ваш приведенный здесь код может быть просто примером, но если вы добавили x в список отображения 4 раза, то это ваша проблема. Я делал это раньше, и это может остаться незамеченным, пока вы не начнете играть с альфа-символами или перемещать объекты.
Комментарии:
1. спасибо за нестандартное мышление — к сожалению, на этот раз виноват не он. я пытаюсь в основном понять, каким должно быть поведение — пример был упрощением для этого вопроса