如何使用 moduleloader 标签将 Flex 模块加载为列表项渲染器?

发布于 2024-08-10 04:44:48 字数 1542 浏览 3 评论 0原文

我有一个带有外部项目渲染器的列表组件。我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长安忆 2024-08-17 04:44:48

问题可能是您无法加载模块的多个实例。解决这个问题的方法是更改​​ 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)}"/>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文