如何使用 moduleloader 标签将 Flex 模块加载为列表项渲染器?
我有一个带有外部项目渲染器的列表组件。我的 itemrender 是一个我想在运行时加载的模块。
我已经使用了 moduleloader 标签,但它不显示任何内容。如果我不使用 moduleloader 标签,而是使用
而不是
它会显示内容。
有谁知道我应该怎么做?
带有列表组件的应用程序文件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
initialize="catagories.send();">
<mx:HTTPService id="catagories" url="data/products.xml"
resultFormat="e4x"/>
<mx:XMLListCollection id="myXC"
source="{catagories.lastResult.product}"/>
<mx:List id="r" dataProvider="{myXC}"
width="185" height="100%"
backgroundAlpha="0"
paddingTop="0"
paddingBottom="0"
paddingLeft="0"
paddingRight="0"
borderStyle="none">
<mx:itemRenderer>
<mx:Component>
<mx:ModuleLoader url="productsView/menuBtn.swf"/>
</mx:Component>
</mx:itemRenderer>
</mx:List>
</mx:Application>
我的模块
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
width="185"
paddingLeft="3"
paddingRight="3"
paddingTop="3"
paddingBottom="3"
backgroundColor="#FFFFFF"
backgroundAlpha="0.8"
borderStyle="solid">
<mx:Image id="labelIcon" source="{data.icon}"/>
<mx:Label id="catagory" text="{data.catagory}"/>
</mx:Module>
I have a list compontent with an extrunal itemrenderer. My itemrender is a module that I would like to load in at runtime.
I have used the moduleloader tag but it doesn't display anthing. If i don't use the moduleloader tag but the <modulename>
instead of <productsView:menuBtn>
it displays the content.
Does anyone know how I should do this?
Application file with list component
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
initialize="catagories.send();">
<mx:HTTPService id="catagories" url="data/products.xml"
resultFormat="e4x"/>
<mx:XMLListCollection id="myXC"
source="{catagories.lastResult.product}"/>
<mx:List id="r" dataProvider="{myXC}"
width="185" height="100%"
backgroundAlpha="0"
paddingTop="0"
paddingBottom="0"
paddingLeft="0"
paddingRight="0"
borderStyle="none">
<mx:itemRenderer>
<mx:Component>
<mx:ModuleLoader url="productsView/menuBtn.swf"/>
</mx:Component>
</mx:itemRenderer>
</mx:List>
</mx:Application>
my module
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
width="185"
paddingLeft="3"
paddingRight="3"
paddingTop="3"
paddingBottom="3"
backgroundColor="#FFFFFF"
backgroundAlpha="0.8"
borderStyle="solid">
<mx:Image id="labelIcon" source="{data.icon}"/>
<mx:Label id="catagory" text="{data.catagory}"/>
</mx:Module>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题可能是您无法加载模块的多个实例。解决这个问题的方法是更改 url,让 Flex 认为每个调用都是唯一的。
尝试将 ModuleLoader 代码替换为
The issue may be that you cannot load several instances of a module. The way to get around this is by altering the url to make Flex think each call is unique.
Try replacing the ModuleLoader code with
<mx:ModuleLoader url="{'module.swf?' + Math.round(Math.random() * 10)}"/>