- 浏览: 1084619 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://bbs.9ria.com/viewthread.php?tid=81628&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
发个小小的鼠标缓动跟随效果,看了《Making Things Move》后将里面的鼠标跟随扩展了一下
EaseToMouse.as
其中元件是外部加载的图像,以下是加载的代码
ArrowByLoad.as
这里使用外部加载的图像,如果在EaseToMouse.as初始化后直接设定ArrowByLoad类对象的scale值和alpha值,会发现并不能成功改变ArrowByLoad类对象的大小和透明度,因为EaseToMouse.as代码的执行和ArrowByLoad.as加载外部图像的代码执行为异步的,因此要在EaseToMouse内对加载完成事件进行监听才能成功改变scale值和alpha值。
当然,不加载外部图像,直接调用库中元件或者用[Embed]标签嵌入外部图像就不必要在EaseToMouse类中对加载行为进行监听了。
发个小小的鼠标缓动跟随效果,看了《Making Things Move》后将里面的鼠标跟随扩展了一下
EaseToMouse.as
package { import animation.trigonometry.ArrowByLoad; import flash.display.Sprite; import flash.events.Event; /** * @author Maliu */ [SWF(frameRate = 30)] //这里的元数据标签要Flex SDK才支持,Flash IDE不支持 public class EaseToMouse extends Sprite { private var arrow:ArrowByLoad; //鼠标跟随的元件,外部载入 private var easing:Number = 0.5; //缓动值,决定跟随速度的快慢,可自己尝试修改该值以观察效果 private var vx:Number = 0; //x轴速度 private var vy:Number = 0; //y轴速度 private var angle:Number; //角度,由dy与dx得到 private var dx:Number; //目标与当前元件的x轴距离 private var dy:Number; //目标与当前元件的y轴距离 private var arrowArray : Array; //储存跟随对象的数组 private const numArrow:Number = 10; //跟随对象的数目 private const scaleValue:Number = 0.86; //基础缩放值 public function EaseToMouse() { init(); } //初始化 private function init():void { arrowArray = new Array(); for(var i:int = 0; i<numArrow; i++) { arrow = new ArrowByLoad(); addChild(arrow); arrowArray.push(arrow); } this.addEventListener(Event.ENTER_FRAME, onEnterFrame); arrow.addEventListener(Event.COMPLETE, setScale); //侦听加载事件的完成,解决异步引起的不能缩小元件的问题 } private function onEnterFrame(e:Event):void { for(var i:int = 0; i<numArrow; i++) { //因为数组里不包含鼠标的坐标,因此分开判断进行不同的传值 if(i > 0) { calEvery(arrowArray[i-1].x, arrowArray[i-1].y, arrowArray[i]); } else { calEvery(mouseX, mouseY, arrowArray[i]); } } } //计算传入currentArrow的rotation,需要传入dx和dy private function calRotation(currentArrow:ArrowByLoad, dx:Number, dy:Number):void { angle = Math.atan2(dy, dx); currentArrow.rotation = angle * 180/Math.PI; } //计算每个元件的缓动,传入不同的目标值和缓动对象 private function calEvery(targetX:Number, targetY:Number, currentArrow:ArrowByLoad):void { dx = targetX - currentArrow.x; dy = targetY - currentArrow.y; if(Math.abs(dx)<1 && Math.abs(dy)<1) { vx = 0; vy = 0; //currentArrow.x = targetX; //currentArrow.y = targetY; } else { vx = dx * easing; vy = dy * easing; calRotation(currentArrow, dx, dy); //currentArrow.x += vx; //currentArrow.y += vy; } currentArrow.x += vx; currentArrow.y += vy; } //给每个元件赋予不同的缩放值和透明度 private function setScale(e:Event):void { var n:Number = this.numChildren; var tempScale:Number = 0; var temp:ArrowByLoad; for(var i:int = 0; i<n; i++) { temp = arrowArray[i]; tempScale = Math.pow(scaleValue, i); temp.scaleX = tempScale; temp.scaleY = tempScale; temp.alpha = tempScale; } } } }
其中元件是外部加载的图像,以下是加载的代码
ArrowByLoad.as
package animation.trigonometry { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; /** * @author Maliu */ public class ArrowByLoad extends Sprite { private var _imgURL:String = "arrow-alt-right-black.png"; private var _bitmap:Bitmap; public function ArrowByLoad() { loadImg(); } private function loadImg():void { var loader:Loader = new Loader(); var request:URLRequest = new URLRequest(_imgURL); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); loader.load(request); } private function loaded(e:Event):void { _bitmap = e.target.content as Bitmap; _bitmap.smoothing = true; //将Bitmap属性smoothing设为true后消除锯齿,默认为false this.addChild(_bitmap); _bitmap.x = -_bitmap.width/2; _bitmap.y = -_bitmap.height/2; dispatchEvent(e); //加载完成后发送事件,用于外部侦听事件,解决异步问题 } } }
这里使用外部加载的图像,如果在EaseToMouse.as初始化后直接设定ArrowByLoad类对象的scale值和alpha值,会发现并不能成功改变ArrowByLoad类对象的大小和透明度,因为EaseToMouse.as代码的执行和ArrowByLoad.as加载外部图像的代码执行为异步的,因此要在EaseToMouse内对加载完成事件进行监听才能成功改变scale值和alpha值。
当然,不加载外部图像,直接调用库中元件或者用[Embed]标签嵌入外部图像就不必要在EaseToMouse类中对加载行为进行监听了。
- 鼠标缓动跟随.rar (8.4 KB)
- 下载次数: 15
发表评论
-
greenSock新老库
2012-08-07 13:25 0老库-做项目的时候比新库完全不抖啊 -
Starling开发的游戏源码
2012-07-26 17:13 0Starling开发的游戏源码 -
一个基于STARLING的TOWER塔防游戏
2012-07-24 15:27 0一个基于STARLING的TOWER塔防游戏 -
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
[转] [Flash/Flex] 加载SWF性能VS影片剪辑性能
2012-03-15 22:29 0http://bbs.9ria.com/viewthread. ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
greensock-as3
2012-02-23 21:26 0greensock-as3 -
禁止输入文本可以粘贴
2012-02-10 13:15 2316//禁止输入文本粘贴动作 private static ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
Flash_Rich_Text_Editor(完美的富文本编辑器)
2011-12-27 17:55 0Flash_Rich_Text_Editor(完美的富文 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
[转]三次贝尔曲线
2011-11-10 01:09 1923http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2937先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
Flash Player和Adobe AIR内部的垃圾回收机制
2011-10-29 22:37 0资讯类型: 翻译 来源页面: http://www.ad ...
相关推荐
鼠标跟随效果 二级缓动效果 as2.0源代码
自己写的已经非常完善了的摄像机脚本,挂在相机上赋个对象就可以直接用,多种视角多种效果,带缓动,代码开放可修改,注释齐全
4. **平滑过渡**:为了使动画更流畅,可以添加缓动效果。这可能需要用到`Storyboard`和`DoubleAnimation`来实现平滑的位移过渡。 5. **性能优化**:在大量元素跟随鼠标时,需要注意性能问题。可能需要使用`...
或者加入缓动函数,使跟随过程更平滑自然;还可以结合其他ActionScript功能,如颜色变化、大小缩放等,增加动画的视觉吸引力。 总的来说,掌握"flash鼠标跟随动画代码"不仅能让你熟练运用ActionScript,还能提升你...
同时,为了保证动画的平滑性,开发者需要考虑帧率控制和适当的缓动函数,以避免出现卡顿或不自然的跳变。 在压缩包中的“鼠标跟随任意形状窗口动画”可能包含源代码示例、资源文件以及编译后的可执行文件。通过学习...
在JavaScript学习过程中,"鼠标动态跟随"是一个基础但有趣的实践案例,它可以帮助开发者理解...或者引入缓动函数,使跟随效果更加自然。这都是提升用户体验的有效手段,并且能够锻炼开发者解决问题和优化代码的能力。
可能需要对代码进行调整以提高性能,减少不必要的计算,或者根据需求添加缓动函数,使动画更加流畅自然。 6. **发布SWF文件**:完成设计和编程后,导出为SWF格式,然后将其嵌入HTML页面中,用户就可以在网页上看到...
- **缓动函数**:可以使用不同的缓动函数(EaseIn、EaseOut等)来调整动画的速度曲线,增强视觉效果。 - **响应式设计**:确保效果在不同分辨率和窗口大小下都能正常工作。 - **性能优化**:对于大量卡片,考虑使用...
在"背景 圆点跟随鼠标不规则缓动"的场景中,TweenLite被用来控制圆点的位置,使其根据鼠标移动的方向和速度,以平滑的路径进行移动,创造出一种不规则但又自然的动态效果。 Canvas API是HTML5提供的一种绘图工具,...
然而,实际的插件可能会更复杂,它可能包含对元素速度、延迟、缓动效果以及与其他元素或页面边缘的碰撞检测等功能。例如,为了平滑过渡,开发者可能会使用CSS3的`transition`属性,或者通过JavaScript实现自定义缓动...
在Flash中,可以使用`tween`(缓动)技术来平滑地改变线条颜色。例如,可以创建一个颜色渐变动画,使线条在不同颜色之间平滑过渡。 6. **源文件分析**: "codesc.net"可能是压缩包内的源文件名,这可能是一个包含...
可以通过限制帧率或使用缓动函数来平滑旋转动画,提高用户体验。 8. **源码解析**: "codesc.net"可能是源代码所在的网站,但具体内容无法在此提供。通常,源码会包含创建小球对象、设置初始位置、添加鼠标事件...
此外,JavaScript还可以用于处理动画的帧率、缓动效果和碰撞检测等复杂逻辑,确保动画流畅且具有良好的用户体验。 CSS3也被广泛应用于HTML5动画中,尽管在这个特定的项目中可能不是主要部分。CSS3的transform和...
虽然在这个简单的鼠标跟随例子中,我们没有直接使用TweenMax,但在更复杂的场景下,比如缓动效果或时间轴控制,TweenMax能大大提升动画的质量。例如,我们可以用TweenMax将元素平滑地移动到鼠标位置: ```...
为了增加动态感,开发者可能还加入了缓动函数(如ease-out或ease-in-out),让图片移动更自然流畅。 同时,考虑到用户体验,开发者可能会设置一些限制,比如图片移动的最大距离,以防止图片过于剧烈晃动,导致视觉...
为了优化用户体验,开发者还可能加入缓动函数(tweening),使跟随更平滑,或者设置边界限制,防止元素移出舞台。 总之,“炫酷的鼠标跟随”是ActionScript和Flash结合的精彩示例,展示了如何利用编程来增强用户的...
一个简单的鼠标跟随flash。用到了缓动效果。
可以考虑使用缓动函数或时间差来平滑移动,减少不必要的计算。 7. **测试与调试**:在实现效果后,要进行充分的测试,确保在不同速度和方向下鼠标移动时,对象都能正确跟随。使用Flash的测试影片功能(`Control > ...
此外,为了优化用户体验,我们可能需要添加一些额外的逻辑,比如限制图片移动范围、设置移动速度或者添加缓动效果等。这可以通过调整变换参数或者引入更复杂的动画机制来实现。 总结一下,实现“Silverlight 鼠标...