0

私のセットアップのアイデアは、ステージ上に入力テキスト フィールドと 3 つの個別のボタンがあるということです。テキスト フィールドに何かを入力して入力ボタンを押すと、フィールド内のテキストが配列に追加されます。

表示ボタンを押すと、配列の内容が画面に表示されます (配列の各値が最後の値の下に表示されます)。

最後のボタンは、配列の現在の値をすべて削除し、画面に表示されているすべての値をクリアすることになっています。しかし、コードを意図したとおりに動作させることができません。

TypeError: Error #1009: Cannot access a property or method of a null object reference.

このコード ブロックを使用すると、次のようになります。

import flash.text.TextField;
import flash.events.MouseEvent;

var myArray:Array = new Array (""); 
var tf:TF;

btnInput.addEventListener(MouseEvent.CLICK, txtInput);

function txtInput(event:MouseEvent):void
{myArray.push(txtInput.text);}

btnDisplay.addEventListener(MouseEvent.CLICK, txtDisplay);

function txtDisplay(event:MouseEvent):void
{for (var i:int = 0; i < myArray.length; i++)
{var tf:TF = new TF();
tf.txt.text = myArray[i];
tf.y = 280 + (i * 25);
tf.x = 265; 
addChild(tf);
tf.name="test";}
}

btnClear.addEventListener (MouseEvent.CLICK, txtClear);

function txtClear(event:Event){
myArray.splice(1);
if (tf.numChildren != 0){
removeChild(getChildByName("test"));}
}

または、追加すると

var tf:TF = new TF;

画面に表示されている値を 1 つだけ削除します。また、「TF」はライブラリ内のムービー クリップであり、インスタンス名が txt であるダイナミック テキスト フィールドを含むことも付け加えておきます。問題は最後のボタンだけですか、それとも他のボタンも変更する必要がありますか? これを希望どおりに機能させる方法がわかりません。私はコーディングにかなり慣れていないので、ヒントやヘルプをいただければ幸いです。前もって感謝します!

4

1 に答える 1

0

あなたの状態if(tf.numChildren != 0)では、tfオブジェクトはnull作成したことがないためです。そのため、#1009エラーが発生しています。

一方、すべてのアイテムを削除するには、 を に置き換える必要がありif (tf.numChildren != 0)ますwhile (tf.numChildren != 0)

于 2013-04-09T08:02:55.607 に答える