我正在尝试使用以下代码构建一个等边三角形,但我没有看到我期望的结果。
我希望看到一个三角形画到舞台上,但我没有看到一个。
我认为在屏幕上三精灵的位置一定有问题。
public class test_drawing_triangle extends Sprite
{
public function test_drawing_triangle()
{
var tri:Sprite = new Sprite;
var nextx:int;
var nexty:int;
var prevx:int;
var prevy:int;
var angle:Number;
var radius:Number;
var deg:int;
var i:int;
radius = 10;
// tri.x = stage.stageWidth / 2;
tri.y = 50;
tri.graphics.clear();
tri.graphics.beginFill(0x000000, 0.5);
tri.graphics.moveTo(0,0);
for(deg = 0; deg < 360; deg += 120)
{
angle = deg * Math.PI / 180;
nextx = Math.cos(angle) * radius;
nexty = Math.sin(angle) * radius;
tri.graphics.lineTo(nextx, nexty);
}
tri.graphics.endFill();
addChild(tri);
}
}
更新:
我现在可以看到三角形,但没有填写。 它似乎具有通常正确的形状,但我希望它是3面而不是4面。 如果任何人都可以花一点时间来编译它并查看我所描述的内容,那将会非常有帮助。
答案 0 :(得分:1)
我不确定我是否理解你要做的事情,但是如果你想让圆圈位于三角形的角落。比你需要改变
tri.graphics.drawCircle(0,0,2);
到
tri.graphics.drawCircle(nextx,nexty,2);
drawCircle采用绝对x,y而不关心moveTo
编辑 - 使用此代码代替循环
deg = 30;
angle = (deg * Math.PI) / 180.0;
nextx = Math.cos(angle) * radius;
nexty = Math.sin(angle) * radius;
(tri.graphics as Graphics).moveTo(nextx, nexty);
for(deg = 150; deg < 420; deg += 120)
{
angle = (deg * Math.PI) / 180.0;
nextx = Math.cos(angle) * radius;
nexty = Math.sin(angle) * radius;
(tri.graphics as Graphics).lineTo(nextx, nexty);
}
答案 1 :(得分:0)
此代码看起来像是在三角形的点上绘制三个圆圈。如果是这种情况,那么替换
tri.graphics.moveTo(nextx, nexty);
tri.graphics.drawCircle(0, 0, 2);
与
tri.graphics.lineTo(nextx, nexty);
如果情况并非如此,请说明您所看到的内容,以便我们更好地了解出现了什么问题。
答案 2 :(得分:0)
您是否有特殊原因使用角度来绘制三角形?
如果我这样做,我只需硬编码一个单位大小的等边三角形(定义为三个3d点),然后使用缩放和平移操作将其放入正确的大小和位置。