我有一个带有背景图片的自定义组件。 但是当你通过List中的ItemRenderer生成这个组件时,背景图像就消失了。
我做错了什么?
这是一张图片。第一个元素不是在列表中生成的,而是具有背景图像。其他三个是List的一部分,没有背景图像。
以下是List
的MXML代码<mx:VBox>
<solutionItems:displaySolutionItem /> <!-- This element shows the background image -->
<mx:List selectable="false"
useRollOver="false"
id="listControllers"
backgroundAlpha="1"
dataProvider="{controllers}" >
<mx:itemRenderer>
<fx:Component>
<solutionItems:displaySolutionItem /> <!-- These elements have nog background image -->
</fx:Component>
</mx:itemRenderer>
</mx:List>
</mx:VBox>
以下是<solutionItems:displaySolutionItem />
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundImage="{itemBackGround}"
backgroundSize="100%">
<mx:Script>
<![CDATA[
[Bindable]
[Embed(source="assets/Components/ContainerBackgrounds/BoxBg.png", scaleGridLeft="5", scaleGridRight="50", scaleGridTop="5", scaleGridBottom="50")]
private var itemBackGround:Class;
]]>
</mx:Script>
<mx:VBox
paddingBottom="10"
paddingLeft="10"
paddingRight="10"
paddingTop="10">
<mx:CheckBox id="chbControllerItem" label="NSL-4601" styleName="titleRed" />
<mx:HBox>
<mx:Image width="67" height="50" id="loader1" source="@Embed(source='assets/Components/ContainerBackgrounds/BoxBg.png')"/>
<mx:HBox>
<mx:VBox>
<mx:Label text="Cube size" styleName="formLabel" height="12" />
<mx:Label text="Cube config" styleName="formLabel" height="12" />
<mx:Label text="Display res" styleName="formLabel" height="12" />
<mx:Label text="DPI" styleName="formLabel" height="12" />
<mx:Label text="Price" styleName="formLabel" height="12" />
</mx:VBox>
<mx:Box>
<mx:Label text="50''" height="12" />
<mx:Text text="2x3 (1224mm x 3264mm)" height="12" />
<mx:Label text="WXGA (1360x768)" height="12" />
<mx:Label text="72 dpi" height="12" />
<mx:Label text="€ 101.000,00" height="12" />
</mx:Box>
</mx:HBox>
</mx:HBox>
</mx:VBox>
</mx:Canvas>
它可能很小,但我找不到它。
答案 0 :(得分:4)
以下将解决问题:
从itemRenderer的Canvas元素中删除backgroundImage =“{itemBackGround}”
在itemRenderer类中的VBox之前添加以下内容。我测试了它,它工作正常:
<mx:Canvas width="100%" height="100%" backgroundImage="{itemBackGround}" backgroundSize="100%"/>
如果您找到更好的方法,请务必更新您的问题以告知我们,
布赖恩
答案 1 :(得分:1)
您是否尝试在列表中或者在itemRenderer中设置alpha或backgroundAlpha属性?
我猜测列表要么在背景上绘制一些东西,要么阻止绘制背景。但是,您必须逐步通过代码才能确定。
答案 2 :(得分:1)
我没试过,但看起来像 组件未为每个渲染器创建多个图像实例/副本
可能的解决方案可能是,加载图像在任何 Singleton / Constant Class 中,例如模型和 NOT 在组件/列表中,并在组件/列表中使用模型的属性引用,即所有渲染器的一个副本。
希望这有效