2

一日中壁に頭をぶつけていたので、誰かがこれに光を当てることができるかどうか見てみようと思いました -

リモート SWF をインポートする iOS Air アプリがあります。インポートすると、インポートされた swf 内のボタンにイベント リスナーが追加されます。ボタンをクリックすると、アプリがハングします。ここにいくつかのコードがあります -

private function loadRemoteSWF():void{
    var urlRequest:URLRequest = new URLRequest("http://www.domain.com/remote.swf");

    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
    loader.load(urlRequest);
}

private function onLoaded(e:Event):void{
     var loaderInfo:LoaderInfo = e.currentTarget as LoaderInfo;
     var adPanel:MovieClip = loaderInfo.content as MovieClip;

     adPanel.continueButton.addEventListener(TouchEvent.TOUCH_BEGIN, onContinueClicked);

     addChild(adPanel)
}

private function onContinueClicked(e:TouchEvent):void{
    trace("onContinueClicked");

}

Flash Builder 4.7 AIR SDK 3.5 ASC 2.0 を使用しています。

これはリリース ビルドでのみ発生します。デバッグ ビルドは正常に動作するため、原因を見つけることはほぼ不可能です。同じ SDK バージョンでレガシー コンパイラを使用する場合にも問題なく動作します。

プログラムでボタンにタッチ イベントをディスパッチしても問題なく動作します。(エラーを見つけるためにtry/catchを実行できると思いました)

adPanel.continueButton.dispatchEvent(new TouchEvent(TouchEvent.TOUCH_BEGIN));

ボタンをタッチするとアプリが強制終了されるだけで、トレースにはヒットしません。

これをデバッグする方法、またはなぜこの問題が発生するのか、誰にもアイデアがありましたか?

ありがとうデイブ

4

1 に答える 1

0

テストを行うことはできますか: ネイティブ ローダーを使用する代わりに、greensocks api - SWFLoader などの API を使用してみてください。

また、swf ファイルをロードする前に、セキュリティ クラスを使用して承認済みドメインを設定してみてください。

import flash.system.Security;

public class Main extends MovieClip{

    public function Main(){
       Security.allowDomain("*");
    }
}

Builder のインストールに問題がないことを確認するためだけに、別のマシンで同じセットアップでコンパイルすることをお勧めします。

また、別のデバイスで試してみましたか (使用しているデバイスの問題である可能性があります)?

于 2013-03-27T16:59:13.517 に答える