flash特效原理:图片切换滚动

今天,我们来试玩一样东西,这个东西叫图片切换滚动,其实贴切一点应该叫图片轮播。时下图片轮播作为web方面在各大网站已经非常流行,这种图片轮播非常经典,前段时间花了两天写了像一个QQ视频网站看到的效果。

参考效果地址:http://v.qq.com/music/index.html

要想玩,但是我比较懒,所以在分解他们效果的时候,顺便查询网站里面一个xml里面的数据,只是为了演示作用,故此只是借用了他们的xml数据内容。

查看:http://v.qq.com/music/pic.xml里面的xml信息可以查看到里面图片和描述 以及一些视频地址链接。我们只是需要获取到里面数据并进行分析保存起来。

<?xml version="1.0" encoding="UTF-8" ?> - <root> - <item> <sid>0</sid> <bpurl>/video/play.html?vid=s0090IljcFW</bpurl> <url>http://imgcache.qq.com/qqlive/images/i1305516206_1.jpg</url> <link>/video/play.html?vid=s0090IljcFW</link> - <title> - <!--[CDATA[ 刘惜君《怎么唱情歌》MV首播 ]]> </title> - <subtitle> - <![CDATA[ “透明系女生”身陷两大型男无法自拔! ]]> </subtitle> </item> - <item> <sid>1</sid> <bpurl>/video/play.html?vid=A0090V89apA</bpurl> <url>http://imgcache.qq.com/qqlive/images/i1305195532_1.jpg</url> <link>/video/play.html?vid=A0090V89apA</link> - <title> - <![CDATA[ 震撼有力!2NE1新MV《lonely》 ]]> </title> - <subtitle> - <![CDATA[ 韩国女子天团回归,柔美单曲给炎炎夏日带来一丝清凉! ]]> </subtitle> </item> - <item> <sid>2</sid> <bpurl>/video/play.html?vid=M0090YAejKV</bpurl> <url>http://imgcache.qq.com/qqlive/images/i1305026066_1.jpg</url> <link>/video/play.html?vid=M0090YAejKV</link> - <title> - <![CDATA[ 谢娜自导自演最新MV震撼出炉 ]]> </title> - <subtitle> - <![CDATA[ 青春动力、活泼立志,最新MV《蓝色巧克力》俏皮来袭! ]]> </subtitle> </item> - <item> <sid>3</sid> <bpurl>/video/play.html?vid=X0090zlLq5P</bpurl> <url>http://imgcache.qq.com/qqlive/images/i1305006822_1.jpg</url> <link>/video/play.html?vid=X0090zlLq5P</link> - <title> - <![CDATA[ 终极挑逗!辣妹蕾哈娜最新MV ]]> </title> - <subtitle> - <![CDATA[ 全新时尚大片,带你领略加州绝美风光… ]]> </subtitle> </item> - <item> <sid>4</sid> <bpurl>/video/play.html?vid=p0090sSzkSC</bpurl> <url>http://imgcache.qq.com/qqlive/images/i1305014875_1.jpg</url> <link>/video/play.html?vid=p0090sSzkSC</link> - <title> - <![CDATA[ 郭富城章子怡:《最爱》主题曲 ]]> </title> - <subtitle> - <![CDATA[ 顾长卫新片主题曲《一直都在》首度曝光,感动上映! ]]--> </subtitle> </item> </root>

主类执行:

调用URLLoader 类对其xml 进行读取,读取完毕后,把数据转至photoItem 类,把需要的数据设置一下,如链接,图片地址,和文字描述。 在设置图片位置的时候,记录他们位置,以便在时间间隔调用的时候,进行切换下一个位置。

轮播当中需要工作:使用时间调度方式让图片进行轮播,

点击图片的时候可以进行轮播

点击中间图片的时候跳转到相应的链接处

切换图片时候 需要对图片进行暗处理,并隐藏主要文字

切换位置的时候,使用TweenLite进行轮播到下一个位置,

判断左右切换的方向。

深度排序

初始化图片的时候记录初始位置

流程:

加载xml数据-->实例化效果-->实例化图片元件,并赋予数据--->进行时间调度切换

当中交互里面,经常涉及到左右两只切换的方式,这两种方式使用频率比较高,在coverFlow 和一些轮播当中使用制作需要解决这两种交互的做法。

制作这个效果之前,当时参考了双链表的方式来制作,但是在制作的时候,双链表并没有完全满足个人需求,于是采用循环链表来替代制作,这种结构对付这种效果十分有意思,借助队列思想 和链表当中思维结合, 可以帮助我们解决实际上一些交互的难题。

package { import flash.display.Sprite; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.StageAlign; import flash.display.StageScaleMode; import org.summerTree.utils.XMLManager; import org.summerTree.effect.FollowEffect; import org.summerTree.model.Photoparam; public class Main extends Sprite { private var dataPath:String = "http://v.qq.com/music/pic.xml"; private var effect:FollowEffect; public function Main() { if (stage) { initData(); } else { addEventListener(Event.ADDED_TO_STAGE,initData); } } private function initData(event:Event=null):void { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; //加载xml var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE,onLoadDataCompleteHandler); loader.addEventListener(IOErrorEvent.IO_ERROR,onLoadDataErrorHandler); loader.load(new URLRequest(dataPath)); } private function onLoadDataCompleteHandler(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE,onLoadDataCompleteHandler); event.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onLoadDataErrorHandler); var xmlData:* = event.currentTarget.data; effect=new FollowEffect(); effect.targetPointNumber = 2; effect.initData(XMLManager.getXMLData(xmlData)); effect.addEventListener(Event.COMPLETE,onLoadCompleteHandler); } private function onLoadDataErrorHandler(event:IOErrorEvent):void { trace("数据加载失败了"); } private function onLoadCompleteHandler(event:Event):void { effect.removeEventListener(Event.COMPLETE,onLoadCompleteHandler); var n:int = 0; var len:int = effect.photoLength; //设置好队列顺序。 for (var i:int=0; i<len; i++) { effect.getPhotoItem(i).x = stage.stageWidth / 2 - (2 - i) * effect.getPhotoItem(i).width / 2; effect.getPhotoItem(i).y = stage.stageHeight / 2; effect.getPhotoItem(i).scaleX=effect.getPhotoItem(i).scaleY=1-Math.abs(2-i)*0.2; if (i!=2) { effect.photoList[i].data.isTextVisible = false; } effect.setParameters(new Photoparam(effect.getPhotoItem(i).x,effect.getPhotoItem(i).scaleX)); } effect.sortZ(); addChild(effect); effect.startMotion(); } } }

图片元件:记录xml 当中描述,设置图片地址,和图片显示。id是图片标记

package org.summerTree.display { import flash.display.Sprite; import flash.display.Loader; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.system.LoaderContext; import flash.display.Bitmap; import flash.display.Shape; import flash.filters.GlowFilter; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.geom.Point; public class PhotoItem extends Sprite { private var loader:Loader; private var title:String; private var bitmap:Bitmap; private var link:String; //点击链接 private var _isTextVisible:Boolean; private var photoContain:Sprite=new Sprite();//图片容器 private var bigTitle:TextField; private var blackMask:Shape; //黑色背景 public var id:int; public var level:int;//深度 public var isClick:Boolean = false;//是否允许点击 public var positionXY:Point;//记录开始的默认位置值 public function PhotoItem(url:String) { this.buttonMode = true; loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadImageCompleteHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onIOErrorHandler); loader.load(new URLRequest(url),new LoaderContext(true)); } private function onLoadImageCompleteHandler(event:Event):void { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoadImageCompleteHandler); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,onIOErrorHandler); bitmap = Bitmap(event.currentTarget.content); addChild(photoContain); photoContain.x = - bitmap.width / 2; photoContain.y = - bitmap.height / 2; photoContain.addChild(bitmap); drawBaseBottom(bitmap.width,bitmap.height); blackMask=new Shape(); setTextDescription(); photoContain.addChild(blackMask); this.dispatchEvent(new Event(Event.COMPLETE)); } private function onIOErrorHandler(event:IOErrorEvent):void { trace("错误了"); } private function drawBaseBottom(width:Number,height:Number):void { var shape:Shape=new Shape(); shape.graphics.beginFill(0xCCCCCC); shape.graphics.drawRect(-5,-5,width+10,height+10); shape.graphics.endFill(); shape.filters = [new GlowFilter(0x999999,0.3)]; photoContain.addChildAt(shape,0); } //设置文本信息 public function setText(info:String):void { title = info; addEventListener(Event.ENTER_FRAME,render); } //设置图片链接 public function set imageUrl(value:String):void { this.link = value; } public function get imageUrl():String { return this.link; } //设置文本是否可见 public function set isTextVisible(value:Boolean):void { this._isTextVisible = value; photoContain.getChildAt(2).visible = value; blackMask.graphics.clear(); if (value) { blackMask.graphics.clear(); } else { blackMask.graphics.beginFill(0x333333,0.5); blackMask.graphics.drawRect(0,0,bitmap.width,bitmap.height); blackMask.graphics.endFill(); } } public function get isTextVisible():Boolean { return this._isTextVisible; } private function render(event:Event):void { if (bitmap) { removeEventListener(Event.ENTER_FRAME,render); bigTitle.text = title; } } private function setTextDescription():void { var contain:Sprite=new Sprite(); contain.graphics.beginFill(0x000000,0.5); contain.graphics.drawRect(0,0,bitmap.width,bitmap.height/4); contain.graphics.endFill(); photoContain.addChild(contain); var button:PlayButton = new PlayButton(40,40); contain.addChild(button); button.x = 8; button.y = 10; contain.y = bitmap.height - contain.height; bigTitle=new TextField(); bigTitle.defaultTextFormat = new TextFormat("黑体",12,0xffffff); bigTitle.multiline = true; bigTitle.autoSize = TextFieldAutoSize.LEFT; bigTitle.mouseEnabled = false; bigTitle.text = title; bigTitle.x = 60; bigTitle.y = contain.height - bigTitle.textHeight - 15; contain.addChild(bigTitle); blackMask.graphics.clear(); } } }

播放按钮图标:使用绘图api绘制

package org.summerTree.display { import flash.display.Sprite; public class PlayButton extends Sprite { public function PlayButton(width:Number,height:Number) { this.graphics.beginFill(0x333333,0.5); this.graphics.drawRoundRect(0,0,width,height,5,5); this.graphics.endFill(); this.graphics.lineStyle(2,0xffffff,0.5); this.graphics.drawRoundRect(-1,-1,width+2,height+2,5,5); this.graphics.beginFill(0xffffff,0.5); this.graphics.moveTo(width/3,height/3); this.graphics.lineTo(width/3,height*0.7); this.graphics.lineTo(width-width/3,height/2); this.graphics.lineTo(width/3,height/3); this.graphics.endFill(); } } }

交互当中常用接口:

package org.summerTree.effect { //常见左右交互当中的使用的接口 public interface IEffect { function next():void; function preview():void; } }

轮播效果主实现方法:当中使用了循环链表。

让其实现左右切换的交互。

package org.summerTree.effect { import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.MouseEvent; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.events.*; import org.summerTree.display.PhotoItem; import org.summerTree.datastruct.CLinkedList; import org.summerTree.datastruct.DLinkNode; import org.summerTree.model.Photoparam; import org.summerTree.utils.Config; import com.greensock.TweenLite; import flash.geom.Point; public class FollowEffect extends Sprite implements IEffect { public var timeInterval:Number = 5000;//每隔一段时间播放j间隔 private var timer:Timer; private var currentTargetPhoto:PhotoItem;//当前的图片 private var isCurrentPage:Boolean = false; private var nodeList:CLinkedList=new CLinkedList(); private var photoNums:int = 0;//图片数目 public var targetPointNumber:int;//目标放大点 private var parameters:Array = [];//保存路径 public var motionDirection:String="right";//运动方向 public static const RIGHT:String="right"; public static const LEFT:String="left"; public function FollowEffect() { } public function initData(data:Array):void { if (data.length == 0) { return; } var len:int = data.length; photoNums = len; for (var i:int=0; i<len; i++) { var photoItem:PhotoItem = new PhotoItem(data[i].url); photoItem.addEventListener(Event.COMPLETE,onLoadImageCompleteHandler); photoItem.addEventListener(MouseEvent.CLICK,onGotoPage); if (data[i].link.indexOf(Config.domain) == -1) { data[i].link = "http://"+Config.domain+ data[i].link; } photoItem.setText(data[i].title); photoItem.imageUrl = data[i].link; photoItem.id = i; addChild(photoItem); nodeList.appendNode(photoItem); } currentTargetPhoto = nodeList.nodeList[1].data; addEventListener(MouseEvent.ROLL_OVER,onMotionHandler); addEventListener(MouseEvent.ROLL_OUT, onMotionHandler); } private function onLoadImageCompleteHandler(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE,onLoadImageCompleteHandler); photoNums--; if (photoNums==0) { this.dispatchEvent(new Event(Event.COMPLETE)); } } private function onGotoPage(event:MouseEvent):void { if (PhotoItem(event.currentTarget).isClick) { navigateToURL(new URLRequest(event.currentTarget.imageUrl)); } else { flow(PhotoItem(event.currentTarget)); } } private function onMotionHandler(event:MouseEvent):void { if(event.type==MouseEvent.ROLL_OVER) { stopMotion(); } else { startMotion(); } } //开始运动 public function startMotion():void { if(timer==null) { timer = new Timer(timeInterval); timer.addEventListener(TimerEvent.TIMER,onTimerHandler); timer.start(); } else { timer.start(); } } //停止运动 public function stopMotion():void { timer.stop(); } private function onTimerHandler(event:TimerEvent):void { if(motionDirection=="right") { next(); } else if(motionDirection=="left") { preview(); } } //获取图片列表 public function get photoList():Array { return nodeList.nodeList; } //获取图片列表长度 public function get photoLength():int { return nodeList.nodeList.length; } //获取图片单项 public function getPhotoItem(index:int):PhotoItem { return nodeList.nodeList[index].data; } //添加基本图片参数 public function setParameters(value:Photoparam):void { parameters.push(value); } //设置时间间隔 public function setTimeInterval(value:Number):void { timeInterval=value; } //设置运动方向 public function setMotionDirection(value:String):void { motionDirection=value; } //左右的交互切换过程 public function flow(target:PhotoItem):void { currentTargetPhoto = target; //判断左右 if (target.id > targetPointNumber) { walkLeft(); } else if (target.id<targetPointNumber && target.id!=targetPointNumber) { walkRight(); } sortZ(); } //左方向交互 public function preview():void { if (nodeList.nodeOf(currentTargetPhoto).nextNode != null) { currentTargetPhoto = nodeList.nodeOf(currentTargetPhoto).nextNode.data as PhotoItem; flow(currentTargetPhoto); } } //右方向交互 public function next():void { if (nodeList.nodeOf(currentTargetPhoto).preNode != null) { currentTargetPhoto = nodeList.nodeOf(currentTargetPhoto).preNode.data as PhotoItem; flow(currentTargetPhoto); } } private function walkLeft():void { var len:int = nodeList.nodeList.length; var n:int = 0; var temp:int = 0; var index:int = 0; for (var i:int=len-1; i>-1; i--) { if (i==len-1) { temp = nodeList.nodeList[i].data.id; } if (i==0) { n = len - 1; nodeList.nodeList[i].data.id = temp; } else { n = i - 1; nodeList.nodeList[i].data.id = nodeList.nodeList[n].data.id; } index = nodeList.nodeList[i].data.id; if (currentTargetPhoto!=nodeList.nodeList[i].data) { nodeList.nodeList[i].data.isClick = false; } if (nodeList.nodeList[i].data.id != targetPointNumber) { nodeList.nodeList[i].data.isTextVisible = false; nodeList.nodeList[i].data.isClick = false; } else { nodeList.nodeList[i].data.isTextVisible = true; nodeList.nodeList[i].data.isClick = true; } TweenLite.to(nodeList.nodeList[i].data,0.5,{x:parameters[index].x,scaleX:parameters[index].scale,scaleY:parameters[index].scale}); } } private function walkRight():void { var len:int = nodeList.nodeList.length; var n:int = 0; var temp:int = 0; var index:int = 0; for (var i:int=0; i<len; i++) { if (i==0) { temp = nodeList.nodeList[i].data.id; } if (i==len-1) { n = 0; nodeList.nodeList[i].data.id = temp; } else { n = i + 1; nodeList.nodeList[i].data.id = nodeList.nodeList[n].data.id; } index = nodeList.nodeList[i].data.id; if (currentTargetPhoto!=nodeList.nodeList[i].data) { nodeList.nodeList[i].data.isClick = false; } if (nodeList.nodeList[i].data.id != targetPointNumber) { nodeList.nodeList[i].data.isTextVisible = false; nodeList.nodeList[i].data.isClick = false; } else { nodeList.nodeList[i].data.isTextVisible = true; nodeList.nodeList[i].data.isClick = true; } TweenLite.to(nodeList.nodeList[i].data,0.5,{x:parameters[index].x,scaleX:parameters[index].scale,scaleY:parameters[index].scale}); } } //深度排序() public function sortZ():void { var n:int = 0; while (n<this.numChildren) { var index:int = nodeList.nodeList[n].data.id; if (index<targetPointNumber) { this.setChildIndex(nodeList.nodeList[n].data,index); } else if (index==targetPointNumber) { this.setChildIndex(nodeList.nodeList[n].data,this.numChildren-1); } else if (index>targetPointNumber && index!=this.numChildren-1) { this.setChildIndex(nodeList.nodeList[n].data,index); } else if (index==this.numChildren-1) { this.setChildIndex(nodeList.nodeList[n].data,targetPointNumber); } n++; } } } }

获取xml 数据:

package org.summerTree.utils { public class XMLManager { //获取xml ,返回xml的数据 public static function getXMLData(data:String):Array { var array:Array=[]; var xml:XML=null; try{ xml=new XML(data); } catch(e:Error) { trace("数据发生了错误了"); } if(xml==null) return array; xml.ignoreWhitespace = true; var itemList:XMLList = xml..item; var len:int= itemList.length(); for(var i:int=0;i<len;i++) { var sonXML:XMLList=itemList[i].children(); var dataObject:Object={}; var nodeLen:int=sonXML.length();//节点长度 for(var j:int=0;j<nodeLen;j++) { var name:String = itemList[i].children()[j].name().toString(); var value:* = itemList[i].children()[j].toString(); dataObject[name]=value; } array.push(dataObject); } return array; } } }

配置文件

package org.summerTree.utils { public class Config { public static var domain:String="v.qq.com"; } }

循环链表使用:

package org.summerTree.datastruct { import org.summerTree.datastruct.DLinkNode; public class CLinkedList { private var _size:int = 0; public var head:DLinkNode = null;//头节点 public var tail:DLinkNode = null;//尾节点 private var first:DLinkNode=null; private var last:DLinkNode=null; private var NodeList:Array=[]; public function CLinkedList() { } //插入节点 public function appendNode(obj: * ):void { var newNode:DLinkNode = new DLinkNode(obj); if (this.isEmpty()) { head = newNode; } else { tail.nextNode = newNode; newNode.preNode = tail; newNode.nextNode=head; head.preNode=newNode; } tail = newNode; _size++; NodeList.push(newNode); } //搜索当前节点 public function nodeOf(obj: * ):DLinkNode { var len:int=NodeList.length; for(var i:int=0;i<len;i++) { if(NodeList[i].data==obj) { return NodeList[i]; } } return null; } //判断是否空链表 public function isEmpty():Boolean { return size == 0; } //返回节点数 public function get size():int { return _size; } public function get nodeList():Array { return NodeList; } } }

节点:

package org.summerTree.datastruct { public class DLinkNode { public var data:*; public var preNode:DLinkNode; public var nextNode:DLinkNode; public function DLinkNode(obj:*) { preNode = nextNode = null; data = obj; } } }

记录他们参数

package org.summerTree.model { //记录图片的位置和缩放信息 public class Photoparam { public var x:Number; public var scale:Number; public function Photoparam(x:Number,scale:Number) { this.x=x; this.scale=scale; } } }

除了这个之后,我们可以观看到百度视频当中的,也有这种flash制作,他们的特点是实用,替换数据方便,显示效果也比较有意思。

不妨去参考他们的swf 来尝试制作一个属于自己轮播效果。

http://video.baidu.com/hd/index/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,gxwz.fla 光线文字(33KB) 2,hrwz.zip 环绕旋转字(5KB) 3,kzfwz.zip 空中飞舞字(6KB) 4,sdwz.zip 闪电文字(6KB) 5,sjlz2.zip 数据流字(8KB) 6,twfz1.zip 天外飞字1(5KB) 7,twfz2.zip 天外飞字2(5KB) 8,fydwz.zip 发烟的文字(110KB) 9,szdwx.zip 水中的文字(5KB) 10,zzwz.zip 遮罩文字(4KB) 11,bdz.zip 飘动字(3KB) 12,ltz.zip 立体字(8KB) 13,jgz1.zip 激光字(7KB) 14,jgz1-2.zip 激光字2(7KB) 15,twfz3.zip 天外飞字3(4KB) 16,ycpz.zip 洋葱皮字(6KB) 17,fswz.zip 飞闪文字(17KB) 18,xzdwz.zip 旋转的文字(30KB) 19,bzz.zip 爆炸字(5KB) 20,cyz.zip 残影字(6KB) 21,dyz1.zip 叠影字(6KB) 22,fxz.zip 飞絮字(5KB) 23,fcz.zip 风吹字(4KB) 24,sbz.zip 水波字(6KB) 25,xwz.zip 旋涡字(5KB) 26,zgwz.zip 烛光文字(5KB) 27,3dgs.zip 3D跟随(9KB) 28,xxsb.zip 线性鼠标(5KB)<End. 29,scyw.zip 色彩烟雾(119KB) 30,bssb.zip 变色鼠标(5KB) 31,zzsb.zip 遮罩鼠标(4KB) 32,sbgs7.zip 文字跟随1(5KB) 33,wzgs.zip 文字跟随2(5KB) 34,kzgm.zip 控制光芒(6KB) 35,zlwz.zip 坠落文字(6KB) 36,shiny.zip 很cool的文字演示(109KB) 37,hekt.zip 又一款飞行文字,短小精悍,先看看吧;(5KB) 38,maskzoom.zip 一款流动的文字,做法简单,效果不错,值得推荐;(3KB) 39,wraptext.zip 转动文字 模拟文字围绕Y 轴作旋转,一个简单的动画;(3KB) 40,mech.zip 液晶文字 有点像是从液晶显示屏显示出来的文字效果,动感方面也做的不错;(9KB) 41,superholo.zip 3D文字 立体效果应该不是FLASH 做出来的,利用其他的软件把文体做好,然后再导入FLASH 里输出成动画;(103KB) 42,around.zip 旋转文字 一款文字围绕球体旋转,产生立体效果的动画;(4KB) 43,bigm.zip 摇摇字 其实是个3D立体字,背景文字的旋转效果很好看;(44KB) 44,wind.zip 风吹文字 文字随风而起,然后又落下,不要以为是SWISH 做的,看看源码就知道作者是花了不少心思的;(10KB) 45,emboss.zip 立体文字 教你怎么做一种立体文字的方法,源码内容是些简单的E 文;(4KB) 46,thematrix.zip 瀑布文字 一种简单,易做,效果又好的文字效果;用做背景相当不错;(10KB) 47,RotatingWords.zip 滚动文字 产生一种纵向的旋转效果,其实做法很简单,一看源码你就清楚啦;(4KB) 48,neontext.zip 霓虹文字效果;(3KB) 49,windblown.zip 风吹文字 类似SWISH 里面文字随风落下、随风飞起的效果,附带具体说明(不过是E文的);(12KB) 50,letters-Ehtesham.zip 立体字 旋转的立体文字,是利用其他软件制作好AI路径,然后导入FLASH中来完成动画;(50KB) 51,sparkletext.zip 速度文字 运用MASK 制作出来的一种运动文字效果,与瀑布文字有异曲同工之处;(24KB) 52,swirl.zip 扭曲 文字被强行扭曲180度的效果;(3KB) 53,textlights2.zip 大光灯文字 很棒的一种文字效果,文字被模拟成探照灯一样在夜空中扫来扫去,这款文字在晃动的过程中还会转换颜色;(5KB) 54,spheretext.zip 大光灯文字 很棒的一种文字效果,如同夜晚探照灯在夜空扫来扫去;(67KB) 55,shexian700-400-eff.zip 射线文字效果 文字出现的边缘有射线射出,很酷的效果(8KB) 56,fei.zip 飞行文字 动画中使用ACTION来控制键盘输入的文字,使文字按两种预设的效果来生成动画;(6KB) 57,input.zip 文字输入 在FLASH 的键盘里输入文字,然后将其变成动画的内容;(20KB) 58,scroltext400-300-app.zip 滚动文字 就象是按下网鼠中间的滑轮,上下滚动网页一样的效果(5KB) 59,200142102101.zip 字体辉光效果这是一个比较酷(炫)的特殊效果,最早出现在 Ray Of Light 网站,现在您也可以试一下辉光的效果了!快快动手吧(8KB) 60,2000121902101.zip Flash 5 点阵汉字特效这是一个用点阵方式的汉字实现的一些效果的集合,如果您自己动手会制作出惊人的东西(16KB) 61,2000121802102.zip 激光字 一个老的效果:用激光来写字,关心特殊效果的朋友一定要看看(6KB)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值