我希望在我的MXML文件中包含一个MXML文件,就像您可以使用AS3指令在包括中包含一个外部文件一样。使用include指令在编译时将外部文件中的代码导入原始文件,将其置于相同的范围内。
例如,
Application.mxml:
<Application>
<source="external.mxml"/>
</Application>External.mxml:
<Styles/>
<Declarations>
<Object id="test"/>
</Declarations>我需要将此代码/mxml/xml与原始文件一起保存在外部文件中。别问我为什么要这么做。
另一个例子。下面是我当前的代码(简化),全部位于1 mxml文件中:
..。
File1.mxml
<Button click="clickHandler()"/>
<Script>
public function clickHandler():void {
}
</Script>..。
我想要的是:
..。
File1.mxml
<Group>
<source="File2.mxml"/>
<Button click="clickHandler()"/>
<Group>
File2.mxml
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>..。
我想把我的代码分成一个单独的文件..。
~~ 更新 ~~
虽然我所要求的不是使用“代码背后的”方案,但将代码从视图中删除获得了部分功劳。所以我创建了一个MXML文件,MyGroup.mxml或MyGroup.as,它扩展了包含clickHandler代码的Group。
这个方法的问题是,然后我被锁定到我要扩展的类类型,对视图进行硬编码。因此,例如,如果要将MXML类拆分为单独的文件,则必须扩展Group。
我曾经做过这样做的项目,但这并不好。人们开始在类后面的代码中设置样式和可视方面或组/视图特定属性,如果或在需要更改它或布局时,我们最终会将所有这些依赖项都添加到容器中。变成一团乱。此外,使用代码后面的代码您不能重用它(重用的方式包括styles.as被重用)。所以这不是解决办法,但我想我应该提一下。
下面是示例后面的代码,
MyGroupBehind.mxml:
<Group>
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
</Group>MyGroupAhead.mxml:
<MyGroupBehind>
<Button click="clickHandler()"/>
</MyGroupBehind>发布于 2011-07-25 20:11:26
编译器将MXML转换为类,因此无法执行您所要求的操作。
就个人而言,我认为这是一件好事。把事情分解成单独的文件并不等于“更有条理”。事实上,我会说它达到了完全相反的效果。您最好专注于一个适当的组件结构,IMHO。
发布于 2011-07-25 16:48:09
只需开始键入自定义组件的名称,然后按Ctrl+Space。代码完成将填充可能要添加的内容列表,包括组件的名称。使用向下箭头选择组件的名称,然后按enter键。代码完成将设置名称空间并启动组件的标记。如果你走到行的末尾,键入"/>“(没有引号),瞧!您将拥有一个表示自定义MXML组件的内联标记。
发布于 2011-07-25 16:59:07
首先,任何外部mxml都应该是有效的XML。现在,只要您有一个有效的MXML文件,只需按其名称添加它,如下所示:
<Application>
<external:External/>
</Application>其中“外部”是您的External.mxml文件的命名空间。
https://stackoverflow.com/questions/6819474
复制相似问题