2011-11-28 92 views
0

我有两个文件:Main.swf和DataEnter.swf。每个都有一个文档类。我尝试在Main.swf中加载DataEnter.swf。意外的__Preloader__加载外部SWF与

Main.as

package 
{ 
    import flash.events.*; 
    import flash.display.MovieClip; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.display.Loader; 

    public class Main extends MovieClip 
    {  
     public function Main() 
     { 
      var loader: Loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, DataEnter_loadComplete); 
      loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); 
      loader.load(new URLRequest('DataEnter.swf')); 
     }  

     function DataEnter_loadComplete(evt: Event):void 
     { 
      trace(evt.target.content); // DataEnter__Preloader__      
     var SWF = evt.target.content; 
     SWF.FooBar(); //Error #1069: Property FooBar not found on DataEnter__Preloader__ and there is no default value      
     } 
    } 
} 

DataEnter.as

package 
{ 
    import flash.display.Sprite; 

    public class DataEnter extends Sprite 
    { 
     private var _socketWorker:Foo; 

     public function setSocketWorker(sw:Foo) 
     { 
      _socketWorker = sw; 
     } 

     public function FooBar() 
     { 
      //do something 
     } 
    } 
} 

当发生事件装载机Event.COMPLETE在主类,则evt.target.content包含对象DataEnter_ 预加载器 _。 但它必须是“DataEnter”。

出了什么问题?如何调用加载类的方法FooBar?

回答

1

FlashDevelopIDE打开DataEnter.swf。这表明我的文件有两个帧,但是FlashIDE它只有一个帧。

在DataEnter的DocumentClass中,我包含了一个类“Foo”,它与套接字一起工作。但是,这个类的对象在构造函数中传递。

当我删除类“Foo”并再次发布文件,然后加载SWF文件* DataEnter_Preloader_ *消失了,并且预期数据输入在那里。

对不起,我英文不好

+1

看来,如果*在Flash文档的任何*符号设置为“导出到AS3的” Flash可以选择注入预加载到与文件输出任何SWF的第1帧。 – kpatelPro

1

您是否有机会使用扩展ActionScript设置面板的“运行时共享库​​”部分中的预加载器选项?

0

我也遇到了这个问题。回溯后,事实证明,向数据swf添加嵌入字体导致了它。

我建议从DataEnter.FLA删除任何嵌入字体,并重新发布SWF,要得到这个工作