在Flex 3中,我有一个SWFLoader:
<mx:SWFLoader id="player" source="http://youtube.com/v/..." />
一段时间后我调用了player.unloadAndStop()
。我总是得到这个错误:
ReferenceError: Error #1056: Cannot create property __tweenLite_mc on _swftest_mx_managers_SystemManager.
这是什么意思以及如何避免这种情况?
UPD: AIR 2没有此问题
答案 0 :(得分:0)
也许尝试Loader类?我不确定它是否有用,但我通过ActionScript完成所有加载。一般来说,我在ActionScript中执行“heavyWeight”编程/逻辑/ cotrol的东西,并留下Flex以获得更简单的布局代码。也就是说,flex将事情放在适当的位置,actionscript控制它。在我们的Flex 3项目中加载剪辑时,我的控制代码如下:
import flash.display.Loader;
private var loader:Loader;
public function init() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadFailed);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleted);
}
调用以下内容:
//here, pop returns a string like "/path/to/movie.swf"
loader.load(new URLRequest(clipsToPlay.pop()));
...
loader.unload();
包含在以下函数中:
private function loadNextClip():void {
if(clipsToPlay.length == 0) {
dispatchEvent(new PlayBackCompleteEvent(PlaybackCompleteEvent.ALL));
return;
}
loader.load(new URLRequest(clipsToPlay.pop()));
}
private function loadCompleted(event:Event):void {
currentClip = event.target.content as MovieClip;
loader.unload();
displayClip();
}
private function displayClip():void {
applyEffects();
currentClip.addEventListener(Event.ENTER_FRAME, monitorForCompletion);
addChild(currentClip);
}
我不确定是否可以使用Loader代替SWFLoader,但如果是这样,我希望以某种方式帮助你或其他人...
编辑:
我只是查了一下,mx.controls.SWFLoader和flash.display.Loader具有非常相似的功能。我尝试使用Loader,如上所述,看看它是否解决了问题。您也可以通过MXML初始化加载器,但我不推荐它,因为它不是可视组件,我认为最好让MXML处理可视事情,而ActionScript处理逻辑< / em>事情。