flex 4多图像加载通用功能

时间:2011-01-24 10:21:42

标签: image actionscript-3 flex flex4

我对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>

我在NavigatorContent上有一个contentCreationComplete事件......一旦触发,我将一些img加载到mx Image组件中。我在NavigatorContent容器中有很多这些BorderContainer,因此在ContentCreation函数中加载了很多图像。

我还在BorderContainer组件中添加了一个按钮组件,以便用户可以从许多BorderContainer + img组合中手动重新加载特定的img。提到的click事件只是将img加载到img块中。问题是我不想为所有按钮编写事件处理程序。

我如何制作通用功能..

我觉得它会像

protected function imgRefresh_clickHandler(event:MouseEvent):void    {     this.lhrPIE.load( “......”);    }

如何使这个函数变得通用,并且通常引用每个Container的img块而不引用ID(这对于每个img块来说都是非常独特的应用程序)

2 个答案:

答案 0 :(得分:1)

如果您计划在每个BorderContainer中使用不同的按钮,并且内容的顺序相同并且在每个容器中固定(即,Image始终是第二项),那么您可以使用索引来触发加载相应的图片:

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

其中 1 对应于Image组件所在的索引。此代码假定已经设置了图像上的source属性。

答案 1 :(得分:0)

以这种方式做得好...... .hope帮助某人......

        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;
        }
        }

我还是面对一个问题。当我的图像无法加载时,我得到一个“图像缺失图标”。并且我的点击命中区域缩小为该小图标而不是原始图像。我可以将Click处理程序添加到Bordercontainer并使用@merv

建议的方法