私はスプライトシートクラスを作成しています。うまくいけば、これは誰かに果物をぶら下げるだろうが、私は困惑している。AS3でビットマップデータを変更する方法
私は、実行時にロードされ、コンストラクタメソッドの ouside Spritesheetクラスの.asファイル内からこのコードを使用して、ステージ上でのセクションを配置したspritesheet(.PNG)があります。
を private function onLoad(e:Event):void
{
var loaderBmp:Bitmap = Bitmap(_loader.content);
_bmpData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,0,80,80),new Point(0,0));
}
これは問題なく動作します。 .pngファイルのスライスがうまく表示されます。私の場合、スプライトシートはキャラクターをアニメーション化するためのものなので、BitmapData
を更新する必要があります。運が足りません。ここで私は、私はキャラクターの状態に応じてアニメーションのフレームを変更するために使用する機能に私のMain
クラス内でこれをしようとしているものです:
c._thisSpriteSheet._loader.content.bitmapData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,20,50,30),new Point(0,0));
loaderBmp
は値だ変数がvar loaderBmp: Bitmap = Bitmap(_spriteSheet._loader.content);
c
は、文字であるRunner
オブジェクトへの参照です。
_spriteSheet
は、タイプSpritesheet
のRunner
クラスのプロパティです。
_loader
は、c._spriteSheet
のプロパティであり、スプライトシートがインスタンス化されたときに使用されるLoader
オブジェクトです。
エラーは発生しませんが、元のbitmapDataオブジェクトが新しいものに置き換えられることはありません。これは、新しいBitmapDataオブジェクトを作成し、copyPixels
メソッドで使用する必要があるかもしれないが、同じ結果(何も返されない)を返したことを意味している可能性があります。デバッグモードでコードをステップ実行すると、すべてが機能しているように見えますが、表示オブジェクトは新しいbitmapDataで更新されません。私は何を踏んでいますか?
ありがとうございます!
何かを頻繁に参照する場合は、プロパティを使用してデータを入力してください。ただし、同じスプライトシートで多くの類似したオブジェクトを使用する場合は、 'copyPixels()'で事前に問題が発生するので、まず 'loaderBmp.bitmapData'をスライスしてセットを保存しなければなりません'BitmapData'オブジェクトの' c._thisSpriteSheet._bmpDSheet'は 'copyPixels()'の代わりにそのセットの別のメンバーを指しています。 – Vesper