2012-06-07 82 views

回答

4

我颳起了一些代碼爲你
任何問題,只是問。

import flash.geom.Matrix; 

var temp_matrix = new Matrix(); 

var square:Sprite = new Sprite(); 
addChild(square); 
square.graphics.lineStyle(3,0x000000); 
square.graphics.drawRect(0,0,200,100); 
square.graphics.endFill(); 

var angle:Number = -10; // the angle of degrees 
temp_matrix.b = Math.PI * 2 * angle/360;// y skew 
//temp_matrix.c = Math.PI * 2 * angle/360;// x skew 

var sourceMatrix:Matrix = square.transform.matrix;// get existing matrix 
sourceMatrix.concat(temp_matrix); // apply skew to existing matrix 
square.transform.matrix = temp_matrix;// assign the new skew 

square.x = 100 
square.y = 100 

[第2輪〕

var trapezium:Sprite = new Sprite(); 
addChild(trapezium); 
trapezium.x = 100; 
trapezium.y = 100; 

var dir:Boolean = true; 
var side:Boolean = true; 
var angle:Number = 0; // the angle of degrees 
var w:Number = 300; 
var h:Number = 80; 


var timer:Timer = new Timer(16); 
timer.addEventListener(TimerEvent.TIMER, tick); 
timer.start(); 

function tick(e:TimerEvent):void{ 
    var radians:Number = Math.PI/180*angle; 
    trapezium.graphics.clear(); 
    trapezium.graphics.beginFill(0x000000) 
    if(side){ 
     // long side is right side 
     trapezium.graphics.lineTo(w,0); 
     trapezium.graphics.lineTo(w,radians*w+h); 
     trapezium.graphics.lineTo(0,h); 
     trapezium.graphics.lineTo(0,0); 
    }else{ 
     trapezium.graphics.lineTo(w,0); 
     trapezium.graphics.lineTo(w,h); 
     trapezium.graphics.lineTo(0,radians*w+h); 
     trapezium.graphics.lineTo(0,0); 
    } 
    trapezium.graphics.endFill(); 
    if(angle>=10){ 
     dir = false; 
    } 
    if(angle<=0){ 
     dir = true; 
    } 
    if(dir){ 
     angle = angle+.2; 
    }else{ 
     angle = angle-.2; 
    } 
    if(Math.floor(angle*10) <= 0){ 
     side = !side; 
    } 
} 
+0

嗨,這是一個很大的幫助!非常感謝。不幸的是,它一定是我的睡覺時間,因爲我對我最初想要的東西有點不清楚。我只是編輯帖子,所以檢查出來。 – Tom

+0

大聲笑是非常不同,那麼你張貼的原始圖片。爲此,您不能使用您必須繪製的矩陣。讓我看看我能不能拿出一些東西。 –

+0

是的,我想弄清楚一部分,並試圖找出其餘部分。無論如何,我會標記你是正確的,因爲你有最初的要求。 – Tom

3

取角度的正切值和由矩形的寬度乘以獲得用於底軸的增量Y這樣你就必須

[X1,Y1]爲一體的原點矩形(從不改變)

[X1 +長度,Y1 +移動deltaY]作爲右下角

+0

+1。我只想澄清一下,這裏使用的寬度是最終的從左到右的寬度,而不是底部的長度(事實上,長度更長)。 – Cameron

+0

感謝您的幫助,我現在就試試這個! – Tom

+0

嗨,這是很多的幫助!非常感謝。不幸的是,它一定是我的睡覺時間,因爲我對我最初想要的東西有點不清楚。我只是編輯帖子,所以檢查出來。 – Tom

1

不AS知道,但編輯與頂點,這看起來像填充多邊形後:

P0 =(X0, Y0) 
P1 = (X1, Y0) 
if Angle >= 0 then 
    P2 = (X1, Y1) 
    P3 = (X0, Y1 + (X1-X0) * Tan(Angle)) 
else 
    P2 = (X1, Y1 - (X1-X0) * Tan(Angle)) 
    P3 = (X0, Y1)