私は45度回転したプリミティブ矩形であるスプライトを持っています。私はそれを正確にコピーするBitmapData
を使用してBitmap
を作成したいと思います。私はBitmapData#draw
は私のスプライト上で動作することを考えたので、私は単純なアプローチを試してみました:埋め込みなしでビットマップデータにスプライトを描画
var a = new Sprite();
a.graphics.beginFill(0xFF0000);
a.graphics.drawRect(0, 0, 200, 100);
a.graphics.endFill();
a.x = 100;
a.y = 100;
a.rotation = 45;
addChild(a);
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
bitmapData.draw(a);
var bitmap = new openfl.display.Bitmap(bitmapData);
bitmap.x = 500;
bitmap.y = 100;
addChild(bitmap);
結果は私を驚かしかし:
そうでなければ、実際には理にかなっている(それは変換行列を維持すると思われます回転が失われる)。だから私は、より堅牢なアプローチを試してみました:
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
var rect = a.getBounds(a.parent);
var matrix = a.transform.concatenatedMatrix;
matrix.translate(-rect.left, -rect.top);
bitmapData.draw(a, matrix);
所望の結果が
そして、提供された画像のように、まだ、同じ結果です。 私は私は約clipRect
paramを試しましたが、矩形がどれほど大きくても、オブジェクトはまったくコピーされません(黒いスペースだけが残っています)。x
とy
、クリップが問題
var bitmapData = new openfl.display.BitmapData(1500, 1500, false, 0x00000000);
var clip = new openfl.geom.Rectangle(1500, 1500);
bitmapData.draw(a, clip);
ではありません、私はBitmapData#draw
を悪用アム忘れましたか?すべてのヘルプは
OpenFL 4.0.0
CPP、猫とHTML5
感謝(私はBitmapData#hitTest
を使用してピクセルの完璧な衝突テストでそれを使用するために持っているとしてそれは、のBitmapDataでなければなりません)君は。 Flashで
私はあなたの望む結果が何であるかわからないので、あなたの質問が正確であるか分かりません。 – null
画像に希望の結果が追加されました。しかし、コードは正しいと思うが、[OpenFL 4にバグがあるかもしれない](https://github.com/openfl/openfl/issues/1214) – Misiur