actionscript项目中的类如何覆盖Flash CS3 SWC文件中的类?

时间:2011-05-06 01:58:36

标签: actionscript-3 actionscript swc

我有一个动作脚本项目,它使用来自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)中相同的结果,我绝对不明白为什么没有代码执行。这里有什么冲突?

1 个答案:

答案 0 :(得分:0)

这是一个很长的镜头,但基于你提供的一小部分代码,它是唯一想到的东西。在您的示例中,您已将x添加到显示列表中4次。可能在显示列表上有多个此符号的实例堆叠在一起。当您设置其中任何一个或全部的alpha时,您不会注意到更改,因为您会在其下方看到其他符号。

我知道你的代码可能只是一个例子,但是如果你已经将x添加到显示列表4次那么那就是你的问题。我以前做过这个,直到你开始玩alpha或开始移动物体,它才会被忽视。