2011-05-13 67 views
3

在我的名为引擎文档类,舞台变量是出于某种原因空:文档类中的stage为空? ActionScript 3.0中的Flash CS5

package game 
{ 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.events.Event; 
    public class Engine extends MovieClip 
    { 
     public function Engine() 
     { 
      trace(stage); // gives Null 
     } 
    } 
} 

这是工作的罚款,直至现在。我最近在符号中添加了两个动态文本字段,并且突然之间阶段为空。我真的没有看到连接。

这是我第一次使用actionscript和flash,所以我对一切都有点困惑。

+0

没有理由这一阶段将永远产生空文档类。还有其他事情正在发生。或者你试图在其他地方初始化文档类。你有关于符号和两个动态文本字段的更多信息吗? – Marty 2011-05-13 06:49:23

回答

6

好吧,我已经复制了你所经历的,在CS5中为舞台添加一个TLF字体,必须是造成它的原因。但是这个代码应该可以解决你的问题:

public function Engine():void 
{ 
    if(!this.stage) 
     this.addEventListener(Event.ADDED_TO_STAGE, init); 
    else 
     init(); 
} 

private function init(e:Event = null):void 
{ 
    this.removeEventListener(Event.ADDED_TO_STAGE, init); 
    trace(stage); 
} 

我的猜测是在这种情况下创建阶段有一些延迟。我遇到过这种情况,不知道为什么,所以这是我处理它的方式。有用! :)

0

我刚刚遇到了这个项目,我一直在努力了一段时间。 突然间,我的文档类中的构造函数突然发现它为舞台。

在我的情况下(经过几个小时的侦查),我猜想一个资产已经被加入FLA中,其中有一个一个 TLF TextField。我猜对了,因为我看到了习惯性的错误曾一度,但再也没有。

通常情况下,这会导致一个可以快速识别并易于修复的错误。 还没有。我发现我的文档类被添加到舞台上,然后立即从舞台上移除 - 至少Event.REMOVED_FROM_STAGE事件正在触发。

的FLA具有很多在IT资产的并试图追查一个流浪TLF文本字段(可能是空的)是相当艰巨的,所以我救了FLA作为AS2项目,然后将其保存回一个AS3项目。我所有的联系都很好,TLF TextField(无论它在哪里)都被转换成了ClassicField。一切都很好。

这里是一个后谈论了更直接的问题相同的修订: How to stop/convert TLF textfield used in flash files when you have list to search?