2

as3 と adobe air を使用して、外部 SWF ファイルを読み込み、アプリケーション内で再生するアプリケーションを作成しています。コンテナは Android で問題なく動作し、外部の swf ファイルのアニメーションは非常にクールです。

ただし、iOS (iPad 2) では、1 秒間に 1 フレームしか再生されないかのように非常に遅くなります。

とにかく、それをより速く再生するためにまったくありますか。

私のアプリケーション構成は次のとおりです。

<initialWindow>
    <autoOrients>false</autoOrients>
    <aspectRatio>landscape</aspectRatio>
    <renderMode>gpu</renderMode>
    <fullScreen>false</fullScreen>
    <visible>true</visible>
    <softKeyboardBehavior>none</softKeyboardBehavior>
</initialWindow>

これは、外部 SWF をロードするコードの一部です。

    public function set url(value:String):void
    {
        _url = value;
        object.source = File.applicationDirectory.resolvePath(value).url;
        object.addEventListener(Event.COMPLETE , onLoaded);
    }

    protected function onLoaded(event:Event):void
    {
        object.addEventListener(Event.ENTER_FRAME, onEnterFrame);

    }
    protected function onEnterFrame(event:Event):void
    {
        if((object.content as Object).currentFrameLabel == "stop")
            (object.content as Object).stop();
    }   

Enter frame イベント リスナーにもコメントしようとしましたが、何も変わりませんでした。

前もって感謝します。

編集:実際には非常に奇妙なことを見つけました。Fast 構成のアプリケーションからアプリケーションを実行すると、高速に実行されます。しかし、実行中に公開したり、標準オプションを使用したりすると、実行が非常に遅くなります。AIR 3.2 でテスト済み

4

2 に答える 2

0

いくつかのこと:

コードを含む SWF を AIR for iOS にロードすることはできません。これは Apple によって禁止されています。

iOS 用にコンパイルするときは、swf をグラフィックス/リソースのライブラリとしてのみ使用する必要があります。内部のムービークリップに stop(); がある場合。これは、SWF に ActionScript が含まれていることを意味します。

そのような機能が必要な場合は、メイン アプリにコンパイルする定義済みのビヘイビアのリストを作成し、SWF ライブラリからインスタンス化するアセットのタイプまたは名前に基づいてこれらのビヘイビアを実行し、実行時にアタッチすることをお勧めします。

さらに、更新を許可するためにこれを行っている場合、またはリリース後にアプリを変更する機能を使用している場合は、それをリリース ビルドにコンパイルし、次回アプリの更新が必要になったときに再公開することもできます。これにより、アプリ ストアでのランキングがある程度向上し、多くのバージョン管理の問題が解消されます。

于 2012-09-20T12:37:04.617 に答える
0

レンダリングモードをダイレクトに設定してみてください:

<renderMode>direct</renderMode>

GPU のみにレンダリングしている場合、アニメーションをレンダリングすると速度が低下することに注意してください。GPU へのレンダリングは高速ですが、GPU へのビデオ メモリの割り当ては低速です。GPU に排他的にレンダリングする場合、すべてのフレームで、ビデオ メモリを更新する必要があります。

もう 1 つのことは、すべてのベクトルがラスタライズされるため、一部のものはピクセル化されてレンダリングされることです。

于 2012-09-19T20:18:01.073 に答える