0

ich bin sehr nex Action-Skript, aber ich habe ein Problem mit einem MovieClip.Videoclip an 4 Koordinaten anpassen

ich habe 4 coodinates muss einen passenden movie clip passen, so dass jede ecke der movieclips auf einer koordinate ist.

Das einzige, was ich finden konnte es mit einer Matrix und Winkel Transformieren (siehe Beispiel), aber diese kann nicht die beste Lösung für mein Problem sein, alle Winkel usw.

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; 

i Sie zu berechnen hoffen verstehe mein Problem und kenne eine Lösung dafür.

Ich habe versucht, Bild so wie es scheint exaclty zu tun, was es braucht, aber ich kann es nicht bekommen, so zeigen Sie mein Bild. die Koordinaten funktionieren, wenn ich den kommentierten Teil kommentiere, sehe ich weiße Reagles exaclty, wo sie sein sollten, aber sie werden nicht beim Update gelöscht, ich hoffe du kannst meinem helfen. Hier ist mein Code:

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); 
+0

Bilden die 4 Punkte ein Rechteck, Parallelogramm oder Trapez? – Daniel

+0

Sie sind trapezförmig, aber sie ändern die Zeit, so dass sie auch zeitweise ein Parallelogramm sein könnten. –

Antwort

2

Die Umwandlung eines MovieClip oder Sprite in ein Trapez mit der Matrix ist unmöglich in as3. Schauen Sie sich this link, die das Ausmaß der Möglichkeiten

kurz erklärt:

enter image description here

Die Art und Weise dies erreicht wurde durch Aufbrechen der Display in kleinere Dreiecke und verschiedene Übersetzungsmatrix zu jeder Anwendung. Das Endergebnis lässt die Dreiecke ein wenig herausspringen, aber wenn Sie die Anzahl der Dreiecke erhöhen, wird dieser Effekt verringert.

hier ist ein link für ein Blog mit Demo und Quelle

Es ist viel einfacher, dies five3d, die Verzerrung Teil mit 3D-Klassen oder Mathieu Badimon des ohnehin zu tun, ich bin nicht sicher, wie Sie es tun würden passen eine Reihe von Kontrollpunkten.

+0

danke, für Ihren Beitrag scheint dies genau das zu sein, was ich brauche, aber ich kann es nicht zur Arbeit bringen, bitte werfen Sie einen Blick auf meinen Code, den ich oben hinzugefügt habe. –

+0

habe es zur Arbeit gebracht, danke –