0

我有一个动作脚本项目,它使用来自 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,并且运行了以下场景:

CheckoutButton.as1)我从我的actionscript项目的类路径中删除:

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

我从我的 Flash CS3 文件中获得了一个视觉符号的实例。当我点击它时,它的 alpha 变为 50%。这又完全符合我的预期。

CheckoutButton.as2) 我在我的 actionscript 项目的类路径中运行此代码:

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

什么都没有发生。这正是我所期望的——因为我基本上用一个SimpleButton没有任何视觉功能的 SWC 覆盖了类定义。


现在,我的 Flash 文件中还有一个时间线动画CheckoutAnimation,它恰好包含该元件的一个实例CheckoutButton

3)我从类路径中删除后运行actionscript项目CheckoutButton.as

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

动画中的符号获取类定义(最初编译到 SWC 中),当我单击它时,符号的 alpha 变为 50%。这完全符合预期。

CheckoutButton.as4)我仍然在类路径中运行actionscript项目:

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

结帐符号出现在动画中,但单击它没有任何反应!

为什么是这样!我不明白!我不明白为什么我没有得到与上面(2)相同的结果,我绝对不明白为什么没有代码正在执行。这里有什么冲突?

4

1 回答 1

0

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

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

于 2011-05-07T06:21:10.043 回答