我正在尝试在flex 3中实现可重用的组件。我有一个动态的tab导航器。在屏幕上我有一个带有点击操作的按钮,一个带有vbox的标签导航器作为子项将被创建,而在vbox中我有一个文本框它从用户那里获取输入信息。
点击按钮旁边有一个显示按钮。当用户单击“显示”按钮并且如果打开了四个选项卡时,我们需要将VBox的所有文本框放到文本区域。
这是我的代码。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import Repeat;
private var input:String;
private var i:int=0;
private function addNextTab(event:Event):void {
tabs.addChild(new Repeat("Tab"));
}
private function show()
{
var child:DisplayObject;
for(i=0;i<tabs.numChildren;i++)
{
child=tabs.getChildAt(i);
input=TextInput(child.getChildAt(0)).text;//error
textArea.text=textArea.text+input;
}
}
]]>
</mx:Script>
<mx:TabNavigator id="tabs" width="100%" height="100%">
</mx:TabNavigator>
<mx:TextArea id="textArea"/>
<mx:Button label="Add Next Tab" click="addNextTab(event)" />
<mx:Button label="Show Values" click="show()" />
</mx:Application>
一行显示错误。我是flex的初学者。但我试着学习并做自己的事。 这是我的Repeat.as
package {
import mx.containers.VBox;
import mx.controls.Label;
import mx.controls.TextInput;
public class Repeat extends VBox {
public function Repeat(name:String) {
label = name;
}
override protected function createChildren():void {
super.createChildren();
var box:VBox = new VBox();
var t1:TextInput = new TextInput();
box.addChild(t1);
addChild(box);
}
}
}
我必须访问所有标签的文本框信息并将其放在textArea中。
任何人都可以帮助我。?
BTW:这是flex 3应用程序。答案 0 :(得分:1)
您应该将文本设为公共属性,而不是创建嵌套的VBox来添加它。你已经扩展了VBox,所以只需addChild ..就像这样:
package {
import mx.containers.VBox;
import mx.controls.Label;
import mx.controls.TextInput;
public class Repeat extends VBox {
public var text:TextInput;
public function Repeat(name:String) {
label = name;
}
override protected function createChildren():void {
super.createChildren();
text = new TextInput();
addChild(text);
}
}
}
编辑:显示访问它。
child = tabs.getChildAt(i) as Repeat;
child.text.text = someNewValue;