频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Actionscript animation 简明教程

来源:WebStudio 作者:egoldy 出处:巧巧读书 2006-05-14 进入讨论组
上一页 1 2 3 4 5 下一页 

4. 弹性

弹性,一般是指物体接触到到某个边界,所进行的回弹,在FLASH中,我们需要做的是设置好边界,以及物体回弹的方向。那么如何确定它回弹的方向呢,我们设定一个边界,当小球超出边界时小球回弹,也就是方向改变了。

以x轴为例应为:vx*=-1; 实际上你可能发现它实际上就是 vx=-vx;

代码:
//设定边界
top=0;
left=0;
right=400;
bottom=300;
vx=10;
vy=10;
onEnterFram=function(){
    my_mc._x+=vx;
    my_mc._y+=vy;
    //下面代码检测小球是否到达边界,如果已到边界,重设小球的正确做坐,并使其回弹,
    if(my_mc._x+my_mc._width/2>right){
         my_mc._x=right-my_mc._width/2;
         vx*=-1;
    }
    if(my_mc._x-my_mc._width/2<left){
         my_mc._x=left+mc_mc._width/2;
         vx*=-1;
    }
    if(my_mc._y-my_mc._height/2<top){
         my_mc._y=top+my_mc._height/2;
         vy*=-1;
    }
    if(my_mc._y+my_mc._height/2>bottom){
         my_mc._y=bottom-my_mc._height/2;
         vy*=-1;
    }
}


演示:


通过演示我们发现小球在碰到边界会不断的回弹。

*注意:上面代码中的my_mc._x,my_mc._y的坐标都是指my_mc的中心点,也就是说my_mc的注册点在中心,如果你在制作过程中发现与本演示不同,那一定是你的my_mc注册点没有在中心上。

弹性中的能量损失

在上面的例子,小球在回弹时我们设定当碰到边界时直接回弹,也就是vx*=-1;并没有能量的损失,但在现实生活中,小球在回弹时要有一定的能量损失,其中还要有重力加速度的影响,通过上面的例子我们可以得出结论,当回弹速度设为1时无能量损失,其中的负号只是代表方向,当小于1时会产生能量损失,也就是我们通常说的摩擦,如:vx*=-0.8;同时不要忘了在现实生活小球还会受重力加速度的影响。

代码:
top=0;
left=0;
right=400;
bottom=300;
//设定重力加速度变量garv
garv=.5;
vx = 10;
vy = 10;
onEnterFrame = function () {
    //y轴方向的加速度
    vy+=garv;
    my_mc._x += vx;
    my_mc._y += vy;
    if(my_mc._x+my_mc._width/2>right){
        my_mc._x=right-my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._x-my_mc._width/2<left){
        my_mc._x=left+my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._y-my_mc._height/2<top){
        my_mc._y=top+my_mc._height/2;
        vy*=-0.8;
    }
    if(my_mc._y+my_mc._height/2>bottom){
        my_mc._y=bottom-my_mc._height/2;
        vy*=-0.8;
    }
};

演示:

5.摩擦力

摩擦力的应用相对比较简单,我们需要定义一个摩擦系数,通常它的值为小于1,然后将它与速度相乘,也就是前面在弹性时所提到的能量损失。

代码:
fraction=0.95;
vx=10;
vy=10;
onEnterFrame=function(){
    vx*=fraction;
    vy*=fraction;
    my_mc._x+=vx;
    my_mc._y+=vy;
}

演示:

浏览地址: http://www.qqread.com/flash/2006/05/n381110042.html 更多文章 更多内容请看ASP.NET教程FreeBSD使用教程专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章