0

我有一个精灵数组:

for (i = 0; i < 3; i++) {
    var newLine:Sprite = new Sprite();
    newLine.graphics.beginFill(0xFFFFFF); 
    newLine.graphics.drawRect((uiSizeX * (.25 + .25 * i)) + (doorSizeX - lineLengths[0][i]) / 2, uiSizeY * .5, lineLengths[0][i], lineHeight); 
    newLine.name = "lines" + i;
    lines.push(newLine);
}

我稍后将每个添加到背景 Sprite 中:

for (i = 0; i < 3; i++) {
    uiContainer.addChild(doors[i]);
    uiContainer.addChild(lines[i]);
}

后来希望更改每个包含的矩形的宽度。当我使用数组引用设置宽度属性时:

lines[i].width = lineLengths[trialNumber][i];

矩形移向舞台和 uiContainer 的中心。尝试设置 x 值会导致更奇怪的行为。我从其他问题的答案中收集到这是因为精灵是空的,这令人困惑,因为它似乎应该有一个矩形。如何访问或更改矩形的属性或使其精灵不为空?

4

1 回答 1

0

切勿尝试直接更改精灵的宽度或高度,除非您真的必须这样做,因为这会导致各种意外行为。

如果要调整精灵的大小,请重绘矩形:

var sprite = lines[i];

sprite.graphics.beginFill(0xFFFFFF); 
sprite.graphics.drawRect(newWidth, newHeight);

也不要忘记致电endFill

sprite.graphics.endFill();

您可能应该将所有这些逻辑包装到一个单独的类中,以便您可以更轻松地重绘精灵。更好的是,创建一个扩展类Sprite并包含所有重绘/调整大小的逻辑。

于 2012-07-27T03:32:43.767 回答