2013-04-09 5 views
0

Идея с моей настройкой в ​​том, что у меня есть текстовое поле ввода и три отдельные кнопки на сцене. Когда вы вводите текст в текстовое поле и нажимаете кнопку ввода, текст внутри поля добавляется к массиву.Пытается удалить всех детей, получая ошибку # 1009

Когда вы нажимаете кнопку дисплея, содержимое массива отображается на экране (каждое значение массива отображается под последним значением).

Конечная кнопка должна удалить все текущие значения в массиве и очистить все отображаемые значения на экране. Но я не могу получить мой код, чтобы работать, как задумано, так как я получаю,

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; 

It удаляет только одно отображаемое значение на экране. Также я могу добавить, что «TF» - это видеоклип в библиотеке, который содержит динамическое текстовое поле, имя экземпляра которого является txt. Проблема только в последней кнопке, или я должен изменить что-то еще? Я не знаю, как сделать эту работу так, как я ее хочу. Я довольно новичок в кодировании, поэтому любые советы или помощь будут высоко оценены. Заранее спасибо!

+0

У вас есть массив значений, а не массив массивов? Исправьте это как можно скорее, ваш 1009, скорее всего, полностью исчезнет. – Vesper

+0

tf - символ TF фильма. Как поместить их в массив? myArray - для ввода текста. Поэтому у меня есть строка в массиве. Я не понимаю, что вы подразумеваете, добавив TF в массив. – Snickersnee

+0

Добавьте еще один массив, который будет содержать эти TF. Это так же просто, как со строками, 'tfArray.push (tf);' и затем ссылаться на них оттуда, в том числе удалять навалом. – Vesper

ответ

0

В вашем состоянии if(tf.numChildren != 0)tf объект null, так как вы его никогда не создавали. Вот почему вы получаете ошибку #1009.

С другой стороны, для того, чтобы удалить все предметы, вы должны заменить if (tf.numChildren != 0) на while (tf.numChildren != 0).

+0

пока не помогает ошибка # 1009 все еще там. – Snickersnee

+0

Вы создали объект 'TF', вызвав' new'? –

+0

Да, но это внутри цикла, который находится внутри функции. Каждый должен быть создан каждый раз, когда нажимается кнопка. – Snickersnee

Смежные вопросы