我正在尝试使用.as文件类控制Flash库中组件的行为,但它似乎无法正常工作。
例如,如果我的库中有一个名为exampleBtn的Button并尝试在.as文件中执行此操作:
exampleBtn.visible = false;
......没有任何反应。当我运行它时,该按钮在我的应用程序中仍然可见。
任何人都可以解释使用Flash CS5在.as类文件中访问Flash库组件的工作流程吗?感谢。
答案 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);
}
}
}