Flash AS3基础教程:物理基础之速度向量

2016-02-16 19:33 5 1 收藏

关注图老师电脑网络栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享Flash AS3基础教程:物理基础之速度向量教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - FLASH 】

本例为Flash AS3代码基础实例教程,主要讲解工具的运用、颜色的运用和补间形状的制作,代码部分未作讲解,希望能给朋友们带来帮助~~

效果演示:

物体运动的最基本属性就是速度。很多人把速度向量(velocity)和速度(speed)等同,这是不对的,因为速度仅仅是速度向量的一部分,速度向量的概念还包括一个非常重要的因素:方向。速度向量的简单定义是:某个方向上的速度。

向量由长度和方向组成。在速度向量中,长度就是速度。向量用带有箭头的线段表示,箭头的长度就是向量的长度,箭头所指的方向就是向量的方向。

需要注意的是,长度总是正数,如果一个长度为负数的向量只表示该向量的反方向,反速度向量为反方向的向量。

注意:向量没有起点,向量不能说明哪里是起点哪里是终点,它仅仅表示出了物体移动的速度与方向。因此,如果两个向量的方向及长度都相同,即使它们位于不同位置,那么它们仍是两个相等的向量。

单轴速度向量

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

首先,把速度(向量)只放在一个轴上: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帧,打开动作面板,输入代码:

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

 

在这个例子中,首先设置一个 x 轴速度向量(vx)等于5。记住是指每一帧5像素,所以,在每一帧中, vx 都会被加到 ball 的 x 属性中。并为 enterFrame 设置事件处理函数。每走一帧,小球都会在前一帧的位置基础上向右移动5个像素。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

双轴速度向量

使用两个轴对物体进行移动也非常简单,只需要定义 vx 和 vy,并在每一帧将 vx 加到 x 属性上, vy 加到 y 属性上。下面一个示例:

1--4 步同上,输入代码:

var vx:Number = 5;
var vy:Number = 5;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
function onEnterFrame(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;
示例代码:

var angle:Number = 45;
var speed:Number = 3;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
function onEnterFrame(event:Event):void {
        var radians:Number=angle * Math.PI / 180;
        var vx:Number=Math.cos(angle) * speed;
        var vy: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帧,打开动作面板输入代码:

var speed:Number = 5;
addEventListener(Event.ENTER_FRAME,onEnterFrame);
function onEnterFrame(event:Event):void {
        var dx:Number = mouseX - arrow.x;
        var dy:Number = mouseY - arrow.y;
        var angle:Number = Math.atan2(dy, dx);
        arrow.rotation = angle * 180 / Math.PI;
        var vx:Number = Math.cos(angle) * speed;
        var vy: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 {
        import flash.display.Sprite;
        public class Arrow extends Sprite {
                public function Arrow() {
                        init();
                }
                public function init():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 {
        import flash.display.Sprite;
        import flash.events.Event;
        public class FollowMouse extends Sprite {
                private var arrow:Arrow;
                private var speed:Number = 5;
                public function FollowMouse() {
                        init();
                }
                private function init():void {
                        arrow = new Arrow();
                        addChild(arrow);
                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
                }
                private function onEnterFrame(event:Event):void {
                        var dx:Number = mouseX - arrow.x;
                        var dy:Number = mouseY - arrow.y;
                        var angle:Number = Math.atan2(dy, dx);
                        arrow.rotation = angle * 180 / Math.PI;
                        var vx:Number = Math.cos(angle) * speed;
                        var vy:Number = Math.sin(angle) * speed;
                        arrow.x += vx;
                        arrow.y += vy;
                }
        }
}

 

来源:http://www.tulaoshi.com/n/20160216/1572499.html

延伸阅读
标签: flash教程
问题1:如何制作按钮?为什么我制作的文字按钮,很不容易点击到? 解决思路 在按钮编辑区的时间轴上只有四个帧,第4帧的点击是按钮的反应区,这个区域在舞台中是看不到的,但是他却起到了按钮反应的作用。我们扩大按钮的反应区,既可以轻易的用鼠标点击到这个按钮了。 具体步骤 1、运行FlashMX2004,文档属性默认。 ...
标签: PS PS教程
玩过《三角洲特种部队》的朋友对这样的画面一定不会陌生,画面中那间小砖房是我用PS按透视关系做完再加上去的,今天我们就是要通过这样一个画面来学习透视的基础知识。 如果你学过美术(哪怕是中学的美术课),相信你一定会知道透视近大远小,并且所有相互平行的直线消失于一点。但消失于在什么方向?如何消失?物体的长宽高关系在透视中会...
本期POCO活动组特别策划了一场夏季公园人像拍摄活动,使用了诸多小道具,提升了外拍的创意,也针对逆光和方位拍摄技巧以及后期方法,根据对拍摄活动中遇到的问题对症下药,完善你的创作方法,让你的摄影功力迅速提高。在下次活动中脱颖而出!拍出给力佳作,让更多人关注和喜爱你的作品吧! 捉摸光影 作者:陶园爵士 点击查看全部内容...
标签: 美甲 美甲教程
基础画花是所有美甲师入门的必修课,如何将花画的好、画的生动自然确实是一门学问喔~今天,爱米就应大家的要求,手把手逐步教大家6种常见花型的手绘方法,一定用用心学喔~在开始前,亲们还要准备:丙烯颜料、小笔、透明水杯、手绘美甲练习册。 一、五瓣花 爱米将五瓣花分解为7步,关键点在于花瓣的绘制,其诀窍在于下笔轻,重重的压笔后收笔轻...
标签: Web开发
在讲挑选者的特性之前,要提一下的是CSS继承的特性。所谓的继承的特性是指被包在内部的标签将拥有外部标签的样式性质。继承的特性最典型的应用通常发挥在预设整份网页的样式,而要指定为其它样式的部份再依要设定在个别元素里即可。这项特性可以提供网页设计者更理想的发挥空间。 接下来就要讲挑选者特性的应用!其实这部份应该算...

经验教程

333

收藏

84
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部