我有一个动作脚本项目,它使用来自SWC的视觉符号。
我有一个CheckoutButton
,它有以下与之关联的类(编译到Flash CS3中的SWC中)。
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
文件位于使用SWC的actionscript项目的类路径中。
我在actionscript项目中使用已编译的SWC,并且我运行了以下场景:
1)我从我的actionscript项目的类路径中删除CheckoutButton.as
:
var x:CheckoutButton = new CheckoutButton();
addChild(x);
我从Flash CS3文件中获取了一个可视化符号的实例。当我点击它时它的alpha值达到了50%。这再次与我的预期完全一样。
2)我在我的actionscript项目的类路径中使用CheckoutButton.as
运行此代码:
var x:CheckoutButton = new CheckoutButton();
addChild(x);
根本没有任何事情发生。这正是我所期望的 - 因为我基本上用SWC覆盖了类定义,SimpleButton
没有任何视觉功能。
现在我的Flash文件中还有一个时间轴动画CheckoutAnimation
,恰好包含CheckoutButton
符号的实例。
3)我在类路径删除CheckoutButton.as
后运行actionscript项目:
var x:CheckoutAnimation = new CheckoutAnimation();
addChild(x);
动画中的符号选取类定义(最初编译到SWC中),当我点击它时,符号的alpha变为50%。这完全符合预期。
4)我仍然在类路径中运行带有CheckoutButton.as
的actionscript项目:
var x:CheckoutAnimation = new CheckoutAnimation();
addChild(x);
结帐符号出现在动画中,但点击它就什么都不做!!
为什么这样!我不明白!我不明白为什么我没有得到与上面(2)中相同的结果,我绝对不明白为什么没有代码执行。这里有什么冲突?
答案 0 :(得分:0)
这是一个很长的镜头,但基于你提供的一小部分代码,它是唯一想到的东西。在您的示例中,您已将x添加到显示列表中4次。可能在显示列表上有多个此符号的实例堆叠在一起。当您设置其中任何一个或全部的alpha时,您不会注意到更改,因为您会在其下方看到其他符号。
我知道你的代码可能只是一个例子,但是如果你已经将x添加到显示列表4次那么那就是你的问题。我以前做过这个,直到你开始玩alpha或开始移动物体,它才会被忽视。