`

FLEX习作:图片轮播(18种过渡效果随机应用)

    博客分类:
  • FLEX
阅读更多
主文件imgshow.mxml:
引用

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"
backgroundColor="0xFFFFFF" backgroundGradientColors="[0xFFFFFF,0xFFFFFF]" width="330" height="255">
<mx:Style>
ToolTip{
fontSize:14;
}
</mx:Style>
<local:FlexImageShow width="310" height="235" xmlPath="http://sensun.qz5z.com/flexexample/imgshow/imgxml.xml" x="10" y="10"/>
</mx:Application>


mxml组件FlexImageShow.mxml:
引用

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="410" height="310"
borderColor="#9A9A9A" borderStyle="solid" backgroundColor="0xFFFFFF"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
creationComplete="init()"
xmlns:viewStackEffects="org.efflex.viewStackEffects.*">
<mx:Script>
<![CDATA[
import mx.controls.LinkButton;
import mx.controls.SWFLoader;
import mx.core.UIComponent;
import mx.controls.Label;
import org.efflex.viewStackEffects.ViewStackEffect;
import mx.controls.Image;
import mx.containers.Box;
import mx.controls.Alert;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;

[Embed(source="assets/bg.swf")]
private var bgswf:Class;
[Embed(source="assets/zhizhen.swf")]
private var zhizhen:Class;
private var imgXml:XML;
private var _xmlPath:String="";//加载xml的地址
private var _delay:uint=1000;//轮播的时间间隔(5000毫秒)
private var loadIndex:uint=1;//正在加载哪一张
public var currentIndex:uint=0;//正在播放哪一张(第一张为0)
private var effectNum:uint=18;//所有效果数目
private var mytimer:Timer;

private function init():void{
System.useCodePage=true;
mytimer=new Timer(_delay,5);
mytimer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete);
if(_xmlPath!=""){
var xmlLoader:URLLoader=new URLLoader();
xmlLoader.addEventListener(ProgressEvent.PROGRESS,onLoadingXml);
xmlLoader.addEventListener(Event.COMPLETE,onLoadedXml);
xmlLoader.load(new URLRequest(_xmlPath));
}else{
loadBar.label="没有加载图片数据";
}
}
private function onLoadingXml(event:ProgressEvent):void{
var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
loadBar.setProgress(numPerc, 100);
loadBar.label ="正在载入图片数据 "+numPerc+"%";
loadBar.validateNow();
}
private function onLoadedXml(event:Event):void{
imgXml=new XML(event.target.data);
loadImg();
}
private function loadImg():void{
if(loadIndex>imgXml.children().length()){//超过最后一张了
//设置指针停在第一位置
var zz:Image=new Image();
zz.source=zhizhen;
zz.name="zhiz";
zz.y=10;
zz.x=zzBox.width-imgXml.children().length()*26+1;
zzBox.addChild(zz);
loading.visible=false;//隐藏进度条
vs.selectedIndex=0;
resetTimer();//开始轮播
}else{
loadBar.setProgress(0,100);
loadBar.label="正在载入第"+loadIndex+"张图片 0%";
loadBar.validateNow();
var image:SWFLoader=new SWFLoader();
image.buttonMode=true;
image.useHandCursor=true;
image.addEventListener(MouseEvent.CLICK,onClick);
image.addEventListener(ProgressEvent.PROGRESS,onLoading);
image.addEventListener(Event.COMPLETE,onLoaded);
image.load(imgXml.img.@path[loadIndex-1]);
}
}
private function onClick(event:MouseEvent):void{
navigateToURL(new URLRequest(imgXml.img.@url[currentIndex]),"_blank");
}
private function onLoading(event:ProgressEvent):void{
var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
if(numPerc>99)numPerc=99;
loadBar.setProgress(numPerc, 100);
loadBar.label ="正在载入第"+loadIndex+"张图片 "+numPerc+"%";
loadBar.validateNow();
}
private function onLoaded(event:Event):void{
//将进度条设到起点
loadBar.setProgress(99,100);
loadBar.label="正在处理第"+loadIndex+"张图片……";
loadBar.validateNow();
//处理加载的图片
var tempImg:SWFLoader=event.target as SWFLoader;
if((tempImg.contentWidth/tempImg.contentHeight)>=(this.width-10)/(this.height-10)){
//如果宽高比大于或等于场景的宽高比,按高的比例缩放
tempImg.height=this.height-10;
tempImg.width=Math.round(tempImg.contentWidth*(this.height-10)/tempImg.contentHeight);
tempImg.x=-(tempImg.width-this.width+10)/2;//将图片水平居中
}else{//如果宽高比小于场景的宽高比,按宽的比例缩放
tempImg.width=this.width-10;
tempImg.height=Math.round(tempImg.contentHeight*(this.width-10)/tempImg.contentWidth);
tempImg.y=-(tempImg.height-this.height+10)/2;//将图片垂直居中
}
var box:Canvas=new Canvas();//新建一个容器
box.width=this.width-10;
box.height=this.height-10;
box.horizontalScrollPolicy="off";
box.verticalScrollPolicy="off";
box.addChild(tempImg);//将图片加到容器内
//添加标题和背景
if(imgXml.img.@title[loadIndex-1]!="" && imgXml.img.@title[loadIndex-1]!=undefined){//没有标题就不加
var bg:Image=new Image();
bg.width=this.width-10;
bg.height=35;
bg.source=bgswf;
box.addChild(bg);
var l:Label=new Label();
l.width=this.width-14;
l.height=35;
l.x=4;
l.y=0;
l.setStyle("color",0xFFFFFF);
l.setStyle("fontSize",20);
l.setStyle("fontWeight","bold");
l.text=imgXml.img.@title[loadIndex-1];
box.addChild(l);
}
box.x=4;
box.y=4;
vs.addChild(box);//将容器加到viewStack中
//加载按钮
var btBox:Box=new Box();
btBox.width=25;
btBox.height=16;
btBox.setStyle("backgroundColor",0x9A9A9A);
btBox.setStyle("backgroundAlpha",0.50);
var bt:LinkButton=new LinkButton();
bt.width=25;
bt.height=16;
bt.label=loadIndex.toString();
bt.addEventListener(MouseEvent.CLICK,onBtClick);
bt.setStyle("cornerRadius",0);
bt.setStyle("color",0xFFFFFF);
bt.setStyle("textRollOverColor",0xFFFFFF);
bt.setStyle("textSelectedColor",0xFFFFFF);
bt.setStyle("rollOverColor",0xFF0000);
bt.setStyle("selectionColor",0xFF0000);
bt.setStyle("paddingLeft",1);
bt.setStyle("paddingRight",1);
bgBox.addChild(btBox);
P_btBox.addChild(bt);
loadIndex++;
loadImg();//加载下一张
}
private function onTimerComplete(event:TimerEvent):void{
var prveIndex:uint=currentIndex;
currentIndex++;
if(currentIndex>=imgXml.children().length())currentIndex=0;
qiehuan(prveIndex,currentIndex);
}
private function qiehuan(fromIndex:uint,toIndex:uint):void{
var box_prve:Canvas=vs.getChildAt(fromIndex) as Canvas;
var box_next:Canvas=vs.getChildAt(toIndex) as Canvas;
var randN:uint=randNum();
switch(randN){
case 1:
box_prve.setStyle("hideEffect",effect1);
box_next.setStyle("showEffect",effect1);
break;
case 2:
box_prve.setStyle("hideEffect",effect2);
box_next.setStyle("showEffect",effect2);
break;
case 3:
box_prve.setStyle("hideEffect",effect3);
box_next.setStyle("showEffect",effect3);
break;
case 4:
box_prve.setStyle("hideEffect",effect4);
box_next.setStyle("showEffect",effect4);
break;
case 5:
box_prve.setStyle("hideEffect",effect5);
box_next.setStyle("showEffect",effect5);
break;
case 6:
box_prve.setStyle("hideEffect",effect6);
box_next.setStyle("showEffect",effect6);
break;
case 7:
box_prve.setStyle("hideEffect",effect7);
box_next.setStyle("showEffect",effect7);
break;
case 8:
box_prve.setStyle("hideEffect",effect8);
box_next.setStyle("showEffect",effect8);
break;
case 9:
box_prve.setStyle("hideEffect",effect9);
box_next.setStyle("showEffect",effect9);
break;
case 10:
box_prve.setStyle("hideEffect",effect10);
box_next.setStyle("showEffect",effect10);
break;
case 11:
box_prve.setStyle("hideEffect",effect11);
box_next.setStyle("showEffect",effect11);
break;
case 12:
box_prve.setStyle("hideEffect",effect12);
box_next.setStyle("showEffect",effect12);
break;
case 13:
box_prve.setStyle("hideEffect",effect13);
box_next.setStyle("showEffect",effect13);
case 14:
box_prve.setStyle("hideEffect",effect14);
box_next.setStyle("showEffect",effect14);
break;
case 15:
box_prve.setStyle("hideEffect",effect15);
box_next.setStyle("showEffect",effect15);
break;
case 16:
box_prve.setStyle("hideEffect",effect16);
box_next.setStyle("showEffect",effect16);
break;
case 17:
box_prve.setStyle("hideEffect",effect17);
box_next.setStyle("showEffect",effect17);
default:
box_prve.setStyle("hideEffect",effect0);
box_next.setStyle("showEffect",effect0);
}
moveZhizhen(fromIndex,toIndex);
vs.selectedIndex=toIndex;
resetTimer();
}
private function onBtClick(event:MouseEvent):void{

var fromIndex:uint=currentIndex;
var bt:LinkButton=event.target as LinkButton;
var toIndex:uint=P_btBox.getChildIndex(bt);
if(toIndex!=fromIndex){
currentIndex=toIndex;
qiehuan(fromIndex,toIndex);
}
}
private function resetTimer():void{
if(mytimer.running==true)mytimer.stop();
mytimer=new Timer(_delay,5);
mytimer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete);
mytimer.start();
}
private function randNum():uint{
return Math.floor(Math.random()*effectNum);
}
private function moveZhizhen(fromIndex:uint,toIndex:uint):void{
myMove.xFrom=zzBox.width-(imgXml.children().length()-fromIndex)*26+1;
myMove.xTo=zzBox.width-(imgXml.children().length()-toIndex)*26+1;
var zz:Image=zzBox.getChildAt(0) as Image;
myMove.target=zz;
myMove.play();
}
//getter&setter
public function set delay(value:uint):void{
_delay=value;
}
public function get delay():uint{
return _delay;
}
public function set xmlPath(value:String):void{
_xmlPath=value;
}
public function get xmlPath():String{
return _xmlPath;
}
]]>
</mx:Script>

<mx:Move id="myMove" duration="500"/>
<mx:WipeLeft id="wipeOut" duration="1000"/>
<mx:WipeRight id="wipeIn" duration="1000"/>
<viewStackEffects:Fade id="effect1"/>
<viewStackEffects:Scroll id="effect0"/>
<viewStackEffects:Scroll id="effect14" direction="vertical"/>
<viewStackEffects:FlipPapervision3D id="effect2" direction="left"/>
<viewStackEffects:FlipPapervision3D id="effect15" direction="right"/>
<viewStackEffects:FlipPapervision3D id="effect16" direction="down"/>
<viewStackEffects:FlipPapervision3D id="effect17" direction="up"/>
<viewStackEffects:FadeZoom id="effect3"/>
<viewStackEffects:FadeZoom id="effect10" verticalAlign="top" horizontalAlign="left"/>
<viewStackEffects:FadeZoom id="effect11" verticalAlign="top" horizontalAlign="right"/>
<viewStackEffects:FadeZoom id="effect12" verticalAlign="bottom" horizontalAlign="left"/>
<viewStackEffects:FadeZoom id="effect13" verticalAlign="bottom" horizontalAlign="right"/>
<viewStackEffects:Grid id="effect4"/>
<viewStackEffects:GridZoom id="effect5"/>
<viewStackEffects:Squash id="effect6"/>
<viewStackEffects:Squash id="effect7" direction="right"/>
<viewStackEffects:Squash id="effect8" direction="down"/>
<viewStackEffects:Squash id="effect9" direction="up"/>
<mx:ViewStack id="vs" x="4" y="4"/>
<mx:Canvas left="4" bottom="4" right="4" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="100%" height="30">
<mx:HBox id="bgBox" horizontalScrollPolicy="off" verticalScrollPolicy="off" horizontalAlign="right" verticalAlign="bottom" horizontalGap="1" width="100%" height="30"/>
<mx:Canvas id="zzBox" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="100%" height="30"/>
<mx:HBox id="P_btBox" horizontalScrollPolicy="off" verticalScrollPolicy="off" horizontalAlign="right" verticalAlign="bottom" horizontalGap="1" width="100%" height="30"/>
</mx:Canvas>
<mx:VBox id="loading" width="100%" height="100%" backgroundColor="0xFFFFFF" verticalAlign="middle" horizontalAlign="center">
<mx:ProgressBar id="loadBar" width="70%" mode="manual" label="正在载入图片数据 0%" labelWidth="{loadBar.width}"
fontSize="12" color="0x9A9A9A" textAlign="center"/>
</mx:VBox>
</mx:Canvas>
分享到:
评论

相关推荐

    flex 图片轮播效果

    在IT行业中,图片轮播效果是一种常见的网页设计元素,它能够以吸引人的动态方式展示一组图片,提升用户体验。"flex 图片轮播效果"是指利用Adobe Flex这一开发框架来实现这种功能。Flex是一款基于ActionScript和MXML...

    Flex4:开发RIA应用程序

    Flex4是Adobe公司推出的一个用于开发丰富互联网应用程序(Rich Internet Applications,简称RIA)的框架。RIA是指拥有桌面应用程序体验的网络应用程序,它能够提供响应快速、功能丰富并且更接近桌面软件用户体验的...

    左右图片轮播网页效果图

    在网页设计中,图片轮播是一种常见的展示方式,它能够以动态的形式呈现多张图片,增强用户体验,同时节省页面空间。"左右图片轮播网页效果图"通常是指一个包含左右箭头,可以前后切换图片的交互式组件。这种效果在...

    可以用在网页上flex 图片轮播,带源码.使用非常简单

    4. **图片轮播组件**:这种组件通常包括自动播放、手动切换、过渡效果等功能,用于在有限的空间内展示多张图片,常用于网站首页或产品展示等场景。 5. **动态加载图片**:通过后端代码(如ASP.NET)动态更改图片...

    前端图片轮播效果

    在前端开发中,图片轮播效果是常见的网页交互设计元素,用于展示一组图片或内容,增强用户体验。"前端图片轮播效果"这个主题涉及到的主要知识点包括HTML、CSS、JavaScript以及可能用到的库和框架。 首先,HTML是...

    flex 广告图片切换

    在前端开发中,"flex 广告图片切换" 是一种常见的设计模式,它利用 CSS3 的 Flexbox(弹性盒布局)来实现广告轮播图的效果。这种效果通常应用于网站的首页或者产品展示区域,用于吸引用户的注意力并展示多张重要的...

    as3.0图片切换随机效果(10种)

    在本文中,我们将深入探讨AS3.0中的图片切换随机效果,这是一项广泛应用于互动媒体设计、游戏开发以及网页动画的技术。AS3.0(ActionScript 3.0)是Adobe Flash Professional和Flex Builder等工具中使用的编程语言,...

    图片轮播效果另类展示

    在网页设计中,图片轮播效果是一种常见的交互展示方式,用于在有限的空间内展示多张图片。本项目名为“图片轮播效果另类展示”,它包含独立的样式表(CSS)、脚本(JavaScript)文件以及图片资源,展示了作者对图片...

    Flex4:开发RIA应用程序 pdf

    Flex4是Adobe公司推出的一种强大的富互联网应用(Rich Internet Application, RIA)开发框架,它主要基于ActionScript和MXML,用于构建具有丰富图形界面和交互功能的Web应用程序。本书《Flex4:开发RIA应用程序》...

    八组图片轮播效果

    轮播效果是一种常见的网页元素,它可以在有限的空间内展示多张图片或内容,通常包括自动切换、手动导航、过渡动画等功能。 【描述】中的"通过h5和css3编写"指出了实现这一效果的核心技术。HTML5是现代网页开发的...

    中间图片放大,两边缩小,轮播效果

    【中间图片放大,两边缩小,轮播效果】是一种常见的网页设计技术,主要应用于网站的头部、产品展示或图片展示区域,以吸引用户的注意力并提供视觉上的动态体验。这种效果通常是通过JavaScript库,如jQuery实现的,它...

    自适应居中图片轮播

    2. CSS样式:利用CSS控制轮播的外观,包括图片的大小、过渡效果、按钮样式等。同时,使用媒体查询确保在不同分辨率下仍保持居中。 3. JavaScript控制:通过JavaScript来实现图片的自动切换、手动导航以及触摸滑动等...

    带箭头左右轮播效果网页特效

    在网页设计领域,轮播效果是一种常见的展示方式,它能够以有限的空间展示多个内容,比如图片、文字或者视频。"带箭头左右轮播效果"是这种设计的一个具体实现,通常用于网站的首页或者产品展示区域,使得用户可以通过...

    flex 图片浏览,flex图片滚动效果

    Flex是一种基于ActionScript和MXML的开源框架,主要用于构建富互联网应用程序(RIA)。在本案例中,"flex 图片浏览,flex图片滚动效果"是指利用Flex技术实现的动态图片展示和浏览功能,它能为用户提供流畅、交互性强...

    flexwheel flex实现的图片滚动效果

    "Flexwheel"是基于Flex实现的一种特定组件,主要用于创建图片滚动和时间滚动的效果。这种效果常用于增强用户体验,尤其是在展示大量信息或者产品图片时,能够以吸引人的方式呈现内容。 首先,我们要理解什么是Flex...

    flex aladino 图片展示特效

    在本文中,我们将深入探讨如何使用Flex实现一个名为"Aladino"的图片展示特效,这是一种纵向滚动的图片展示效果,具有强烈的视觉吸引力。虽然原作者未能将其转换为横向滚动,但我们可以通过理解Flex布局原理来尝试...

    js带按钮的九宫格图片轮播滚动代码

    在JavaScript编程领域,"js带按钮的九宫格图片轮播滚动代码"是一个常见的应用场景,主要涉及网页动态展示和交互设计。这样的功能通常用于产品展示、图像广告或用户界面的创新设计。以下将详细讲解这一知识点的相关...

    flex滚动条三种实现方式

    在前端开发中,Flex布局(Flexible Box)是一种用于创建弹性盒模型的CSS3模块,它极大地增强了网页布局的灵活性。而当内容超出容器时,滚动条的出现是必不可少的。在Flex布局中,我们可以有几种不同的方法来实现滚动...

    Jquery图片轮播

    在Web开发中,图片轮播是一种常见的交互元素,它能够以动态的方式展示多张图片,提升用户体验。本篇文章将详细解析如何使用jQuery来创建一个简单的图片轮播Demo。 首先,我们需要了解jQuery库。jQuery是一个轻量级...

    flex 两个图片播放小程序

    在IT行业中,Flex是一种强大的开发框架,主要用于构建富互联网应用程序(RIA)。在这个“flex 两个图片播放小程序”项目中,我们可以看到它被用来创建一个图片浏览应用,支持图片的放大和缩小功能,提供了用户友好的...

Global site tag (gtag.js) - Google Analytics