0

私はアクションスクリプトに非常に関連していますが、ムービークリップに問題があります.

私は 4 つの座標を持っており、ムービー クリップをそれらに合わせる必要があるため、ムービー クリップの各コーナーは 1 つの座標にあります。

マトリックスと角度で変換することを見つけることができた唯一のもの(例を参照)ですが、これらはすべての角度などを計算するという私の問題の最良の解決策ではありません.

var degX:Number = 0;
var degY:Number = 0.3;

//Get the transform matrix for the object to skew
var m:Matrix = bild.transform.matrix;
m.b = Math.tan(degY *(Math.PI/180));
m.c = Math.tan(degX *(Math.PI/180));

//Apply the matrix to the transform object
var t:Transform = new Transform(bild);
t.matrix = m;

//Apply the skew
bild.transform = t;

あなたが私の問題を理解し、解決策を知っていることを願っています。

必要なことを正確に行うように見えるので、画像を歪ませてみましたが、取得できないので、画像を表示します。座標は機能します。コメントされた部分のコメントを外すと、本来あるべき場所に白い再角が正確に表示されますが、更新時に削除されません。助けていただければ幸いです。ここに私のコードがあります:

var PointUR:Point = new Point();
PointUR.x = values1[0];
PointUR.y = values1[1];

var PointUL:Point = new Point();
PointUL.x = values2[0];
PointUL.y = values2[1];

var PointBR:Point = new Point();
PointBR.x = values3[0];
PointBR.y = values3[1];

var PointBL:Point = new Point();
PointBL.x = values4[0];
PointBL.y = values4[1];


[Embed(source='MyImage.jpg')]
var MyImage:Class;
var shape:Shape = new Shape();
var bitmap:Bitmap = new MyImage();
var showGrid:Boolean = true;
var myColorTransform = new ColorTransform();
/*myColorTransform.color = 0xFFFFFF;
shape.transform.colorTransform = myColorTransform;
shape.graphics.beginFill(0x000000,1);
addChild(shape);*/
var distortion:DistortImage = new DistortImage(267, 400, 3, 3);
if (showGrid){
            shape.graphics.lineStyle(1, 0x00FF00);
}    
distortion.setTransform(shape.graphics, 
                        bitmap.bitmapData, 
                        PointUR, 
                        PointUL, 
                        PointBR, 
                        PointBL);
4

1 に答える 1

2

マトリックスを使用してムービークリップまたはスプライトを台形に変換することは、as3 では不可能です。可能性の範囲を説明するこのリンクをチェックしてください

要するに:

ここに画像の説明を入力

これを実現する方法は、DisplayObject を小さな三角形に分割し、それぞれに異なる変換マトリックスを適用することです。最終的な結果、三角形が少し飛び出しますが、三角形の数を増やすと、この効果は減少します。

デモとソースを含むブログへのリンクは次のとおりです

とにかく、 3d クラスまたはマチュー バディモンのfive3d、歪み部分でこれを行う方がはるかに簡単です。制御点のセットを一致させるためにどのように行うかわかりません。

于 2012-04-04T20:02:24.203 に答える