之前项目中有用到这种效果,图片幻灯显示,一般来说JS实现的较多,Flex的话,貌似之前有找到过Flex3的实现方案,so 我就借鉴一下咯
当然根据实际应用情况,将代码升级到Flex4,然后又根据自己的应用需要增加了些控制效果。
闲话不多说,先上代码
PictureSlide.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
initialize="initializeHandler(event)">
<fx:Script>
<![CDATA[
import com.gs.support.AppEventBus;
import flash.events.MouseEvent;
import mx.controls.Image;
import mx.events.FlexEvent;
import spark.components.HGroup;
import spark.effects.Move;
[Bindable]
public var picGroup:Array=[];
[Bindable]
public var backColor:uint=0x000000;
[Bindable]
public var bindingKey:String;
private static const PIC_ARRAY_INIT:String="customCom_PictureSlide_DataInit";
public static const PIC_URL:String="picUrl";
public static const PIC_NAME:String="picName";
private var pic_num:int;
private static function getInstanceBindingKey():String{
return PIC_ARRAY_INIT+"_"+new Date().time;
}
protected function initializeHandler(event:FlexEvent):void
{
bindingKey=bindingKey?bindingKey:getInstanceBindingKey();
AppEventBus.addListener(bindingKey,function(event:AppEventBus):void{
picGroup=event.data as Array;
if(picGroup.length>0){
fillPic(picGroup);
}
});
}
private function fillPic(picArray:Array):void{
for (var i:int=0;i<picArray.length ;i++)
{
var item:Object=picArray[i];
if(item[PIC_URL]){
if(item[PIC_NAME]){
createOnespic(item[PIC_URL],item[PIC_NAME]);
}else{
createOnespic(item[PIC_URL]);
}