【问题标题】:Trying to remove all children, receiving error #1009尝试删除所有子项,收到错误 #1009
【发布时间】:2013-03-31 12:57:36
【问题描述】:

我的设置想法是在舞台上有一个输入文本字段和三个单独的按钮。当您在文本字段中键入内容并按下输入按钮时,字段内的文本将添加到数组中。

当您按下显示按钮时,数组的内容会显示在屏幕上(数组的每个值都显示在最后一个值的下方)。

最后一个按钮应该删除数组上的所有当前值,并清除屏幕上所有显示的值。但我无法让我的代码按预期工作,因为我收到了,

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;

它只删除屏幕上显示的一个值。我还可以补充一点,“TF”是库中的一个影片剪辑,其中包含一个实例名称为 txt 的动态文本字段。问题仅出在最后一个按钮上,还是我也应该更改其他内容?我不知道如何按照我的意愿进行这项工作。我对编码很陌生,因此非常感谢任何提示或帮助。提前致谢!

【问题讨论】:

  • 你有一个值数组,但没有一个 TF 数组?尽快返工,您的 1009 可能会完全消失。
  • tf 是一个movieClip 符号TF。如何将它们放入数组中? myArray 用于输入文本。所以我在数组中有字符串。我也不明白你把 TF 放在数组中是什么意思。
  • 添加另一个数组来保存这些 TF。就像使用字符串一样简单,tfArray.push(tf); 然后从那里引用它们,包括批量删除。

标签: actionscript-3 removechild


【解决方案1】:

在您的情况下,if(tf.numChildren != 0) tf 对象是 null,因为您从未创建它。这就是您收到 #1009 错误的原因。

另一方面,为了删除所有项目,您应该将 if (tf.numChildren != 0) 替换为 while (tf.numChildren != 0)

【讨论】:

  • 您是否通过调用new 创建了TF 对象?
  • 是的,但它在函数内的循环内。每次单击按钮时都应创建一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 2015-05-01
  • 2021-03-09
  • 2014-04-22
相关资源
最近更新 更多