私の質問です:どのようにコードだけを使用して図形を再描画するのですか?ActionScript 3.0でシェイプを再描画するにはどうすればよいですか?
タスク自体に関する短いコメント。私はステージとステージのクリックをつかむeventListenerを持っています。両方とも同じ機能 - redrawEvents(evt:Event)
を実行します。ステージには、特定のイベントを表すいくつかのブロックが含まれています。それぞれの再描画では、これらのブロックが再配置され、イベント(イベント間の接続を表す)も描画されます。
私はすべてのブロックの位置を変更する方法を考え出しましたが、私は線を再描画することに固執しました。
ブロックとは異なり、インタラクティブではないため、すべての行を保持するために単一のシェイプを使用しています。アプリケーションのすべてのポイントが相互に関連するイベントのセットを作成しているので、新しいブロックが作成されるたびにこのシェイプを変更する必要があります。これもまた、再描画機能を呼び出します。形状が変更されるたび
は、ここで私は形に
stage.addEventListener(MouseEvent.CLICK,redrawEvents);
function redrawEvents (evt:Event) {
var lines:Shape = new Shape();
lines.graphics.lineStyle(2, 0xFFFFFF, .75);
lines.graphics.clear();
for (var k:int = 0; k < connections.length; k++){
lines.graphics.moveTo(eventList[connections[k][0]].x + 50, eventList[connections[k][0]].y + 50);
lines.graphics.lineTo(eventList[connections[k][1]].x + 50, eventList[connections[k][1]].y + 50);
}
addChild(lines);
}
を変更するために使用するコードは、しかし、それはまだ画面上に自身の「旧バージョン」を残しています、と私はそれを望んでいません。私はインスタンスを作成して削除しようとしましたが、varions型の変換は問題を解決していません。事前
私はそこでコードを更新しました^とevilguyに返答しました。 まだ、私は何か間違っているか、これらの推奨事項だけでは私の問題を解決していません。今では私はステージ上に線を持っていません:) –
@Loki 'lines'はイベントハンドラのローカル変数です.Shapeの新しいインスタンスで' clear() 'を呼んでいます。クリアはラインスタイルです。 'lines'をクラスフィールドにしたり(そうでなければどこかに置いておく)、一度だけ(イベントが発生するたびに)インスタンス化し、他の描画コマンドの前に' clear() 'を呼び出す必要があります。 – Staven
さて、 'lines'と' lineStyle'定義を 'redrawEvents'の外でグローバル変数と一緒に置くとしましょう。次に、この関数で 'lines'にアクセスするにはどうしたらいいですか? –