Flex实现图片展播+渐出特效
实现的原理是通过XML配置图片数据,Flex读取XML文件获取到图片数据,然后将当前显示的图片设置为XML中配置的第一条数据的图片,通过四个按扭来控制图片播放的索引,同时为图片也加了事件处理函数,点击图片就切换到下一张图片。下面是最终效果图。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.core.UIComponent;
[Bindable]
private var picArray:ArrayCollection;
[Bindable]
private var index:Number = 0;
private function init():void
{
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(new URLRequest("data/pic.xml"));
}
private function onComplete(event:Event):void
{
var xml:XML = new XML(event.target.data);
picArray = new ArrayCollection();
for(var i:Number = 0;i <xml.children().length();i++)
{
var o:Object = new Object();
o.ImageUrl = xml.pic[i].imageUrl;
picArray.addItem(o);
}
}
private function onClickHandler(id:String):void
{
switch(id)
{
case "btn1":
this.index = 0;
break;
case "btn2":
if(this.index != 0)
{
this.index -= 1;
}
break;
case "btn3":
if(this.index != picArray.length-1)
{
this.index += 1;
}
break;
case "btn4":
this.index = picArray.length - 1;
break;
}
}
private function onImageClick(event:MouseEvent):void
{
if(this.index == picArray.length -1)
{
this.index = 0;
}
else
{
this.index++;
}
}
]]>
</mx:Script>
<mx:Panel x="73" y="78" width="701" height="536" layout="absolute" fontSize="12">
<mx:Image x="0" y="0" width="680" height="455" id="imageShow" completeEffect="{fadeIn}"
source="{picArray.getItemAt(index).ImageUrl}" click="onImageClick(event)"/>
<mx:Button x="154" y="463" label="第一张" id="btn1" click="onClickHandler(btn1.id)"/>
<mx:Button x="227" y="462" label="上一张" id="btn2" click="onClickHandler(btn2.id)"/>
<mx:Button x="300" y="462" label="下一张" id="btn3" click="onClickHandler(btn3.id)"/>
<mx:Button x="373" y="462" label="最后一张" id="btn4" click="onClickHandler(btn4.id)"/>
<mx:Label x="607" y="466" width="73" id="indexCount" color="#FF0030" fontWeight="bold"
text="{(index+1) + '/' + picArray.length}"/>
</mx:Panel>
<mx:Fade id="fadeIn" duration="2000" alphaFrom="0.18" alphaTo="1.0"/>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.core.UIComponent;
[Bindable]
private var picArray:ArrayCollection;
[Bindable]
private var index:Number = 0;
private function init():void
{
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(new URLRequest("data/pic.xml"));
}
private function onComplete(event:Event):void
{
var xml:XML = new XML(event.target.data);
picArray = new ArrayCollection();
for(var i:Number = 0;i <xml.children().length();i++)
{
var o:Object = new Object();
o.ImageUrl = xml.pic[i].imageUrl;
picArray.addItem(o);
}
}
private function onClickHandler(id:String):void
{
switch(id)
{
case "btn1":
this.index = 0;
break;
case "btn2":
if(this.index != 0)
{
this.index -= 1;
}
break;
case "btn3":
if(this.index != picArray.length-1)
{
this.index += 1;
}
break;
case "btn4":
this.index = picArray.length - 1;
break;
}
}
private function onImageClick(event:MouseEvent):void
{
if(this.index == picArray.length -1)
{
this.index = 0;
}
else
{
this.index++;
}
}
]]>
</mx:Script>
<mx:Panel x="73" y="78" width="701" height="536" layout="absolute" fontSize="12">
<mx:Image x="0" y="0" width="680" height="455" id="imageShow" completeEffect="{fadeIn}"
source="{picArray.getItemAt(index).ImageUrl}" click="onImageClick(event)"/>
<mx:Button x="154" y="463" label="第一张" id="btn1" click="onClickHandler(btn1.id)"/>
<mx:Button x="227" y="462" label="上一张" id="btn2" click="onClickHandler(btn2.id)"/>
<mx:Button x="300" y="462" label="下一张" id="btn3" click="onClickHandler(btn3.id)"/>
<mx:Button x="373" y="462" label="最后一张" id="btn4" click="onClickHandler(btn4.id)"/>
<mx:Label x="607" y="466" width="73" id="indexCount" color="#FF0030" fontWeight="bold"
text="{(index+1) + '/' + picArray.length}"/>
</mx:Panel>
<mx:Fade id="fadeIn" duration="2000" alphaFrom="0.18" alphaTo="1.0"/>
</mx:Application>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2008-06-15 应用OOP的设计过程演化(一)