1

DisplayObject の回転用にスプライト シートを作成しようとしていますが、gotoAndStop() 呼び出しが機能していないようです。

何が起こっているかの例を次に示します。

function createRotationalSpriteSheet ( displayObject : DisplayObject )
{
    findMaxTileDimensions( displayObject );
    MovieClip( displayObject ).gotoAndStop( 1 ); // this call does not work.
}

function findMaxTileDimensions ( displayObject : DisplayObject )
{
    MovieClip( displayObject ).gotoAndStop( 1 ); // this call works fine
}

機能しない gotoAndStop 呼び出しの場合、ラベルとフレーム番号は更新されますが、BitmapData.draw で DisplayObject を描画しようとすると、findMaxTileDimensions 関数で移動するように指示された最後のフレームにフレームがスタックしたままになります。

これは、gotoAndStop 関数を 1 つの入力フレームで何度も呼び出しているために発生していますか? 同じ入力フレームで 2 つの異なる関数から gotoAndStop を呼び出しているために発生していますか?

4

4 に答える 4

2

ここでいくつかのことが起こっているようです。gotoAndStop() を使用していますが、他のすべてが発生するまで画像は更新されませ。ドキュメントから - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html#gotoAndStop () - "再生ヘッドをムービー クリップの指定されたフレームに移動して停止しますこれは、フレーム内の残りのすべてのアクションの実行が終了した後に発生します。」したがって、これを機能させたい場合は、複数のフレームで行う必要があります。

第二に、これは DisplayObjects の回転を整理して BitmapData として描画することだとおっしゃいましたが、MovieClip にアニメーションはありますか? または、ムービークリップが回転するアニメーションです。後者の場合、コードを使用して回転を設定し、さまざまな角度を描画すると、意図したとおりに機能します (つまり、すべて 1 つのフレームで)。

また、bit101 による SWFSheet もチェックしてください: http://www.bit-101.com/blog/?s=swfsheet。アニメーションを取得し、PNG スプライトをエクスポートするように作られています。そこにコードがあるかもしれませんが、わかりません。いずれにせよ、アニメーションを保存してから、埋め込み/ロードできます

于 2011-03-17T12:27:09.120 に答える
1

これは、AIRの既知のバグのようです(AIRでのみ発生すると想定): https ://bugbase.adobe.com/index.cfm?event = bug&id = 3340012

バグレポートには、ハックの回避策が記載されていますが、これが機能することを確認しました。MovieClipを実行する前に、ステージに追加してください。完了したら削除できます。

または、MovieClipを2回インスタンス化するか(1回はディメンションを取得し、次に1回はBitmapDatasを作成します)、MovieClipの先頭に空のダミーフレームを追加して、その最初のフレームを無視します。

于 2012-12-15T01:14:32.537 に答える
-1

ここでは2つのことが起こっています。主な問題は、gotoAndStopが0ベースではなく1ベースであるということです。gotoAndStop(0)は、オブジェクトを予期しているため、エラーを生成しません(したがって、ラベルまたはフレーム番号を取得できます)。

gotoAndStopは、従来の理由で1ベースです。つまり、フラッシュIDEでの古い方法に関連付けられています。

これを1ベースのシステムに変更しても機能しない場合は、addframescript(0ベース)を追加する必要があります。ここで私の答えを参照してください。

AS3-即時アクションのgotoAndStop

于 2011-03-17T02:43:52.363 に答える
-1

より良い使用例として、ビットマップを使用し、それを何らかのデータ構造にキャッシュする方が良いと思います: これを読んでください: http://www.8bitrocket.com/2010/3/3/Tutorial-AS3-How-to -Blit-an-animation-from-a-tile-sheet-embedded-at-compile-time/
また、質問について 100% 明確ではないかもしれませんが、スプライト シートを作成するために enterframe を使用する必要があるのはなぜですか?


ビットマップを回転させてからbitmapDataとしてキャプチャするか、ビットマップデータhttp://www.8bitrocket.com/2010/05/01/tutorial-exploring-the-as3-bitmap-class でマトリックス変換を使用するだけです -lesson-3-scale-from-the-center-with-a-matrix/

于 2011-03-17T05:15:02.603 に答える