ダイアグラムに純粋なテキストとして大量のデータを出力するプロジェクトで、ActionScript3に問題があります。ただし、これは問題ではありません。問題は、ユーザーが表示したいデータの種類を変更したときに発生することです。次に、図に現在表示されている列を削除し、新しい列を追加します。しかし、私のコードはすべての列を削除するので、図はまったくありません!
すべてFlashCS5で実行しました。列は、作成したオブジェクト(長方形)のインスタンスであり、ステージに追加するだけです。すべてのインスタンスがコンテナ「コンテナ」に追加されます。それらを削除し、使用する新しいものを追加したい場合:
var container = new Sprite(); // The container for my diagram
function emptyContainer() {
if (container.numChildren > 0) {
container.removeChildAt(0);
}
}
どちらが機能しますか。
ユーザー入力に基づいてさまざまな列を追加するswitchステートメントがあります。オブジェクト(長方形)の名前は「soyle」です。インスタンスの名前は「stolpe」です(ちなみに私はノルウェー人なので、これらの奇妙な言葉を扱っています)
function fChange(event:Event) {
textToBeReturned = "";
switch (treCbox.selectedItem.label) {
case "Furu":
for (var a = 1; a < table.length; a++ ){
textToBeReturned += "I år: " + table[a][0] + " - " + table[a][1] + " millioner trær." + "\n";
// Diagram
var stolpe = new soyle;
stolpe.width = table[a][1];
stolpe.x = 20;
stolpe.y = 100 + (a * 30);
container.addChild(stolpe);
// Description for the columns
var textbox = new TextField;
textbox.text = "År " + table[a][0];
textbox.x = stolpe.width + 30;
textbox.y = stolpe.y;
container.addChild(textbox);
}
break;
case "Gran":
for (var b = 1; b < table.length; b++ ){
textToBeReturned += "I år: " + table[b][0] + " - " + table[b][2] + " millioner trær." + "\n" ;
var stolpe = new soyle;
stolpe.width = table[b][1];
stolpe.x = 20;
stolpe.y = 100 + (b * 30);
container.addChild(stolpe);
// Description for the columns
var textbox = new TextField;
textbox.text = "År " + table[b][0];
textbox.x = stolpe.width + 30;
textbox.y = stolpe.y;
container.addChild(textbox);
}
break;
case "Lauvtre":
for (var c = 1; c < table.length; c++ ){
textToBeReturned += "I år: " + table[c][0] + " - " + table[c][3] + " millioner trær." + "\n" ;
var stolpe = new soyle;
stolpe.width = table[c][1];
stolpe.x = 20;
stolpe.y = 100 + (c * 30);
container.addChild(stolpe);
// Description for the columns
var textbox = new TextField;
textbox.text = "År " + table[c][0];
textbox.x = stolpe.width + 30;
textbox.y = stolpe.y;
container.addChild(textbox);
}
break;
}
txtReturn.text = textToBeReturned;
};
以前に追加された子だけを削除するために、すべての子を削除するための関数をどこに配置するのか疑問に思います。関数をどこに配置するか(fChangeの開始時、各ケースの開始時)に関係なく、新しい図も古い図も表示されません。
もちろんデータの配列もありますが、関係ないので投稿しません。
お時間をいただき、ありがとうございました。:)