仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1131|回复: 8
打印 上一主题 下一主题

[学习教程] 来谈谈:Flash AS3实例教程:物体活动速率向量(velocity)-Flash actionscript

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-15 20:42:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
FlashPlayer是一款能够播放小又快速的多媒体动画,以及交互式的动画、飞行标志和用macromediaflash做出的图像。
poluoluo中心提醒:本例为FlashAS3代码基本实例教程,次要解说工具的使用、色彩的使用和补间外形的制造,代码部分未作解说.
 本例为FlashAS3代码基本实例教程,次要解说工具的使用、色彩的使用和补间外形的制造,代码部分未作解说,但愿能给伴侣们带来匡助~~效果演示:
[media=wmv,550,400][/media]

物体活动的最基础属性就是速率。良多人把速率向量(velocity)和速率(speed)同等,这是不合错误的,由于速率仅仅是速率向量的一部分,速率向量的观点还包含一个十分主要的要素:偏向。速率向量的复杂界说是:某个偏向上的速率。

向量由长度和偏向构成。在速率向量中,长度就是速率。向量用带有箭头的线段暗示,箭头的长度就是向量的长度,箭头所指的偏向就是向量的偏向。

必要注重的是,长度老是负数,假如一个长度为正数的向量只暗示该向量的反偏向,反速率向量为反偏向的向量。

注重:向量没有出发点,向量不克不及申明那里是出发点那里是尽头,它仅仅暗示出了物体挪动的速率与偏向。因而,假如两个向量的偏向及长度都不异,即便它们位于分歧地位,那末它们还是两个相称的向量。

单轴速率向量

起首,把速率(向量)只放在一个轴上:x轴(程度轴)。让物体从屏幕的左边到右边,挪动速率就是物体每帧挪动的像素值。因而,假如说速率向量在x轴上为5,就意味着物体在每帧城市向右挪动5个像素。一样,假如速率向量在x轴上为-5,那末物体每帧就会向左挪动5个像素。

我们方才提到了向量长度即是负值,迷信地讲,速率向量实践上应当为5,而偏向应为180度。同理,y轴正半轴上的速率向量应为90度(垂直向下),而负y轴负半轴上的速率向量应为270或90度(垂直向上)。

现实上,当盘算x,y速率向量的份量时,一般能够记作负数或正数,好比“x速率向量为-5”。在x轴上把减号当作“向左”的唆使符,在y轴上则是“向上”的唆使符。用vx暗示x轴的速率向量,用vy暗示y轴的速率向量。vx为负数暗示向右挪动,为正数暗示向左挪动,vy为负数暗示向下,vy为正数暗示向上。

上面我们来看一个速率向量的示例。

1、新建FLA文档

2、新建影片剪辑元件,选择椭圆工具,色彩任选,放射状添补,画50*50的圆。

3、前往加入景1,把图层1的称号改成小球,按Ctrl+L组合键,翻开库面板,把小球拖到舞台中,在属性面板中输出实例名:ball。

4、增加图层2,更名为as,选中第1帧,翻开举措面板,输出代码:

varvx:Number=5;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
functiononEnterFrame(event:Event):void{
ball.x+=vx;
}

在这个例子中,起首设置一个x轴速率向量(vx)即是5。记着是指每帧5像素,以是,在每帧中,vx城市被加到ball的x属性中。并为enterFrame设置事务处置函数。每走一帧,小球城市在前一帧的地位基本上向右挪动5个像素。
双轴速率向量
利用两个轴对物体举行挪动也十分复杂,只必要界说vx和vy,并在每帧将vx加到x属性上,vy加到y属性上。上面一个示例:
1--4步同上,输出代码:
varvx:Number=5;
varvy:Number=5;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
functiononEnterFrame(event:Event):void{
ball.x+=vx;
ball.y+=vy;
}

角速率
假设想让物体以每帧3像素的速率向45度的地位挪动,这里要用到三角学。
已知角度为45度,斜边长为3像素,就能够利用Math.cos和Math.sin求出vx和vy的长度。
角的邻边长度为vx,由于角的余弦值即是邻边/斜边。也能够说,邻边即是角的余弦值乘以斜边。一样,对边长为vy的边,由于角的正弦值即是对边/斜边,或是对边即是正弦乘以斜边。
实践利用的代码:
vx=Math.cos(angle)*speed;
vy=Math.sin(angle)*speed;

示例代码:
varangle:Number=45;
varspeed:Number=3;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
functiononEnterFrame(event:Event):void{
varradians:Number=angle*Math.PI/180;
varvx:Number=Math.cos(angle)*speed;
varvy:Number=Math.sin(angle)*speed;
ball.x+=vx;
ball.y+=vy;
}

与后面vx,vy次要分歧的中央是酿成了angle和speed,盘算出的速率向量作为部分变量被利用。固然,因为是一个复杂的示例,角度(angle)和速率(speed)都稳定,那末完整能够只盘算一次,然后保留在类中作为变量。而关于更初级的活动来讲,角度和速率应是不休变更的,以是vx和vy的值也是变更的。只必要改动角度(angle)与速率(speed),就能够改动物体活动的速率及角度。

上面制造鼠标跟从
1、新建FLA文档

2、新建影片剪辑元件,绘制一个箭头。
3、前往场景1,选中第1帧,翻开举措面板输出代码:
varspeed:Number=5;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
functiononEnterFrame(event:Event):void{
vardx:Number=mouseX-arrow.x;
vardy:Number=mouseY-arrow.y;
varangle:Number=Math.atan2(dy,dx);
arrow.rotation=angle*180/Math.PI;
varvx:Number=Math.cos(angle)*speed;
varvy:Number=Math.sin(angle)*speed;
arrow.x+=vx;
arrow.y+=vy;
}
先盘算出箭头与鼠标的x间隔和y间隔,并利用Math.atan2盘算出它们的夹角。然后利用这个角度使箭头扭转,再利用Math.cos和Math.sin与速率相乘盘算出x,y速率向量,最初将它们加到箭头的坐标上。
上面是文档类的两个as文件,copy到统一目次下,创立一个FLA文件,文档类:输出FollowMouse便可运转。
Arrow类(绘制箭头)
package{
importflash.display.Sprite;
publicclassArrowextendsSprite{
publicfunctionArrow(){
init();
}
publicfunctioninit():void{
graphics.lineStyle(1,0,1);
graphics.beginFill(0xff0000);//添补
graphics.moveTo(-50,-25);
graphics.lineTo(0,-25);
graphics.lineTo(0,-50);
graphics.lineTo(50,0);
graphics.lineTo(0,50);
graphics.lineTo(0,25);
graphics.lineTo(-50,25);
graphics.lineTo(-50,-25);
graphics.endFill();
}
}
}
FollowMouse类(鼠标跟从)
package{
importflash.display.Sprite;
importflash.events.Event;
publicclassFollowMouseextendsSprite{
privatevararrow:Arrow;
privatevarspeed:Number=5;
publicfunctionFollowMouse(){
init();
}
privatefunctioninit():void{
arrow=newArrow();
addChild(arrow);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
privatefunctiononEnterFrame(event:Event):void{
vardx:Number=mouseX-arrow.x;
vardy:Number=mouseY-arrow.y;
varangle:Number=Math.atan2(dy,dx);
arrow.rotation=angle*180/Math.PI;
varvx:Number=Math.cos(angle)*speed;
varvy:Number=Math.sin(angle)*speed;
arrow.x+=vx;
arrow.y+=vy;
}
}
}

另外在属性面板中还增加了一个“设备”设置选项,需要说明的是“设备”设置功能在FlashPlayer环境中不能使用,需要FlashLite1.0或FlashLite1.1的支持才可以。
海妖 该用户已被删除
沙发
发表于 2015-1-17 13:56:55 | 只看该作者
FLASH在网站建设过程中既然有这么多的问题,那为什么我们还继续使用FLASH,不可否认FLASH的问题的确存在,但也不可忽视FLASH在网站建设中。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-24 13:12:22 | 只看该作者
Flash流行的主要原因是它使用了矢量图形(与位图相反)。因为这种图形格式比位图小得多,而且在缩放时对图形质量影响不大,所以很适合对带宽要求很高的Web。
莫相离 该用户已被删除
地板
发表于 2015-2-1 16:39:01 | 只看该作者
矢量图形相对于位图的另一个优势是可以随意缩放的能力。这是对动画进程的奖赏,对用户来说也是一个很酷的特征。在Flash之前,Web上没有这种功能。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-7 12:00:14 | 只看该作者
FLASH动画的视觉观赏效果好,容易给民众留下深刻的印象,是动画行业从业者和动画创意设计制作机构的主要业务之一。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-22 09:17:33 | 只看该作者
flash的流行因素包括了技术上的优势——技术本身的优势;技术掌握上的优势;其他技术的弱势;
再现理想 该用户已被删除
7#
发表于 2015-3-7 02:13:24 | 只看该作者
作为奖赏,你可以使用关键祯动画支持和tweening- 两个最主要的节省时间的方式。本质上,关键祯是动画中显著事件发生的位置。
变相怪杰 该用户已被删除
8#
发表于 2015-3-14 10:50:29 | 只看该作者
缺点方面~有些技术不能实现,不过FLASH技术在发展在进步,相信在以后FLASH可以取代,大部分的视频编辑软件,视频制作软件。
小妖女 该用户已被删除
9#
发表于 2015-3-21 06:08:05 | 只看该作者
在与制作传统动画相比较的同时,flash具有便捷、节省人力财力,节约时间、推广方便的许多优势。但与此同时它也具有一点的缺点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-29 23:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表