我想在AS3上编写sierpinski三角形,但它看起来像我缺少的东西。我卡在这行代码,并试图解决什么是问题。我做了计算,但它似乎就像缺少一些东西,你能帮忙吗?Sierpinski三角形AS3问题
public class Fract extends Sprite
{
private var rand:Function = Math.random;
private var num:Number = 5;
private var w:Number = stage.stageWidth;
private var h:Number = stage.stageHeight;
private var spr:Sprite;
private var small:Sprite;
public function Fract()
{
init();
}
private function init():void
{
var i:Number;
spr = new Sprite();
small = new Sprite();
addChild(spr);
addChild(small);
for (i = 1; i < num; i++)
{
drawTriangle(i);
}
}
private function drawTriangle(i:Number):void
{
//CREATE P1 & P2
var p1:Point = new Point((w/4), (h - h/4));
var p2:Point = new Point((w - w/4), p1.y);
//Calculate distance between first two points
var dist:Number = p2.x - p1.x;
var dist2:Number = dist/2;
//Calculate p3y-so the triangle is equilateral
var p3y:Number = Math.sqrt((dist * dist) - (dist2 * dist2));
var p3:Point = new Point(p1.x + dist2, p1.y - p3y);
if (i == 1)
{
spr.graphics.lineStyle(1, 0, 1);
spr.graphics.beginFill(0, 1);
spr.graphics.moveTo(p1.x, p1.y);
spr.graphics.lineTo(p2.x, p2.y);
spr.graphics.lineTo(p3.x, p3.y);
spr.graphics.lineTo(p1.x, p1.y);
spr.graphics.endFill();
}
else
{
var p4:Point = new Point(p1.x + (dist2/i), p1.y - (p3y/i));
var p5:Point = new Point(p4.x + (dist2/(i - 1)), p4.y);
var smallDist:Number = p5.x - p4.x;
var smallDist2:Number = smallDist/2;
var p6y:Number = Math.sqrt((smallDist * smallDist) - (smallDist2 * smallDist2));
var p6:Point = new Point(p4.x + smallDist2, p4.y + p6y);
small.graphics.lineStyle(1, 0, 1);
small.graphics.beginFill(0xffffff, 1);
small.graphics.moveTo(p4.x, p4.y);
small.graphics.lineTo(p5.x, p5.y);
small.graphics.lineTo(p6.x, p6.y);
small.graphics.lineTo(p4.x, p4.y);
small.graphics.endFill();
}
}
}
在发帖框中突出显示您的代码,并点击{}按钮以使其格式化,看起来一团糟:)也给错误。 – shaunhusain 2011-01-05 23:42:32
定义'缺少':)你的意思是包装声明和Sprite和Point类的导入语句吗?另外,请在drawTriangle方法的else语句中查看一下:我认为你的坐标已经关闭了 – 2011-01-06 02:11:42