2010-12-08 58 views
1

我对Flash相当陌生。我有一个简单的按钮舞台, Instance Nameinit。我.as脚本(MainTimeline)从阶段外部访问:“不定义的部分代码中的变量*未定义”?

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

我被stage财产,Class,设置为MyFlash_fla.MainTimeline链接到.as。按钮的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

只是FYI:“无法访问的代码”通常意味着永远无法执行的代码,而不是您无法找到源代码的代码。 – 2010-12-08 01:15:50

+0

我知道。我猜想,措辞冲突,但这是首先想到的第一个描述。编辑。 :) – Salt 2010-12-08 01:20:31

回答

0

这意味着你的“init”实例没有实例化,__setProp_init_Scene1_Layer1_0()是幕后代码,不用担心这一点。

您可能不得不宣告初始化变量

 //assuming your button is a MovieClip 
    private var init:MovieClip; 

    function MainTimeline() 
    { 
     init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

或者,而不是将其直接添加到舞台,在属性使用“为ActionScript导出”将其链接到自己的类面板&添加它在代码方面。我通常更喜欢这种方法,因为它可以让您更好地控制显示对象。当然,因为它没有添加到舞台上,所以不需要实例名称!

 private var button:MovieClip = new init(); 

    function MainTimeline() 
    { 
     button.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

在一个侧面说明,“初始化”可能不是一个按钮的最好的名字,因为它是在类的方法名经常使用...

0

对于其他读者,上述错误可能意味着你需要去

  • 文件/发布设置/ AS3.0设置(看起来像在上 右扳手)

和则s等“自动声明阶段实例”复选框进行检查。另外,取消选择“严格模式”,以防万一它被选中并且文件继续产生错误。