2011-05-06 63 views
0

我有一个使用SWC视觉符号的动作项目。actionscript项目中的类如何覆盖Flash CS3 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文件的类路径中使用SWC中ActionScript项目。


我使用编译SWC ActionScript项目中,我已经运行了以下方案:

1)我删除CheckoutButton.as从classpath我的ActionScript项目:

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

我得到来自我的Flash CS3文件的视觉符号的一个实例。当我点击它时,alpha就达到50%。这又是如我所料。

2)我跑在classpath这个代码CheckoutButton.as我的ActionScript项目:

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

没有任何反应都没有。这完全如我所料 - 因为我基本上重写了SWC中的类定义,其中没有任何可视功能的SimpleButton


现在我也有我的Flash文件中的时间轴动画CheckoutAnimation这恰好包含CheckoutButton符号的一个实例。

3)我从classpath DELETING 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

这是一个远射,但基于您提供的一小段代码,它是唯一想到的事情。在您的示例中,您已将x添加到显示列表中4次。显示列表上可能有多个此符号的实例堆叠在一起。当你设置其中任何一个或全部的alpha时,你不会注意到一个变化,因为你看到它下面的其他符号。

我明白你的代码在这里可能只是一个例子,但如果你已经将x添加到显示列表中4次,那就是你的问题。我之前完成了这个任务,直到你开始玩alpha或开始移动物体时,它才会被忽视。

+0

感谢横向思维 - 不幸的是它不是这次的罪魁祸首。我试图主要了解行为应该是什么 - 这个例子是对这个问题的简化 – 2011-05-08 09:30:18