在.as文件中控制Flash Professional库组件

时间:2010-10-25 16:19:19

标签: flash actionscript-3

我正在尝试使用.as文件类控制Flash库中组件的行为,但它似乎无法正常工作。

例如,如果我的库中有一个名为exampleBtn的Button并尝试在.as文件中执行此操作:

exampleBtn.visible = false;

......没有任何反应。当我运行它时,该按钮在我的应用程序中仍然可见。

任何人都可以解释使用Flash CS5在.as类文件中访问Flash库组件的工作流程吗?感谢。

1 个答案:

答案 0 :(得分:1)

您需要提供资产实例名称才能控制它们。在舞台上,选择您的exampleBtn实例,并在属性面板中为其命名为“exampleBtn”。但是,为了可重用性,最好为实例提供与其类名不同的名称。

此问题的另一个原因是您的文档类文件未被.fla调用。选择您的舞台并在属性面板中输入文档类名称。

示例:您的文档类文件名为DocumentClass.as,因此您可以在属性面板的类字段中输入“DocumentClass”。如果DocumentClass.as位于名为Classes的文件夹中,该文件夹位于.fla的同一目录中,则属性面板中的类将为“Classes.DocumentClass”,而您的.as包标头将为“package Classes”而不是只是“包”

确保您的文档类文件在调试之前保存在适当的位置。

最后,问题可能只是因为你在调用资产时你的阶段没有初始化。这需要您添加ADDED_TO_STAGE事件侦听器,然后调用您的资源。

package Classes
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent; //import MouseEvent

public class DocumentClass extends Sprite
    {
    public function DocumentClass()
        {
        addEventListener(Event.ADDED_TO_STAGE, init);
        }

    private function init(evt:Event):void
        {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        //exampleButton.visible = false;
        exampleButton.addEventListener(MouseEvent.CLICK, clickEventHandler);
        }

    private function clickEventHandler(evt:MouseEvent):void
        {
        trace(evt.currentTarget.name + " Clicked.  Event Details: " + evt);
        }
    }
}