flex4 множественная функция загрузки img - PullRequest
0 голосов
/ 24 января 2011

Я относительно новичок в платформе Flex 4 (только два три месяца под моим поясом). Я прерву его и доберусь до сути

<mx:TabNavigator....
<s:NavigatorContent...
<s:BorderContainer width="522" 
          height="138" 
          id="fstCont4" 
          backgroundAlpha="0" 
          dropShadowVisible="true" 
          x="568.25" y="177.1">
    <s:layout>
     <s:HorizontalLayout gap="0" verticalAlign="middle"/>
    </s:layout>
    <s:Label text="Lahore PIE" 
       rotation="-90"  
       fontWeight="normal" 
       fontFamily="Arial" 
       fontSize="18" 
       verticalAlign="middle" 
       textAlign="center" 
       fontStyle="normal"/>
    <mx:Image id="lhrPIE" 
        width="506" 
        height="138"/>
    <s:Button height="25" width="25" rotation="90" click="lhrPIE_Refresh_clickHandler(event)"/>
   </s:BorderContainer>

</s:NavigatorContent>
</mx:TabNavigator>

У меня есть событие contentCreationComplete на NavigatorContent ... и после его запуска я загружаю несколько изображений в компонент изображения mx. У меня есть много этих BorderContainer внутри контейнера NavigatorContent, и, следовательно, в ContentCreation загружается много изображений.

Я также добавил компонент кнопки в компонент BorderContainer, чтобы пользователи могли вручную перезагрузить определенный img из множества комбинаций BorderContainer + img. Как уже упоминалось, событие click просто загружает img в блок img. Проблема в том, что я не хочу писать обработчики событий для всех кнопок.

как мне сделать универсальную функцию ..

У меня такое ощущение, что это будет что-то вроде

защищенная функция imgRefresh_clickHandler (событие: MouseEvent): пусто { this.lhrPIE.load ( "...."); }

Как я могу сделать эту функцию общей и ссылаться на блок img каждого Контейнера в общем, не ссылаясь на идентификатор (что, конечно, уникально для каждого приложения img)

Ответы [ 2 ]

1 голос
/ 24 января 2011

Если вы планируете иметь разные кнопки в каждом BorderContainer, и порядок содержимого одинаков и фиксирован в каждом контейнере (т. Е. Изображение всегда является вторым элементом), то вы можете использовать индекс для запуска загрузки соответствующее изображение:

imgRefresh_clickHandler(event:MouseEvent):void
{
    (event.target.parent.getChildAt(1) as Image).load();
}

, где 1 соответствует индексу, в котором находится компонент Image. Этот код предполагает, что свойство source на изображении уже установлено.

0 голосов
/ 26 января 2011

Молодец, вот так ... Надеюсь, это кому-то поможет ...

        private var imgPattren:RegExp = /......$/;
        private var imgLoc:Array = new Array("img1.png","img2.png");



       protected function imgRefresh_clickHandler(event:MouseEvent):void
        {
                             switch(String(imgPattren.exec(String(event.currentTarget))))
                            {
                            case 'isbTW1':
                                event.currentTarget.load(imgLoc[0]);
                                break;
                            case 'isbPIE':
                                event.currentTarget.load(imgLoc[0]);
                                break;
        }
        }

Как бы я ни сталкивался с проблемой. когда мое изображение не загружается, я получаю «изображение отсутствует значок». и моя область попадания клика уменьшена до этой маленькой иконки вместо исходного изображения. я могу добавить обработчик кликов в Bordercontainer и использовать метод, предложенный @ merv

...