Гибкость: фоновое изображение не отображается в списке

У меня есть настраиваемый компонент с фоновым изображением. Но когда вы генерируете этот компонент с помощью 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>

Это наверное что-то мелкое, но я не могу его найти.


person Vinzcent    schedule 24.05.2011    source источник
comment
Вы пытались удалить значения scalegrid из директивы embed и проверить?   -  person user700284    schedule 25.05.2011
comment
@ user700284 Спасибо за ответ. Да, но не было разницы   -  person Vinzcent    schedule 25.05.2011


Ответы (3)


Следующее поможет решить проблему:

  1. Удалите backgroundImage = "{itemBackGround}" из элемента Canvas элемента itemRenderer.

  2. Добавьте следующее перед VBox в классе itemRenderer. Я протестировал его, и он отлично работает:

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

Если вы найдете лучший способ, обновите свой вопрос, чтобы сообщить нам,

Брайан

person Drenai    schedule 24.05.2011

Вы пробовали установить свойства alpha или backgroundAlpha в своем списке или, возможно, в itemRenderer?

Я предполагаю, что List либо рисует что-то поверх фона, либо препятствует рисованию фона. Однако вам придется пройти через код, чтобы знать наверняка.

person JeffryHouser    schedule 24.05.2011
comment
Спасибо за ответ. Если я установлю для backgroundAlpha значение 0 в списке, я не увижу фоновое изображение. Так что я полагаю, что список не позволяет рисовать фон. Откуда я знаю это наверняка? И как это решить. Спасибо! - person Vinzcent; 24.05.2011
comment
@Vinzcent Вам нужно будет пройти через код фреймворка и посмотреть, сможете ли вы понять, что происходит с itemRenderers; как они создаются и инициализируются. - person JeffryHouser; 24.05.2011

Я не пробовал это, но похоже, что компонент не создает несколько экземпляров / копий изображения для каждого средства визуализации

Возможное решение может заключаться в следующем: загрузить изображение в любом Singleton / Constant Class, например, в Model и NOT в компонент / список и используйте ссылку на атрибут модели в компоненте / списке, т. е. одну копию для всех средств визуализации.

Надеюсь, это сработает

person Imran    schedule 24.05.2011