0

だから私は今、最終的にムービークリップを取り、それを画像として保存する単純なファイルを持っています. 現在、クリップの y を 45 回転させて 3D の外観にして、ステージに戻しています。グーグルといくつかの異なることを試しましたが、うまく機能しません。最初に試したのは、回転したムービークリップの BitmapData を取得することでした。それはクリップを平らにしました:

test_mc.response_mc.rotationY = 45;
var mc:MovieClip = test_mc.response_mc;
var bmp:BitmapData = new BitmapData(mc.width, mc.height);
bmp.draw(mc);

var output:Bitmap = new Bitmap(bmp);
output.x = 270;
output.y = 191;

addChild(output);

次に試したのは、親クリップの BD を取得することでした。それはそれに角度を与えました...ちょうど間違ったものです:

(same code as above with this line change)
var mc:MovieClip = test_mc;

ここでの考えはいいでしょう。マトリックスを使ってみましたが、うまくいきませんでした。画像もあります...まだ投稿できません:(

私が運がないことを試した他の何か:

var target:DisplayObject = test_mc as DisplayObject;
var targetTransform:Matrix = target.transform.concatenatedMatrix;
var targetGlobalBounds:Rectangle = target.getBounds(target.stage);
var targetGlobalPos:Point = target.localToGlobal(new Point());
var targetOriginOffset:Point = new Point(targetGlobalPos.x - targetGlobalBounds.left, targetGlobalPos.y - targetGlobalBounds.top);

targetTransform.tx = targetOriginOffset.x;
targetTransform.ty = targetOriginOffset.y;

var cloneData:BitmapData = new BitmapData(targetGlobalBounds.width, targetGlobalBounds.height, true, 0x00000000);
cloneData.draw(target, targetTransform);

var output:Bitmap = new Bitmap(cloneData);

**別の更新** うまくいけば、これは少し役に立ちます。Matrix3D を使用して、自分が行っていたことを再現することができました。

test_mc.response_mc.rotationY = 45;

var matrix:Matrix3D = new Matrix3D();
matrix.prependRotation(45, Vector3D.Y_AXIS);
test2_mc.response_mc.transform.matrix3D = matrix;
test2_mc.response_mc.transform.matrix3D.appendTranslation(0, 0, 0);

そして、ビットマップが正しく表示されるようになりました (Mike Chambers ブログのおかげです)。

var mcOffset:Matrix3D = test2_mc.response_mc.transform.matrix3D;
var rawMatrixData:Vector.<Number> = mcOffset.rawData;
var globalBounds:Rectangle = test2_mc.response_mc.getBounds(test2_mc);

var matrix:Matrix = new Matrix();
matrix.a = rawMatrixData[0];
matrix.c = rawMatrixData[1];
matrix.tx = test2_mc.response_mc.x - globalBounds.x;

matrix.b = rawMatrixData[4];
matrix.d = rawMatrixData[5];
matrix.ty = test2_mc.response_mc.y - globalBounds.y;

var bmp:BitmapData = new BitmapData(150, test2_mc.height);
test2_mc.response_mc.transform.matrix3D = null;
bmp.draw(test2_mc.response_mc, matrix);
test2_mc.response_mc.transform.matrix3D = mcOffset;

var output:Bitmap = new Bitmap(bmp);
4

1 に答える 1