`
wangangie32
  • 浏览: 37968 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

flash特效原理:标签云

阅读更多

  
  其实标签云是一个比较常见的特效类,在wondefl里面已经被做烂了,经典之余,涉及到知识点,是基于球体和旋转方面的数学应用,在这方面而言,标签云的制作并不是十分难,多少会有很多的意思,不妨尝试制作一下。这个程序已经是上一年写的,多少被丢到哪里去没有理了。今天写在这里,表示记录一下。
  颜色有点难看。
  
  简单测试: import org.summerTree.effect.TagCloud; import org.summerTree.effect.TagText; import flash.text.TextFormat; import org.summerTree.effect.IEffect; var tagArray:Array = ["Flash","Flex","AIR","JAVA","DePHI","JAVAScript", "OPENGL","网易","百度","搜狐","雅虎","谷歌","苹果","微软","甲骨文","Sun","adobe","盛大","腾讯","JAVAScript","OPENGL"]; var tagColor:Array = [0xff0000,0xFF8000,0xFFFF00,0x99CC99,0x00FFFF,0xFF 00FF,0xff0000,0xFF8000,0xFFFF00,0x99CC99,0x00FFFF,0 xFF00FF,0xff0000,0xFF8000,0xFFFF00,0x99CC99,0x00FFF F,0xFF00FF,0x99CC99,0x00FFFF,0xFF00FF]; var tagUrls:Array = ["http://www.baidu.com","http://www.baidu.com","ht tp://www.baidu.com","http://www.baidu.com","http:// www.baidu.com","http://www.baidu.com","http://www.b aidu.com","http://www.baidu.com","http://www.baidu. com","http://www.baidu.com","http://www.baidu.com", "http://www.baidu.com","http://www.baidu.com","http ://www.baidu.com","http://www.baidu.com","http://ww w.baidu.com","http://www.baidu.com","http://www.bai du.com","http://www.baidu.com","http://www.baidu.co m","http://www.baidu.com"]; var tags:TagCloud=new TagCloud();//创建标签云 tags.x = 250; tags.y = 200; addChild(tags); var effect:IEffect = new TagText(tagArray,tagUrls,tagColor,new TextFormat("Arial",20,0)); tags.appendTag(effect); 粒子模型。一个很实用的模型构建 //该类为粒子模型 //常用的粒子模型工具 package org.summerTree.effect { public class Particle { public var x:Number;//x 位置 public var y:Number;//y 位置 public var z:Number;//z 位置 public function Particle() { } } } 对应的接口: package org.summerTree.effect { public interface IEffect { function makeEffect():void; function getArray():Array; } } //TagCloud.as 标签云 //author 夏天的树人 package org.summerTree.effect { import flash.display.Sprite; import flash.display.DisplayObject; import flash.display.BitmapData; import flash.events.Event; import flash.text.TextField; import flash.filters.GlowFilter; import flash.filters.BlurFilter; import flash.filters.BitmapFilterQuality; import flash.text.TextFormat; import flash.geom.Point; public class TagCloud extends Sprite { private var tagContainer:Sprite=new Sprite();//标签容器 public var _speed:Number = 0.008;//速度 private var tags:Array; //标签数组 private var tag_len:int; //标签数组长度 private var fl:Number = 250; //焦距 private var p_list:Array = []; // 粒子列表 private var radius:Number=0; //半径 public function TagCloud() { addChild(tagContainer); } //添加标签 public function appendTag(effectObject:IEffect,radius:Number=140): void { addChild(DisplayObject(effectObject)); effectObject.makeEffect(); tags = effectObject.getArray(); tag_len = tags.length; this.radius=radius; for (var i:int=0; i<tag_len; i++) { tagContainer.addChild(tags[i]); var p:Particle=new Particle(); //球体uv分布,经纬度 var phi:Number = Math.acos((2 * (i + 1) - 1) / tag_len - 1); var theta:Number = Math.sqrt(tag_len * Math.PI) * phi; p.x = radius * Math.cos(theta) * Math.sin(phi); p.y = radius * Math.sin(theta) * Math.sin(phi); p.z = radius * Math.cos(phi); p_list.push(p); } init_motion(); } private function init_motion():void { addEventListener(Event.ENTER_FRAME,Run); } //开始旋转运动 public function startMotion():void { addEventListener(Event.ENTER_FRAME,Run); } //结束旋转 public function stopMotion():void { removeEventListener(Event.ENTER_FRAME,Run); } public function set speed(value:Number):void { _speed = value; } public function get speed():Number { return _speed; } //对容器进行鼠标交互 private function Run(event:Event):void { var angleY:Number=(stage.mouseX - stage.width * 0.5) * this.speed; var angleX:Number=(stage.mouseY - stage.height * 0.5) * this.speed; for (var i:int=0;i<tag_len;i++) { roteY(p_list[i],angleY); roteX(p_list[i],angleX); var scale:Number = fl / ( fl + p_list[i].z ); tags[i].scaleX = tags[i].scaleY = scale; tags[i].x = p_list[i].x * scale; tags[i].y = p_list[i].y * scale; tags[i].alpha=scale; } // sortZ(); } //利用坐标旋转x private function roteX(p:Particle,angle:Number):void { angle=angle*Math.PI/180; var py:Number = Math.cos(angle) * p.y - Math.sin(angle) * p.z; var pz:Number = Math.cos(angle) * p.z + Math.sin(angle) * p.y; p.y = py; p.z = pz; } //利用坐标旋转y private function roteY(p:Particle,angle:Number):void { angle=angle*Math.PI/180; var px:Number = Math.cos(angle) * p.x - Math.sin(angle) * p.z; var pz:Number = Math.cos(angle) * p.z + Math.sin(angle) * p.x; p.x = px; p.z = pz; } //Z的深度排序 private function sortZ():void { p_list.sortOn("z",Array.DESCENDING|Array.NUMERIC); //排序 for (var i:int=0; i<tag_len; i++) { var p:* = tags[i]; tagContainer.setChildIndex(p,i); } } } } //文本,用于标签文本 package org.summerTree.effect { import flash.display.Sprite; import flash.display.BitmapData; import flash.display.Bitmap; import flash.events.Event; import flash.text.TextField; import flash.filters.GlowFilter; import flash.filters.BlurFilter; import flash.filters.BitmapFilterQuality; import flash.text.TextFormat; import flash.events.MouseEvent; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.display.Shape; public class TagText extends Sprite implements IEffect { private var tag_List:Array;//标签列表 private var tag_len:int;//标签数组的长度 private var textFormat:TextFormat;//文本格式 private var glow:GlowFilter; //发光效果 private var contain_list:Array=[]; //标签内容 private var urls:Array=[];//连接地址 private var colors:Array; public function TagText(tag_List:Array,urls:Array,colors:Array,tex tFormat:TextFormat=null,glowColor:uint=0x00ff00) { glow = new GlowFilter (glowColor, 1, 8, 8, 2, BitmapFilterQuality.LOW, true, false); this.tag_List = tag_List; this.textFormat = textFormat; this.tag_len = tag_List.length; this.colors=colors; this.urls=urls; } //创建标签指定他们的文本和滤镜方式 private function buildTags():void { for (var i:int=0; i < tag_len; i++) { var txt:TextField=new TextField(); if (textFormat != null) { txt.defaultTextFormat = textFormat; } txt.selectable = false; txt.textColor=colors[i]; txt.text = tag_List[i]; txt.filters = [new BlurFilter(1.1,1.1)]; var txtW:Number = txt.textWidth + 4; var txtH:Number = txt.textHeight + 4; var bitmapdata:BitmapData = new BitmapData(txtW,txtH,true,0x01FFFFFF); bitmapdata.draw(txt); var contain:containEx=new containEx(); contain.url=urls[i]; addChild(contain); var bmp:Bitmap = new Bitmap(bitmapdata); var rect:Shape=new Shape(); contain.addChild(rect); contain.addChild(bmp); contain_list.push(contain); contain.addEventListener(MouseEvent.ROLL_OVER,onOv erHandler); contain.addEventListener(MouseEvent.ROLL_OUT,onOut Handler); contain.addEventListener(MouseEvent.CLICK,onClickH andler); } } private function onOverHandler(event:MouseEvent):void { event.currentTarget.buttonMode=true; event.currentTarget.filters = [glow]; event.currentTarget.getChildAt(0).graphics.clear() ; event.currentTarget.getChildAt(0).graphics.lineSty le(0,0xff0000); event.currentTarget.getChildAt(0).graphics.drawRec t(0,0, event.currentTarget.getChildAt(1).width, event.currentTarget.getChildAt(1).height); } private function onOutHandler(event:MouseEvent):void { event.currentTarget.buttonMode=false; event.currentTarget.filters = []; event.currentTarget.getChildAt(0).graphics.clear() ; } private function onClickHandler(event:MouseEvent):void { navigateToURL(new URLRequest(event.currentTarget.url)); } public function makeEffect():void { buildTags(); } public function getArray():Array { return contain_list; } } } import flash.display.Sprite; internal class containEx extends Sprite { public var url:String; public function containEx() { } }  如果不喜欢 TagText类,那么可以重写一个,可以实现接口IEffect,把对应标签文字添加到数组里面可以借用TagCloud 来尝试制作。
  好,睡觉了。功课记录完毕。
分享到:
评论

相关推荐

    flash特效flash特效flash特效flash特效

    flash特效flash特效flash特效flash特效flash特效flash特效flash特效

    标签云(flash)

    标签云(flash),标签云(flash),标签云(flash)

    flash特效 flash特效

    有些项目需要flash特效 特献出 含200个flash

    Flash鼠标特效:鼠标碰到就躲开.rar

    Flash鼠标特效:鼠标碰到就躲开,作为游戏制作时的碰撞检测模块,图片的小圆环,是不能被鼠标碰到的,不管你的鼠标移上哪里,它都会聪明的躲开,很有意思。

    flash立体标签云

    3D flash标签云,效果不错,应用到网站比较吸引眼球。

    标签云源代码(类似百度搜索风向标的Flash标签云)

    1Flash标签云 index.html页面里有tagcloud.swf和tagcloud.xml两个文件的连接,但是测试只能使用http的方式,不能使用文件夹路径, 所以使用时把tagcloud.swf和tagcloud.xml两个文件放在IIS或网站服务器下,就可以正常...

    FLASH特效软件,轻松制作FLASH特效

    FlaX 是一款制作 Flash 文字特效的工具,内置有许多效果,这些效果如果用 Flash 来制作的话,都是有相当难度的。但用 FlaX 只需几分钟就可以搞定。唯一遗憾的是:FlaX 不支持中文,我们只能通过把用 FlaX 导出的 SWF...

    Flash特效效果超多

    Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多Flash特效效果超多

    flash各种特效,源文件

    flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件flash各种特效,源文件

    网页特效大全JS特效,html特效,CSS特效,FLASH特效

    网页特效大全JS特效,html特效,CSS特效,FLASH特效.mht

    flash 字体特效60种

    flash 字体特效60种

    flash特效:游动的小鱼

    非常精美的flash小鱼,希望大家喜欢。很值得收藏

    网页FLASH特效(60多个)

    网页FLASH特效(60多个)---已损坏 30个带有源代码,使FLASH特效更具有适用性--可以使用,密码在解压右边

    FLASH 标签云 AS3

    FLASH 标签云 AS3,类似3D球滚动。

    flash特效小工具

    不会做flash没关系 通过这个可以轻松做出简单的flash特效 绝对值 可以插入图片 字体 特效 最后直接生成flash 特别适合做logo flash

    模仿百度标签云效果 flashAS3 XML

    用as3模仿百度标签云效果 读取xml文档 字体颜色 大小 文档大小 随意修改

    Flash乌云与雨滴特效

     Flash乌云与雨滴特效,黑压压的乌云布满了整个天空,乌云过后大雨就来了,大大的雨滴从天空落下,这些雨滴是Flash鼠绘出来的,是氏量的,放大也不会失真,整个场景不错,如果你在制作Flash短片,可将些场景放在你...

    flash+xml 3D超酷标签云

    flash+xml 实现3D标签云特效,可自定义修改,有兴趣的朋友可以研究下

    国外的Flash标签云导航.rar

    国外的Flash标签云导航,一个个标签,可点击打开的那种,像一朵云一样飘在眼前,然后消失,下一个标签继续飘过来,fla文件来自国外网站,一些博客网站喜欢用这种Flash格式的云标签效果。

    10个flash特效含源文件

    10个flash特效含源文件,都是很好看的。

Global site tag (gtag.js) - Google Analytics