Apache flex Flash中单独层中创建的按钮内的TextField实例在Flex中为null
我在flash中创建了一个按钮对象。该按钮包含两层。一个是背景图像,上面是文本字段。文本字段是动态的。我使用movieclip中的按钮,并将其导出到SWC中。我正试图在flex中使用它 我正在尝试这样做:Apache flex Flash中单独层中创建的按钮内的TextField实例在Flex中为null,apache-flex,flash,instance,textfield,swc,Apache Flex,Flash,Instance,Textfield,Swc,我在flash中创建了一个按钮对象。该按钮包含两层。一个是背景图像,上面是文本字段。文本字段是动态的。我使用movieclip中的按钮,并将其导出到SWC中。我正试图在flex中使用它 我正在尝试这样做: var myComponent:MyComponent = new MyComponent(); myComponent.button01.theTextField.text = "Caption"; 在Flex调试器中,buttonmyComponent.button01的获取和实例不为n
var myComponent:MyComponent = new MyComponent();
myComponent.button01.theTextField.text = "Caption";
在Flex调试器中,buttonmyComponent.button01的获取和实例不为null,但textFieldmyComponent.button01的实例为null。TextField为null,我无法更改文本,但默认文本显示在屏幕上。代码在flex中正确编译。有人知道怎么回事吗
我还将swc导出到按钮控件中。因此,按钮不是Flash的默认SimpleButton,而是由FlashButton生成的派生类,其名称与Flash中定义的符号相同。它包含文本字段memeber,该字段为空 下面是timelineLayer 2包含textfield的按钮,textfield实例名为theTextField:
听起来文本字段的引用路径有问题。如果您正在Flex中调试,请检查变量选项卡,看看是否可以找到myComponent,然后是myComponent.button01,然后是myComponent.button01.theTextField。听起来您对TextField的引用路径有问题。如果您正在Flex中调试,请检查变量选项卡,看看是否可以找到myComponent,然后是myComponent.button01,然后是myComponent.button01.TextField。我相信您不能引用button SimpleButton对象的子对象 如果您在Flash中编写一个快速测试,试图修改TextField的.text属性,我想您会得到一个运行时错误,如下所示: 1119:通过静态类型为flash的引用访问可能未定义的属性theTextField。显示:SimpleButton
对不起,我没有关于如何解决您的问题的信息。希望这将是一个很好的起点,可以帮助您找到答案。我相信您不能引用button SimpleButton对象的子对象 如果您在Flash中编写一个快速测试,试图修改TextField的.text属性,我想您会得到一个运行时错误,如下所示: 1119:通过静态类型为flash的引用访问可能未定义的属性theTextField。显示:SimpleButton
对不起,我没有关于如何解决您的问题的信息。不过,希望这将是一个很好的起点,可以帮助您找到答案。事实上,没有问题,一切都按它应该的方式进行- 在实例化一个类new MyComponent之后,子对象本身不会实例化,该过程将被更改。只有将组件添加到显示列表后,才会实例化所有子控件。因此,只有在将对象实际添加到显示列表后,才需要访问子控件 在flex控件中,您有一个creationComplete事件,用于此目的
您可以阅读对象创建的详细信息。事实上,没有问题,一切都正常工作:- 在实例化一个类new MyComponent之后,子对象本身不会实例化,该过程将被更改。只有将组件添加到显示列表后,才会实例化所有子控件。因此,只有在将对象实际添加到显示列表后,才需要访问子控件 在flex控件中,您有一个creationComplete事件,用于此目的
您可以阅读对象创建的详细信息。问题在于SimpleButton似乎是最后一个类。换句话说,您不能将child添加到它,也不能动态添加任何属性。我用一个按钮flash.display.SimpleButton和一个文本字段做了一个简单的测试。当我把文本字段放在IDE的按钮上时,我无法找到它的句柄。当我把这个按钮制作成电影剪辑时,效果非常好。因此,您必须将按钮实例放在MovieClip/Sprite符号内TextField下面的层上。我最终通过代码添加符号,因为我有两个稍微不同的视觉表示
var button:MovieClip;
if (val1 < 10) {
button = new LowButton();
button.addEventListener(MouseEvent.CLICK, onLowClick);
button.textField1.text = "You";
button.textField2.text = "Stinker";
} else if (val1 > 10 && val1 < 100) {
button = new MidButton();
button.textField.text = "Middie";
...
你明白了 问题是SimpleButton似乎是最后一个类。换句话说,您不能将child添加到它,也不能动态添加任何属性。我用一个按钮flash.display.SimpleButton和一个文本字段做了一个简单的测试。当我把文本字段放在IDE的按钮上时,我无法找到它的句柄。当我把这个按钮制作成电影剪辑时,效果非常好。因此,您必须将按钮实例放在MovieClip/Sprite符号内TextField下面的层上。我最终通过代码添加符号,因为我有两个稍微不同的视觉表示
var button:MovieClip;
if (val1 < 10) {
button = new LowButton();
button.addEventListener(MouseEvent.CLICK, onLowClick);
button.textField1.text = "You";
button.textField2.text = "Stinker";
} else if (val1 > 10 && val1 < 100) {
button = new MidButton();
button.textField.text = "Middie";
...
你明白了 创建一个movieclip
M
拍摄3帧,为其指定名称:外-第1帧,单击,结束
将textfield添加到其他层,就像第一篇文章中的时间线一样
将此代码添加到第1帧
stop();
addEventListener(MouseEvent.MOUSE_OVER, on_over, false, 0, true);
addEventListener(MouseEvent.CLICK, on_click, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, on_out, false, 0, true);
function on_out(e:MouseEvent):void
{
gotoAndStop("out");
}
function on_click(e:MouseEvent):void
{
gotoAndStop("click");
}
function on_over(e:MouseEvent):void
{
gotoAndStop("over");
}
现在,在代码中,您可以将此剪辑用作超级按钮创建、添加单击事件侦听器、分配标题文本而不包含空异常等…创建一个movieclip
制作3帧,为其指定名称:out-frame 1,单击,结束
将textfield添加到其他层,就像第一篇文章中的时间线一样
将此代码添加到第1帧
stop();
addEventListener(MouseEvent.MOUSE_OVER, on_over, false, 0, true);
addEventListener(MouseEvent.CLICK, on_click, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, on_out, false, 0, true);
function on_out(e:MouseEvent):void
{
gotoAndStop("out");
}
function on_click(e:MouseEvent):void
{
gotoAndStop("click");
}
function on_over(e:MouseEvent):void
{
gotoAndStop("over");
}
现在,在代码中,您可以将此剪辑用作超级按钮创建、添加单击事件侦听器、分配标题文本而不包含null异常等等。我做到了,myComponent.button01不为null,myComponent.button01.theTextField为null。我注意到了这个问题,但我不知道是什么问题。默认的textField值显示出来了,所以它在某个地方。我做到了,myComponent.button01不为null,myComponent.button01.theTextField为null。我注意到了这个问题,但我不知道是什么问题。默认的textField值显示出来了,所以它在某处。我也在按钮控件中导出了swc。因此,按钮不是Flash的默认SimpleButton,而是由FlashButton生成的派生类,其名称与Flash中定义的符号相同。它包含文本字段memeber,但为空。@rhtx:好主意。它可能涉及到使用mx_内部名称空间来解决这个问题。@php html:实际上,我认为派生类的行为仍然与SimpleButton相同@罗布斯托:这似乎不是一个名称空间问题,对我来说根本不是一个专家,但我真的很有兴趣听到关于这一行的进一步想法。我在swc中导出了按钮控件。因此,按钮不是Flash的默认SimpleButton,而是由FlashButton生成的派生类,其名称与Flash中定义的符号相同。它包含文本字段memeber,但为空。@rhtx:好主意。它可能涉及到使用mx_内部名称空间来解决这个问题。@php html:实际上,我认为派生类的行为仍然与SimpleButton相同@罗布斯托:这似乎不是一个名称空间的问题,对我来说根本不是什么专家,但我真的很想听听关于这方面的进一步想法。