物理是一个很有趣的东西,flash 结合物理是其中一个很重要的方向,也是学习flash技术一个很重要的门。最近翻阅一些资料,复习了一下物理和flash技术,虽然是一点皮毛的东西,不过先把他记录下来。为日后需要作一个基础,下面我们采用小球模拟重力,但是本身没有涉及到质量,没有涉及到球与球之间的碰撞,这样可操作性会简单一些,容易掌握,重力结合当中。在Make thing move 一书当中,这本书已经讲解得很深入,它有碰撞,和能量损失等模拟。可以参考这本书,不过既然初学的,先简单的一些好。自己本身物理知识还在恶补当中。只能一点一点来。

重力模拟,只要技巧在于加速度和位移是怎样结合起来。我们知道在每一帧刷新的时候,不断执行

(物体.y+=值)。物体就会一直向下移动。

(物体的垂直速度vy+=g)加上一个重力加速度,使物体在vy垂直方向的速度有了一个额外的递增值,因此vy值会不断增加

从而物体.y 的值会发生变化,其实flash 里面隐含了一个时间概念。每一帧其实有一个时间间隔,这样这个隐含的时候就会无形加上去了

速度公式:vt=v0+at(其中v0为初始速度,t为时间)

位移的公式:s=v0t + 1/2at^2 (其中v0为初始速度,a为加速度,t为时间);

这样的组合方式

vy+=a;

物体.y+=vy;

就能够产生位移变化。(该公式可以在make thing move 找到)

下面就是模拟出一些小球进行,小球采用绘图api来模拟出来。

private function creatBalls(num:int):void 创建一系列的小球

其中:我们加入了阻力去模拟,效果会更加好,小球受到空气阻力,因此落体的时候会发生速度递减。

list[i].vy+=g;//加速度加上向下的垂直速度
    list[i].vy*=friction;//阻力
    list[i].y+=list[i].vy;// s=vt;

这里就是关键的地方,不是很难,因为没有涉及到质量和球与球之间碰撞,这部分资料很多,可以去找找。我发现到这部分知识,对一个flash 爱好者来讲,是需要去了解和掌握的。这样就能够创造很多有趣的flash,而最近搜索资料的时候,发觉国外日本和美国那边的flash 都很注重数学和物理方面的培养结合,这样创造出来的flash 来讲才会有说服力。效果更加好。这部分知识,自己觉得需要慢慢补上,毕竟物理不是很好需要翻阅资料阅读。所以这部分慢慢努力。

package { //简单小球重力模拟 import flash.display.Sprite; import flash.events.*; public class Main extends Sprite { private var g:Number=1;//重力 private var friction:Number=0.98;//空气阻力 private var contain:Sprite=new Sprite();//容器 private var list:Array=new Array(); public function Main() { init(); } private function init():void { addChild(contain); creatBalls(20);//创建20个小球 addEventListener(Event.ENTER_FRAME,Run); var btn:MyButton=new MyButton();//创建按钮 btn.x=400; btn.y=50; btn.addEventListener(MouseEvent.MOUSE_DOWN,onDownHandler); addChild(btn); } private function onDownHandler(event:MouseEvent):void { while(list.length>0)list.pop(); while(contain.numChildren>0)contain.removeChildAt(0); creatBalls(20);//创建小球 } //创建球体 private function creatBalls(num:int):void { for (var i:int=0; i<num; i++) { var ball:Ball=new Ball(Math.random()*30+10,0xffffff *Math.random()); ball.x=Math.random()*500; ball.y=0; ball.vy=Math.random()*10;//不同的初速度 contain.addChild(ball); list.push(ball); } } private function Run(event:Event):void { for (var i:int=0; i<list.length; i++) { list[i].vy+=g;//加速度加上向下的垂直速度 list[i].vy*=friction;//阻力 list[i].y+=list[i].vy;// s=vt; if (list[i].y+list[i].height/2>stage.stageHeight) { list[i].y=stage.stageHeight-list[i].height/2; list[i].vy*=-1; } } } } } //模拟的小球 import flash.display.Sprite; class Ball extends Sprite { public var vy:Number=0; public var vx:Number=0; function Ball(r:int,color:uint) { this.graphics.lineStyle(1); this.graphics.beginFill(color); this.graphics.drawCircle(0,0,r); this.graphics.endFill(); this.x=-this.width/2; this.y=-this.height/2; } } import flash.display.Sprite; import flash.text.TextField; //按钮 class MyButton extends Sprite { function MyButton() { this.graphics.lineStyle(1); this.graphics.beginFill(0xffff00); this.graphics.drawRect(0,0,60,20); this.graphics.endFill(); var txt:TextField=new TextField(); txt.text="RePlay"; txt.x=10; txt.y=2; txt.mouseEnabled=false; addChild(txt); } }

转载于:https://www.cnblogs.com/guoyiqi/archive/2010/02/20/2069211.html

Flash 与物理笔记:简单的小球重力模拟相关推荐

  1. Unity3D 游戏引擎之平面小球重力感应详解【转】

    http://blog.csdn.net/xys289187120/article/details/6969333       手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android  ...

  2. Unity3d 简单的小球沿贝塞尔曲线运动(适合场景漫游使用)

        简单的小球沿贝塞尔曲线运动,适合场景漫游使用 贝塞尔曲线:(贝塞尔曲线的基本想法部分摘自http://blog.csdn.net/u010019717/article/details/4768 ...

  3. Flash Builder4.7极其简单破解方法-三步搞定(亲测)

    资讯类型: 转载 来源页面: http://weibo.com/2101024913/yvmR0D9Df 资讯原标题: 资讯原作者: 丿卓越丶星辰 翻译词数: 词 我的评论: 对这篇文你有啥看法,跟贴 ...

  4. Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动

    对于从Sprite类继承来的对象,要实现拖放当然是Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag) 里讲的方法最方便,但是对于不是从Sprite类继承得来的对象, ...

  5. WPF实现物理效果 拉一个小球

    原文:WPF实现物理效果 拉一个小球 一直以来都对物理效果有神秘感,完全不知道怎么实现的.直到看到了周银辉在老早前写的一篇博客:http://www.cnblogs.com/zhouyinhui/ar ...

  6. 一个x86平台的spi flash驱动移植笔记

    最近一个项目,要用到flash存放一些数据,要内核支持.于是又要去移植. 其实,这个项目的合作方式我一直不喜欢,但言语轻微.起初我也不断地提意见,但看了几次的结果后,觉得不提也罢.对于开发人员来说,合 ...

  7. 半导体物理·笔记之④晶体中原子的电子状态——能带

    半导体物理·笔记之④晶体中原子的电子状态--能带 QQ:3020889729 小蔡 仅有两个原子的情况下的电子状态(能带的形成) 当两原子相距很远的情况下 当两原子相互逐渐靠近的情况下 N个原子的电子 ...

  8. Flash Builder4.7极其简单破解方法-三步搞定

    Flash Builder4.7极其简单破解方法-三步搞定(亲测) 原方法适用于4.6版本,同样方法4.7完美破解,不敢独享 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6, ...

  9. 【连载】大学物理笔记——第一章末+第二章质点动力学

    我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...

最新文章

  1. 内核中设置文件结束符_Linux 日志文件系统原来是这样工作的
  2. 计算机网络rsa算法,计算机网络安全实验新报告--非对称密码算法RSA.doc
  3. 自定义SpringBoot start 自动打印日志
  4. c语言行列倒置算法,循环行列的元素倒置。求指点
  5. JQuery DataTables 列自己定义数据类型排序
  6. [瞎搞]JZOJ 3096 Hash函数
  7. python输出总字符个数_python每次处理固定个数的字符的方法总结
  8. Vagrant 构建 LNMP 一致环境
  9. Rust之控制流,条件语句,模式匹配
  10. 基于ipv6的数据包分析(GNS3)
  11. 热烈祝贺:关于OpenJDK8 LINUX版本输入法候选框不能跟随光标移动的BUG及解决办法,已上报Oracle
  12. poj 1260 dp
  13. 【名企招聘】4月26日19点,涛思数据带着高薪岗位JD和精美周边来啦~
  14. Python 列表,for循环,元组的使用【修改、添加、删除、排序、切片】w
  15. layui 上传图片 返回图片地址
  16. 牛客小bai月赛39 F 孤独(dp)
  17. 月入2万的10个小生意项目
  18. 蒙特卡洛算法及简单应用
  19. JavaScript实现H5游戏断线自动重连的技术
  20. 蒂特ft232_[经验分享] 最近调试FT232H遇到的坑

热门文章

  1. 从csv文件批量创建AD用户,带源码。
  2. Python机器学习笔记:深入理解Keras中序贯模型和函数模型
  3. python优雅写法
  4. 金融产品京东金融2015年战略主攻三大方向:股权众筹、农村金融和校园金融...
  5. (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
  6. TreeView复选框选择逻辑判断
  7. Myxls导出excel报表
  8. webshpere MQ linux 上安装
  9. python3 性能提升_整理下Python性能语法,非常有效的提高性能的tips
  10. 全局程序集缓存gac中安装程序集_我就不信2W字把源码拆的这么碎,你还不明白mybatis缓存...