我对这个函数感到困惑,在此之前调用xVal ad 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'
}
答案 0 :(得分:1)
假设您已在某处声明private var lns = [];
,则会绘制一条蓝线(从给定位置垂直向下20px)。
它不显示任何内容
这意味着您可能在舞台上没有该类的对象。在文档类中,您应该使用addChild
来显示包含mLine
的类的实例。毫无疑问需要以某种方式调用毫升。您可以在类的构造函数中执行此操作,但是您需要删除最后一个trace语句以避免空指针错误,因为stage
将是null
。
编辑:错过了你说它在Document类中。所以,试着看看是否有其他工作。问题似乎与此功能无关。
答案 1 :(得分:0)
您的代码似乎应该有效。我重写了它以更好地符合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);
}
不确定为什么它根本不会出现在你身上。