`
wangangie32
  • 浏览: 40302 次
  • 性别: 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 字体特效60种

    这些特效的实现不仅需要对Flash的时间轴和动画原理有深入理解,还需要熟悉ActionScript编程,以便在需要时进行自定义控制。此外,为了优化性能,开发者还需要考虑如何有效地管理和缓存文本对象,避免不必要的内存...

    FLASH特效制作小工具

    标题中的“FLASH特效制作小工具”指的是用于创建和编辑Adobe Flash动画效果的软件或应用程序。Flash是一种曾经广泛使用的多媒体创作平台,特别适用于制作交互式的网页元素、动画和小游戏。它允许用户通过时间轴控制...

    flash特效源代码

    【标签】"时钟"指示了这些Flash特效可能与时间显示相关。在Flash中,开发者可以创建各种各样的时钟界面,从简单的数字时钟到复杂的模拟时钟,甚至带有动画和互动元素。时钟特效可能涉及实时同步系统时间、使用...

    31个FLASH特效源码

    标题"31个FLASH特效源码"指出,这是一个包含多个Flash特效的资源集合。这些源码可以是各种动画效果、交互设计或游戏等,每个都展示了Flash平台的不同功能和创意应用。通过分析和研究这些源码,学习者能够深入理解...

    12款精美FLASH文字特效

    标签“FLASH 文字特效”进一步确认了这个压缩包的内容,它包含了12个不同的Flash文件(.fla格式),每个文件代表一个独特的文字特效。FLA文件是Flash的源文件格式,包含所有图形、动画、脚本和其他元素,可以使用...

    FLASH文字特效制作软件

    标题中的“FLASH文字特效制作软件”指的是用于创建和编辑具有文字特效的Adobe Flash(现称为Adobe Animate)动画的工具。这款软件使用户无需具备深厚的编程或设计技能,也能轻松制作出引人注目的动态文字效果。在...

    Flash光线特效源文件.rar

    标题中的“Flash光线特效源文件.rar”表明这是一个包含Flash光线特效的源代码压缩包,意味着我们可以深入学习和修改这些特效的实现方式。描述中提到,这个特效是通过矢量化技术来绘制的,使得最终的Flash文件体积较...

    彩色烟花绽放flash特效

    "彩色烟花绽放flash特效"是一个专用于创建动态视觉效果的资源,它利用Adobe Flash这一曾经非常流行的动画软件来设计绚丽多彩的烟花绽放场景。 Flash是一款强大的矢量图形和动画编辑工具,其动画功能尤其强大,可以...

    Flash相册特效.zip

    JavaScript特效-图片相册标签提示我们,这个Flash相册可能是通过JavaScript进行封装,以便在不支持Flash的环境中也能运行。JavaScript是一种广泛使用的客户端脚本语言,它可以在用户的浏览器上运行,无需服务器端的...

    左右滑动式Flash菜单特效.rar

    “Flash源码-菜单按钮”的标签表明,这个特效是基于Adobe Flash技术实现的。Flash是一款强大的多媒体创作工具,常用于创建动态图形、动画以及交互式内容。在这个特效中,Flash的ActionScript编程语言被用来控制菜单...

    Flash相册特效

    在本文中,我们将深入探讨Flash相册特效的原理、实现方式以及其在各种场景中的应用。 一、Flash相册特效的原理 Flash相册特效主要基于Adobe Flash平台,利用ActionScript编程语言和时间轴控制来实现动画效果。...

    flash 网页特效 (1)

    在描述中提到的"包含源文件"意味着我们可以深入研究代码实现,这对于学习和理解Flash特效的创建过程至关重要。 1. 动画原理:Flash基于时间轴的动画制作是其核心特性之一。通过在时间轴上放置和调整关键帧,可以...

    Flash制作电影片头特效动画.rar

    首先,我们来深入了解一下Flash中的动画原理。Flash基于时间轴的概念,允许用户在时间线上逐帧创建动画。这种帧动画是通过绘制或导入图像,然后在不同的时间点上调整这些图像的位置、大小、透明度等属性来实现的。...

    图片滑动展开的flash动画特效.rar

    "其它动画"标签暗示了这个特效可能不局限于基本的图片切换,可能还有其他视觉效果,如淡入淡出、平滑过渡或者其他动态效果。这些特效可能通过关键帧动画或者时间轴控制来实现,或者是通过编程逻辑动态生成。 压缩包...

    FLASH MX2004 动画特效素材

    【标题解析】:“FLASH MX2004 动画特效素材”这个标题表明这是一个与Adobe Flash MX 2004版本相关的资源集合,主要聚焦在动画特效方面。Flash MX 2004是Adobe(当时名为Macromedia)发布的一款经典动画创作软件,...

    Flash光照特效源文件.rar

    标签“Flash源码-视觉动画”暗示了这个压缩包的核心内容:它是关于视觉艺术与编程技术的结合。源码不仅揭示了动画背后的逻辑,还展示了如何通过编程技巧来增强视觉表现。对于想要提升自己Flash编程技能,尤其是对...

    喜庆放烟花Flash动画特效,烟花爆炸效果.rar

    "喜庆放烟花Flash动画特效,烟花爆炸效果.rar"这个压缩包文件正是这样一个利用Flash技术创作的动画资源,主要包含了喜庆场合中烟花绽放的动态效果。 首先,我们要了解Flash源码。Flash源码是由ActionScript语言编写...

    Flash绳子动画特效.rar

    首先,我们要理解Flash中的动画原理。Flash基于帧的概念,通过在不同的时间点上绘制不同的画面,形成连续的动画效果。在创建绳子动画时,通常会利用ActionScript(AS)编程语言,结合图形和物理模拟来实现动态效果。...

    超炫的Flash图片特效及源文件.zip

    综上所述,这个资源包对于那些对Flash特效和Web设计感兴趣的人来说非常有价值。它提供了学习和探索的机会,使用户能够理解并复制这些特效,甚至可以将它们转化为现代Web技术,如CSS3。通过深入研究源文件,开发者...

    简约的Flash图片淡入淡出轮显切换特效.rar

    一、特效原理 Flash图片淡入淡出轮显切换特效,是通过Flash ActionScript编程实现的。ActionScript是一种面向对象的脚本语言,常用于创建交互式的动画和应用程序。在该特效中,ActionScript控制图片按预定的时间...

Global site tag (gtag.js) - Google Analytics