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);
}

後でそれぞれを背景のスプライトに追加します。

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

そして後で、それぞれに含まれる長方形の幅を変更したいと思います。配列参照を使用してwidthプロパティを設定すると、次のようになります。

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 に答える