apache-flex Flex:背景图像未显示在列表中

vkc1a9a2  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(183)

我有一个自定义组件,它有一个背景图像。但是当你在一个列表中通过一个ItemRenderer生成这个组件时,背景图像不见了。
我做错了什么?
下面是一个图像。第一个元素不是在列表中生成的,并且有一个背景图像。其他三个元素是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>

可能是一些小东西,但我找不到。

vwkv1x7d

vwkv1x7d1#

以下方法可以解决此问题:
1.从itemRenderer的Canvas元素中移除backgroundImage="{itemBackGround}”
1.在itemRenderer类中的VBox之前添加以下内容。我测试了它,它工作正常:

<mx:Canvas width="100%" height="100%" backgroundImage="{itemBackGround}" backgroundSize="100%"/>

如果您找到更好的方法,请更新您的问题,让我们知道,
布莱恩

mepcadol

mepcadol2#

您是否尝试过在List或itemRenderer中设置alpha或backgroundAlpha属性?
我猜List要么是在背景上绘制了一些东西,要么是阻止了背景的绘制。不过,您必须逐步执行代码才能确定这一点。

t98cgbkg

t98cgbkg3#

我没有尝试过,但看起来 * 组件没有为每个渲染器创建多个图像示例/副本 *
可能解决方案是,* 加载图像 * 在任何Singleton/Constant类中,如在Model中,NOTcomponent/list中,并使用 component/list 中 *Model属性引用 *,即所有渲染器一个副本
希望这有用

相关问题