我想在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