[英]display lines in AS3
我對此功能感到困惑,該函數在此之前分別使用xVal和yVal的參數22和58調用。 在編譯和測試swf時,它不會顯示任何內容,並且沒有錯誤。 代碼在文檔類中:
private function mLine(xVal : int, yVal : int) {
var rCol = 0x0000FF;
var incr = Math.round((Math.random() * 20) + 8);
lns.push(new Shape());
var i = lns.length - 1;
this.addChild(lns[i]);
lns[i].graphics.moveTo(xVal, yVal);
lns[i].graphics.lineStyle(10, rCol);
lns[i].graphics.lineTo(xVal, yVal + 20);
lns[i].name = incr;
trace("lns[" + i + "] x is " + lns[i].x); // outputs 'lns[0] x is 0'
trace("xVal is " + xVal); // outputs 'xVal is 22'
trace("yVal is " + yVal); //outputs 'yVal is 58'
trace(stage.contains(lns[i])); // outputs 'true'
}
假設您已聲明private var lns = [];
在某處繪制一條藍線(從給定位置開始向下垂直20px)。
它什么都不顯示
這意味着您在舞台上可能沒有該類的對象。 在您的文檔類中,應該使用addChild
來顯示包含mLine
的類的實例。 顯然需要以某種方式調用mLine。 您可以在類的構造函數中執行此操作,但是您需要刪除最后一個trace語句,以避免出現空指針錯誤,因為那時stage
將為null
。
編輯:錯過了您說它在Document類中。 因此,請嘗試查看是否可以進行其他繪制。 這個功能似乎沒有問題。
您的代碼似乎應該可以工作。 我重寫了它,使其更好地符合ActionScript 3最佳實踐
private function drawLine(xVal:int, yVal:int):void
{
var lineColor:uint = 0x0000FF;
var lineShape:Shape = new Shape();
//lineShape.name = String(Math.round((Math.random() * 20) + 8));
lineShape.graphics.lineStyle(10, lineColor);
lineShape.graphics.moveTo(xVal, yVal);
lineShape.graphics.lineTo(xVal, yVal + 20);
addChild(lineShape);
lines.push(lineShape);
}
形狀的x和y屬性都將為零,因為您從未設置它們。 您只是在xVal和yVal的形狀內繪制線。 您可以這樣做:
private function mLine(xVal:int, yVal:int)
{
var lineColor:uint = 0x0000FF;
var lineShape:Shape = new Shape();
//lineShape.name = String(Math.round((Math.random() * 20) + 8));
lineShape.graphics.lineStyle(10, lineColor);
lineShape.graphics.moveTo(0, 0);
lineShape.graphics.lineTo(0, 20);
lineShape.x = xVal;
lineShape.y = yVal;
addChild(lineShape);
lines.push(lineShape);
}
不知道為什么它根本不為您顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.