如何在不同状态下具有相同的组件ID(Flex Mobile项目)

|| 例如,在我的Flex移动应用程序中,我有一个肖像和一个风景状态。两者具有相同的组件,但在每个状态下使用不同的HGroup和VGroup进行布局。如果我只是将单击处理程序放在这些组件上,那将很容易,因为即使它们具有不同的ID,我也可以简单地为它们定义相同的单击侦听器。但是,由于在整个应用程序中多次多次引用所有这些组件,因此我如何允许它们具有相同的ID,并且仅当它们在当前视图中时才做出反应? 现在它告诉我
\"identifier \'example_id\' used more than once.\"
编辑:也只想说我知道他们不在群组中时的方式,您可以像x.portrait = \“ 25 \” y.portrait = \“ \” 25 \“这样做,但是当我将他们分为H和V组,这阻止了我这样做。     
已邀请:
恐怕您只能将具有id的组件放置在容器中一次,并且只能根据状态设置其属性。 这将起作用(给定状态\“垂直\”和\“水平\”):
<s:Group id=\"test\" width=\"100%\" height=\"100%\" visible.vertical=\"true\" visible.horizontal=\"false\"/>
但这不会:
<s:Group id=\"test\" width=\"100%\" height=\"100%\" includeIn=\"vertical\"/>
<s:Group id=\"test\" width=\"100%\" height=\"100%\" includeIn=\"horizontal\"/>
因此,可能需要在运行时重新布局UI(让它通过Flex进行布局?)。一种解决方法-将UI组件(例如矩形等)放置在组件周围,然后根据样式将其打开和关闭,以将组件强制放置在所需的位置。     
正如Tomasz提到的和文档所指出的那样,   ...所有id属性必须唯一   在文档中。 您的编辑表明尝试在忽略它们的布局中使用显式坐标时出现问题(VerticalLayout和Horizo​​ntalLayout)。因此,我不确定您是否真的不能使用提到的Tomasz之类的状态选择器。也许您需要更详细地说明为什么使用状态选择器不是您的选择。 使用\'id \'属性获取对在MXML中声明的组件的引用的另一种方法是使用\'name \'属性。通过为组件分配名称,您可以使用任何DisplayObjectContainer的getChildByName()方法检索它。此方法:   返回以下子显示对象:   存在具有指定名称的名称。如果   一个子展示对象具有的更多功能   指定的名称,该方法返回   子级列表中的第一个对象。 使用此方法将仅返回属于currentState一部分的命名组件(在假设您不会在相同状态下拥有两个具有相同名称的组件时,这将是最好的选择)。     

要回复问题请先登录注册