0

AIR iOS アプリにパッケージ化された 1 つ以上の外部 SWF ファイルをロードする方法に関する情報をいくつか見つけました。実際の作業コードは次のとおりです。

var myUrlRequest:URLRequest = new URLRequest(mySWF);
var myLoaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
var loader: Loader = new Loader();
loader.load(myUrlRequest, myLoaderContext);
Object(root).MK.addChild(loader)

これは Android デバイスと Windows PC で動作しますが、iOS では外部 SWF を最初にロードするだけです。私のプロジェクトには、外部 SWF をロードするボタンがいくつかありますが、各ボタンは初回のみ機能します。

何か案が?SWF をリロードできないと、とても役に立たないようです。

4

4 に答える 4

0

これを処理する良い方法は、最初に SWF ファイルを個別のムービークリップにロードし、その後いつでもそれらを「ロード」する必要があるときに、SWF ファイルが既にロードされているムービークリップを表示することです。

于 2013-10-23T14:57:51.670 に答える
0

もう一度コードがなくても SWF をロードするのに問題がありました。私が見つけた解決策は、コードがアプリケーション領域からのもの (アプリにパッケージ化されている) か、外部から読み込まれたもの (Web から、またはキャッシュ フォルダーにダウンロードされたもの) によって異なります。興味があれば、ここに詳細な記事を書きました: http://www.eqsim.com/blog/?p=400 簡単に言うと、パスを設定するための私のコードは次のとおりです。

var moduleDirectoryPath = "/modules/";

if (externalContent == FROM_CACHE) {
   moduleDirectoryPath = File.cacheDirectory.url + moduleDirectoryPath;
} else if (externalContent == FROM_WEB) {
   moduleDirectoryPath = "http://our-online-content.com" + moduleDirectoryPath;
}

次に、SWFがアプリ領域またはそれ以外(キャッシュまたはWeb)からのものである場合、パスを準備するための私のコードは次のとおりです。

if (loadFromApp) {
   path = moduleDirectoryPath + module_folder + "/" + module + "?nf="+getTimer();
} else {
   path = moduleDirectoryPath + module_folder + "/" + module;
}

最後に、私の読み込みステートメント:

request = new URLRequest(path);
request.cacheResponse = false;
request.useCache = false;
_lc = new LoaderContext(false, ApplicationDomain.currentDomain, null);
moduleLoader.load(request, _lc);

これで、SWF を読み込んで再読み込みできるようになりました (さらに重要なこと)。もちろん、SWF にはバイトコードが含まれていません。

于 2014-02-26T15:33:24.940 に答える
0

ActionScript ByteCode (ABC) を含む SWF ファイルをロードしてからアンロードし、iOS で再ロードすることはできません。これを行おうとすると、ランタイムはエラー 3764 をスローします。

于 2013-11-26T06:54:35.840 に答える