0

Spark 要素があり、この要素の色を変更してから、この要素を .png に描画します。

しかし、これを次々と行うと、色が変わる前の写真になってしまいます。

例:

//color is previously red
rectColor.color=0x000000;
trace("color set");
takeScreenShot();

private function takeScreenShot():void{
    trace("screenshot taken");
    //stuff
}

これは印刷します

color set
screenshot taken

ただし、「スクリーンショット」イメージは、長方形が赤色で表示されます。色は変わっていません。

これは非同期ですか?色は実際には次のフレームまで更新されませんか?

4

3 に答える 3

1

この小さなトリックを利用することもできます。

rectColor.color=0x000000;
setTimeout(takeScreenShot, 0);
于 2013-10-10T10:44:06.693 に答える
0

次のフレームが構築されるまで、更新は行われません。あるフレームのスクリーンショットを撮っていますが、行った変更は次のフレームまで有効になりません。

rectColor.color=0x000000;
trace("color set");
this.addEventListener( Event.FRAME_CONSTRUCTED, frameConstructedHandler );

private function frameConstructedHandler( e:Event ):void {
    this.removeEventListener( Event.FRAME_CONSTRUCTED, frameConstructedHandler );
    takeScreenShot();
}

private function takeScreenShot():void{
    trace("screenshot taken");
    //stuff
}

これにより、次のフレームの構築が完了するまでスクリーンショットが遅れます。それは早すぎるかもしれませんし、そうでないかもしれません (GUI イベントの順序を思い出せず、調べる時間もありません)。それがうまくいかない場合。と交換FRAME_CONSTRUCTEDするENTER_FRAMEと動作するはずです。どのイベントを使用する必要があるかに関係なく、それが問題です

于 2013-10-09T23:54:02.070 に答える