5

大きな (4096x4096) 画像をメモリにロードしましたが、addChild を使用しようとすると、実際に画面に描画されるまでに長い遅延が発生します。これは予期されることです。ただし、DisplayObject (.png 画像) が実際に画面に描画された瞬間を知るためにリッスンできるイベントはありますか?

画像を画面にロードして、実際に描画した後に何かをしようとしています。

4

2 に答える 2

4

遅延は、Flash Player がレンダリングの準備でイメージを解凍するためです。

秘訣は、必要になる前に Flash Player を強制的に解凍することです。その後、ステージ上に「即座に」表示されます。

私はアイデアを信用することはできません-しかし、私は賞金を受け取ります;)。これが私を啓発し、それを完全に説明した記事です:http: //jacksondunstan.com/articles/2080

于 2013-01-11T19:17:10.073 に答える
0

Loader クラスを使用している場合は、コンテンツがまだロードされていないためです。

コードのどこかに、おそらく次のようなものがあります。

var loader : Loader = new Loader();
loader.load( new URLRequest( "theURL" ) );
stage.addChild( loader );

現在、これはすべて数ミリ秒で行われます。ただし、ロードしているコンテンツは実際にはまだロードされていません。ローダーはステージ上にありますが、コンテンツは読み込みが完了するまでローダーに配置されません。

これがあなたがする必要があることです。

var loader : Loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onImageLoaded, false, 0, true );
loader.load( new URLRequest( "theURL" ) );
stage.addChild( loader );

次に、この関数を同じスコープに配置します。

function onImageLoaded( evt : Event ) : void
{
    loader.contentLoaderInfo.removeEventListener( Event.COMPLETE, onImageLoaded );
}

その関数では、画像とそのすべてのプロパティにアクセスできます。実際にはまだ画面に描画されていない可能性がありますが、おそらく数ミリ秒以内に次のフレームで描画されますが、コードに関する限り、ステージ上にあります。

それが役立つことを願っています!

于 2013-01-08T23:32:35.423 に答える