我对Flash很新。我有一个简单的按钮; Instance Name
为init
。从舞台外部访问我的.as
脚本(MainTimeline
):
./Project/MyFlash.fla
./Project/MyFlash_fla/MainTimeline.as
我通过将.as
属性stage
设置为Class
来链接到MyFlash_fla.MainTimeline
。按钮的init
标签在属性中设置为“ENTER”。
但是,我遇到此错误:ReferenceError: Error #1065: Variable init is not defined.
at MyFlash_fla::MainTimeline/__setProp_init_Scene1_Layer1_0()
at MyFlash_fla::MainTimeline()
。我从未见过,也找不到,__setProp_init_Scene1_Layer1_0()
..
这是我目前的代码:
function MainTimeline(){
this.init.addEventListener(MouseEvent.MOUSE_UP, begin);
}
function begin(event:Event){
addFrameScript(0, frame1);
}
功能简单;在MOUSE_UP
时,执行begin
。一切似乎工作正常,除了提到的错误似乎导致加载我在属性中设置的预设的一些问题。标签,而不是我设置的ENTER
,更改为Label
,就像我没有设置它一样。我认为它与该错误有关,但我不知道如何访问该区域或如何解决这个问题。似乎目前看似合理的解决方法是在代码中设置标签,我不想这样做,因为我计划包括更多按钮,复选框等等,这将成为一个麻烦。任何人都知道如何解决这个问题?
答案 0 :(得分:0)
这意味着你的“init”实例没有被实例化,__ setProp_init_Scene1_Layer1_0()是幕后代码,不用担心这个。
您可能必须声明init变量
//assuming your button is a MovieClip
private var init:MovieClip;
function MainTimeline()
{
init.addEventListener(MouseEvent.MOUSE_UP, begin);
}
或者,不是直接将它添加到舞台,而是使用属性面板中的“Export for Actionscript”将其链接到自己的类。在代码端添加它。我通常更喜欢这种方法,因为它可以让您更好地控制显示对象。当然,因为它没有添加到舞台上,所以你不需要实例名称!
private var button:MovieClip = new init();
function MainTimeline()
{
button.addEventListener(MouseEvent.MOUSE_UP, begin);
}
在旁注中,“init”可能不是按钮的最佳名称,因为它经常在类中用作方法名称...
答案 1 :(得分:0)
对于其他读者,上述错误可能意味着您需要转到
然后设置“自动声明舞台实例”复选框以进行选中。此外,取消选中“严格模式”,以防它被检查并且文件继续产生错误。