`
柴秉承
  • 浏览: 87326 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Flex特效扩展

    博客分类:
  • FLEX
阅读更多

使用Flex开发的图片轮播效果,其中图片切换的效果采用的是effect.org的组件详细查看http://favzone.com/article.asp?id=83 并下载Efflex_v0[1].03_fx3_fp9.swc 包,本例子是根据网上搜尋的例子加以修改,共有20个切换效果,可以根据effect里的效果继续开发新的切换效果,比如3D的效果

Flash动画
在线播放


其中图片轮播的组件 ImagesView.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="410" height="210"
borderColor="#9A9A9A" borderStyle="solid" backgroundColor="0xFFFFFF"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
creationComplete="init()"
xmlns:viewStackEffects="org.efflex.mx.viewStackEffects.*">
<mx:Script>
<![CDATA[
import mx.controls.LinkButton;
import mx.controls.SWFLoader;
import mx.core.UIComponent;
import mx.controls.Label;
import org.efflex.mx.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.jpg")]
private var bgswf:Class;
[Embed(source="assets/finger.swf")]
private var finger: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=20;//所有效果数目
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=finger;
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();
//randN = 19;
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);
break;
case 18:
box_prve.setStyle("hideEffect",effect18);
box_next.setStyle("showEffect",effect18);
break;
case 19:
box_prve.setStyle("hideEffect",effect19);
box_next.setStyle("showEffect",effect19);
break;
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:Slide id="effect0"/>
<viewStackEffects:Fade id="effect1"/>
<viewStackEffects:Slide id="effect14"/>
<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"/>
<viewStackEffects:FlipPapervision3D id="effect18" direction="down"/>
<viewStackEffects:Pixelate id="effect19" />
<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>


调用组件的页面 main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
backgroundColor="#FFFFFF"
xmlns:news="com.favzone.news.*"
>
<news:ImageNews width="310" height="155" xmlPath="http://www.favzone.com/news/webservice/imgxml.xml" x="10" y="10"/>

</mx:Application>

红色字体请替换为符合自己的配置

其中使用到的背景和指针资源如下:



Flash动画
在线播放

转自:http://www.favzone.com/article.asp?id=88

分享到:
评论

相关推荐

    FLEX特效FLEX特效FLEX特效FLEX特效

    Flex特效在IT行业中主要指的是Adobe Flex,它是一个用于构建富互联网应用程序(RIA)的开源框架。Flex使用MXML和ActionScript编程语言,可以创建交互性强、视觉效果丰富的Web应用程序。在网页设计和开发中,Flex特效...

    flex特效整理好久了

    【标题】:“flex特效整理好久了” Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。Flex特效是这个框架中的一个重要组成部分,它为开发者提供了丰富的视觉表现力,使得用户界面...

    flex特效编辑器 开发flex游戏的利器

    Flex特效编辑器是一款专为开发基于Adobe Flex技术的游戏而设计的强大工具。它简化了特效的创建过程,使得开发者能够更加高效地构建具有视觉冲击力的游戏体验。Flex是一种开放源码的框架,主要用于构建富互联网应用...

    flex 特效demo

    Flex特效Demo是一个基于Adobe Flex技术实现的特效展示项目,它旨在帮助开发者理解和学习如何在Flex应用中创建各种吸引人的视觉效果。Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript编程...

    Flex 果冻特效Demo

    8. **自定义组件**:如果Flex的标准组件无法满足果冻特效的需求,开发者可以创建自定义组件,继承自现有组件并扩展其功能,以实现特定的果冻效果。 在"guodong"这个压缩包文件中,可能包含了实现Flex果冻特效的源...

    Flex特效包org

    Flex特效包"org.efflex.viewStackEffects.*"是一个专门针对Adobe Flex开发的库,用于在Flex应用程序中实现视图栈的动态效果。这个库主要关注于视图切换时的动画效果,提升用户体验,使应用在界面切换时更加平滑和...

    flex 特效拖动Panel变Window

    在Flex编程中,"flex特效拖动Panel变Window"是一个常见的交互设计,它涉及到用户界面(UI)的动态转换和响应式设计。这个功能允许用户通过拖动一个Panel(面板)来创建一个新的独立窗口(Window)。在本文中,我们将...

    Flex_特效之鱼眼特效

    提供的压缩包文件"Flex鱼眼特效"可能包含了实现这个特效的源代码,你可以通过学习和分析代码来深入理解其工作原理,并根据自己的需求进行定制和扩展。 总的来说,Flex鱼眼特效是一个结合了图形变形、事件处理和用户...

    flex_特效_源码_6种特效

    至于"flex特效整合"这个压缩包,它很可能包含了6种不同的Flex特效示例。这些示例可能涵盖以下几种常见特效: 1. **滑动/滚动效果**:在列表或容器中平滑地移动内容,常用于轮播图或导航菜单。 2. **淡入淡出效果**...

    Flex模拟Mac特效

    在本例中,我们关注的是如何使用Flex来模拟Mac操作系统的某些特效,特别是弹出框效果。 "Flex模拟Mac特效"这一主题主要涉及以下知识点: 1. Flex组件库:Flex提供了一系列预定义的UI组件,如Button、Label、...

    flex火焰效果 特效

    在本案例中,我们关注的是"flex火焰效果 特效",这是一个在Flex应用中创建动态、引人注目的视觉效果的技术。 Flex提供了一个强大的图形库,名为Flex元件库,其中包含多种预定义的UI组件,如按钮、文本框等。这些...

    Flex浏览杂志特效

    - 要实现独特的翻页效果,可能需要创建自定义组件,扩展Flex的现有组件。这涉及到理解和使用Component类,以及理解组件生命周期和渲染过程。 5. 性能优化: - 由于特效可能涉及大量的图形操作和动画,性能优化是...

    Flex 标签云 特效 漂亮

    在本主题中,我们将关注Flex中的一个独特功能——标签云特效。 **标签云(Tag Cloud)** 是一种流行的数据可视化方式,常用于展示大量标签或关键词,其中每个标签的大小或颜色代表其出现的频率或重要性。在Flex中...

    FLEX 3DMENU 3D菜单 + 特效

    3D菜单就是一个典型的自定义组件例子,它扩展了基础的Flex菜单组件,添加了3D旋转、平移等视觉效果。 5. **ActionScript 3.0**:作为Flex的主要编程语言,ActionScript 3.0提供了一种强大的面向对象的语法,支持类...

    DistortionEffects是一种flex3的扩展特效,支持立方体旋转等多种控件的3D变换

    总结来说,DistortionEffects是一个为Flex3增加高级3D特效能力的扩展库,通过提供的API和示例,开发者可以轻松实现各种动态的3D变形效果。配合`.actionScriptProperties`、`.flexProperties`、`.project`和`....

    Flex DistortionEffects (效果插件)

    这款插件扩展了Flex的功能,允许开发者在用户界面上实现各种创新的视觉效果,如波纹、挤压、拉伸等扭曲效果,提升用户体验。 在Flex项目中,效果(Effects)是用来改变组件状态或视觉属性的一系列动画。它们通常...

    flex3d特效

    Flex3D是Adobe Flex框架的一个扩展,允许开发者利用硬件加速的3D图形功能,从而在网页应用中实现复杂的视觉效果。 1. **Flex3D基础概念**: - **Adobe Flex**:一个用于构建富互联网应用程序(RIA)的开放源代码...

    Flex 立方体 旋转翻页特效

    Flex立方体旋转翻页特效是一种基于Adobe Flex技术实现的...如果你打算修改或扩展这个特效,你需要熟悉ActionScript 3.0编程,并对Flex的MXML和CSS有一定的了解,同时也可能需要学习和适配项目中使用的任何第三方3D库。

    flex 组件效果。特效。

    - `flex-grow`定义了元素在额外空间中可以扩展的比例。如果所有子元素都设置了非零值,那么它们将按比例分配额外的空间。 5. **FlexShrink**: - 当容器空间不足时,`flex-shrink`决定元素缩小的比率。默认值为1...

Global site tag (gtag.js) - Google Analytics