如果我动态创建项目,我无法弄清楚如何通过 ID 访问项目
在我的应用程序的一个区域中,我正在创建一个显示,该显示在循环期间使用动作脚本构建自身。 (在我的实际应用程序中,有很多嵌套子项,我的函数可能正在寻找这些子项中的任何一个)在该AS中,我为每个项目分配了一个ID,但是当我尝试通过以下方式访问该项目时它的 id 失败了。什么给?我怎样才能找到一个 UI 组件而不必知道它所有可能的父组件?
这是我正在做的事情的一个简化示例。单击按钮将失败并出现错误
ReferenceError:错误 #1069:在测试中未找到属性 myPanel3,并且没有默认值。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.containers.Panel;
private function init():void{
var i:uint = 0;
for(i = 0; i<10; i++){
var loopPanel:Panel = new Panel;
loopPanel.title = i.toString();
loopPanel.id = "myPanel" + i.toString();
myVBox.addChild(loopPanel);
}
}
private function clicked():void{
var tracePanel:Panel = this["myPanel3"];
trace(tracePanel);
}
]]>
</mx:Script>
<mx:VBox id="myVBox" x="10" y="10" width="500"/>
<mx:Button id="myBtn" x="518" y="8" label="Click Me" click="clicked();"/>
</mx:Application>
In one area of my application I am creating a display that builds itself with actionscript during a loop. (in my actual app there are A LOT of nested children and my function might be looking for any of those children) In that AS I assign each item an ID, but when I try to access that item by it's id it fails. What gives? and how can I accomplish finding a UI component without having to go through knowing all of it's possible parents?
Here's a simplified example of what I'm doing. The button click will fail with an error
ReferenceError: Error #1069: Property myPanel3 not found on Test and there is no default value.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.containers.Panel;
private function init():void{
var i:uint = 0;
for(i = 0; i<10; i++){
var loopPanel:Panel = new Panel;
loopPanel.title = i.toString();
loopPanel.id = "myPanel" + i.toString();
myVBox.addChild(loopPanel);
}
}
private function clicked():void{
var tracePanel:Panel = this["myPanel3"];
trace(tracePanel);
}
]]>
</mx:Script>
<mx:VBox id="myVBox" x="10" y="10" width="500"/>
<mx:Button id="myBtn" x="518" y="8" label="Click Me" click="clicked();"/>
</mx:Application>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
两行的变化:
和
嵌套 - 如果您需要在不搜索的情况下访问自定义对象,您可能应该创建自定义对象的字典(例如,具有“名称”-“对象引用”对的关联数组)子组件。
Try this:
Changes on two lines:
and
Nesting - you should probably create a dictionary (eg. assocative array with "name" - "object reference" pairs) of your custom objects if you need to access them without searching in subcomponents.