我对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块来说都是非常独特的应用程序)
答案 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
建议的方法