2

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 にはこの問題はありません

4

1 に答える 1

0

Loader クラスを試してみませんか?それが役立つかどうかはわかりませんが、ActionScript を介してすべての読み込みを行います。一般的に言えば、私は ActionScript で「重い」プログラミング/ロジック/制御を行い、より単純なレイアウト コードのために 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);          
    }

SWFLoader の代わりに Loader を使用できるかどうかはわかりませんが、使用できる場合は、何らかの形であなたや他の誰かに役立つことを願っています...

編集:
調べてみたところ、 mx.controls.SWFLoader と flash.display.Loader は非常によく似た機能を持っています。上記のようにローダーを使用してみて、問題が解決するかどうかを確認します。おそらく MXML 経由でローダーを初期化することもできますが、それはビジュアル コンポーネントではないため、お勧めしません。ActionScript が論理的なものを処理する間、MXML でビジュアル的なものを処理する方がよいと思います。

于 2011-03-15T16:02:53.617 に答える