0

目前我的代码就是这样

setcustomlocation.addEventListener(MouseEvent.CLICK,customlocation2);

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

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

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

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

4

2 回答 2

0

好的,抱歉耽搁了,我假期出去了。我打开了你的例子,可以看到问题出在哪里:

FlashingWon1)当您在第一帧上启动 dynoText 时,您正试图达到,var dynoText = FlashingWon.Won1.getChildByName('name_txt');但 FlashingWon 元素仅在第五帧上可用。这意味着您还不能完全参考它,除非您将它添加到第一帧并使其在第五帧之前不可见。goto1(如果您希望在该goToAndStop(5)行之后,可以使其在函数中可见)

2) 您在元素 'name' 上调用了 TextField,Won1这是 AS3 中的一个受限制的字符串,因此如果您愿意,可以将其更改为 name_txt 或标签,它会起作用。

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

于 2013-01-02T10:03:09.917 回答
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;

在您的 Constructor 或其他地方,在不久的将来,为您的 vars 赋予适当的值:

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

这样,您很快就会知道是否在您提供的对象下找不到这 2 个文本字段之一,并且您只有一个地方可以错过拼写它。您还将在 TextFields 上完成代码。

最后复制文本部分:

dynoText.text = inputText.text;

希望能帮助到你。

于 2012-12-13T07:50:18.803 回答