Actionscript 3 基于度/弧度绘制一侧倾斜的矩形
我试着取一个矩形的一边,然后根据角度/角度倾斜一边Actionscript 3 基于度/弧度绘制一侧倾斜的矩形,actionscript-3,flash,math,actionscript,geometry,Actionscript 3,Flash,Math,Actionscript,Geometry,我试着取一个矩形的一边,然后根据角度/角度倾斜一边 取角度的切线,乘以矩形的宽度,得到底轴的δy,这样 [x1,y1]作为永远不变的矩形的原点 [x1+长度,y1+deltaY]作为右下角取角度的切线,乘以矩形的宽度,得到底轴的delta y,因此 [x1,y1]作为永远不变的矩形的原点 [x1+length,y1+deltaY]作为右下角,我为您编写了一些代码 有问题尽管问 import flash.geom.Matrix; var temp_matrix = new Matrix();
取角度的切线,乘以矩形的宽度,得到底轴的δy,这样 [x1,y1]作为永远不变的矩形的原点
[x1+长度,y1+deltaY]作为右下角取角度的切线,乘以矩形的宽度,得到底轴的delta y,因此 [x1,y1]作为永远不变的矩形的原点
[x1+length,y1+deltaY]作为右下角,我为您编写了一些代码 有问题尽管问
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
[第二轮]
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;
}
}
我给你编了一些代码 有问题尽管问
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
[第二轮]
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;
}
}
不知道是什么,但编辑后看起来像是带顶点的填充多边形:
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)
不知道是什么,但编辑后看起来像是带顶点的填充多边形:
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)
你的三角怎么样?那是平行四边形,顺便说一句,你的三角怎么样?这是一个平行四边形,顺便说一句+1。我只是想澄清一下,这里使用的宽度是形状从左到右的最终宽度,而不是底部部分的长度,事实上,它更长。谢谢你的帮助,我现在要试试这个!嗨,这是一个很大的帮助!非常感谢。不幸的是,这一定是我的就寝时间,因为我有点不清楚我最初想要什么。我刚刚编辑了这篇文章,所以请查看它。+1。我只是想澄清一下,这里使用的宽度是形状从左到右的最终宽度,而不是底部部分的长度,事实上,它更长。谢谢你的帮助,我现在要试试这个!嗨,这是一个很大的帮助!非常感谢。不幸的是,这一定是我的就寝时间,因为我有点不清楚我最初想要什么。我刚刚编辑了这篇文章,请查看。嗨,这是一个很大的帮助!非常感谢。不幸的是,这一定是我的就寝时间,因为我有点不清楚我最初想要什么。我刚刚编辑了这篇文章,所以请查看。哈哈,这与你发布的原始图片非常不同。因此,你不能使用矩阵,你必须画它。让我们看看我能不能想出点什么。是的,我想把一部分记下来,然后试着找出剩下的部分。不管怎样,我都会把你标记为正确的,因为你有最初的要求。我创建了一些东西,再次模仿你发布的gif。lol。代码很潦草,但你至少会得到使用。嗨,这是一个很大的帮助!非常感谢。不幸的是,这一定是我的就寝时间,因为我有点不清楚我最初想要什么。我刚刚编辑了这篇文章,所以请查看。哈哈,这与你发布的原始图片非常不同。因此,你不能使用矩阵,你必须画它。让我们看看我能不能想出点什么。是的,我想把一部分记下来,然后试着找出剩下的部分。不管怎样,我都会把你标记为正确的,因为你有最初的要求。我创建了一些东西,再次模仿你发布的gif。lol。代码很潦草,但你至少会得到使用。