如何将输入文本值复制到MovieClip 1内的动态文本中

时间:2012-12-13 07:22:02

标签: actionscript-3 flash

目前我的代码是这样的

setcustomlocation.addEventListener(MouseEvent.CLICK,customlocation2);

function customlocation2(e:MouseEvent):void
{
    locationinput.text = FlashingWon.Won1.name.text;
}

我正在努力使其将输入文本字段值复制到动态文本中。但是,它会引发错误

  

TypeError:错误#1009:无法访问空对象引用的属性或方法。       在main / customlocation2()[main :: frame1:9]

我只能假设它无法与另一个动画片段中的动画片段中的动态文本字段进行通信。

2 个答案:

答案 0 :(得分:0)

首先,您可以100%确定它可以与MovieClip中的动态TextField通信。

根据您的描述,我了解您希望从输入复制到动态。但是从你的代码我看到你从动态到输入,请检查出来:

// This will copy in such a way: input <= wonText 
locationinput.text = FlashingWon.Won1.name.text;

// This will copy from input
FlashingWon.Won1.name.text = locationinput.text;

无论如何,你得到的错误与此无关,就像你已经注意到的那样,你的一个TextField不是'found'。为此,我建议您最佳实践:创建要使用的对象的实例,并通过getChildByName方法从舞台填充它们。这样你就可以立即(特别是如果你在构造或初始化时这样做),如果你想要得到的孩子有任何拼写错误或错过结构。

像这样:

var inputText: TextField;
var dynoText: TextField;

在您的构造函数中或者在很快的水平上,为您的vars提供正确的值:

inputText = getChildByName('locationinput') as TextField;
dynoText = FlashingWon.Won1.getChildByName('name') as TextField;

通过这种方式,您很快就会知道在您提供的对象下是否找不到这两个textField中的一个,并且您只有一个地方可以拼错它。您还将在TextFields上获得代码完成。

最后是复制文本部分:

dynoText.text = inputText.text;

希望它有所帮助。

答案 1 :(得分:0)

好吧,抱歉延误了,我出去度假了。 我打开了你的例子,可以看出问题所在:

1)当您在FIRST帧上启动dynoText时,您正试图到达FlashingWon var dynoText = FlashingWon.Won1.getChildByName('name_txt');但是FlashingWon元素仅在FIFTH帧上可用。这意味着你不能完全引用它,除非你把它添加到第一帧并且在第五帧之前不可见。 (如果您希望在goto1行之后),可以在goToAndStop(5)函数中显示它

2)您在Won1元素'name'上调用了TextField,这是AS3中的限制性标记,因此如果您愿意,可以将其更改为name_txt或label。

让我知道它是如何运作的。