* lastTime += timeDiff; * ball.x += timeDiff*.1; * } *
* 下面,我们把上面的两行注释打开,测试影片。输出结果如下: * lastTime:6 * getTime:67 * getTime:167 * getTime:267 * getTime:367 * getTime:470 * getTime:577
* 通过上面代码我们可以验证,影片每一帧所运行的时间大概是 100ms,但不是那么准 确。也就是说,用帧频事件做时间计时器的话,只能粗略的计算。我自己认为帧频事件的快 慢与电脑的性能等相关。如果精确计时的话,就用函数获取系统的时间来计时。 *
* 另外,还可以尝试改变一下影片的帧频,改为 12 或者 60,看一下小球的运行速度和 效果有什么不同? ******
**12--基于物理学的运动.txt *****
**
FLASHAS3.0—基于物理学的运动(14) 2.3.4 基于物理学的运动 * 用代码来制作动画, 你不仅能够让物体沿着预设的轨迹运行, 还能够赋予它一些物理 属性,让他更像自然界的一个实物。关于物理学的运动,可以是基于帧频的还可以是基于时 间的。
* 下面,我们来创建一个基于时间的动画,用速度和重力加速度来控制物体的运动。
* 注:重力加速度是一个相对于地面恒定的加速度(在这里,地面就是屏幕的底部) 。 在现实中,重力加速度是 9.8m/s,而在 flash 世界中,每个事物都是用每毫秒多少像素来计算 的。例如,1 像素代表 1m 的话,那么 0.0098 是 0.0098 米/毫秒,也就是 9.8 米/秒。在这里, 我们仅仅是用来做游戏,而不是建造严谨的物理模拟运动,简单的用 0.001 或其他合适的数 值表示就可以了,只要运动的状态看起来比较像就可以了。
* 下面,我们来做一个实例,和上节一样,首先在舞台上绘制一个小球,转换为影片剪
辑并拖放到舞台的左下角,实例名称为 ball。
* 这里,我们设置这个重力加速度为.00098,并且用 dx,dy 分别表示小球水平和垂直 方向的初始速度分量. * //设置重力加速度
* var gravity:Number=.00098 * //设置初始速度
* var dx:Number=.2 * var dy:Number=-.8
* 为了让这个小球运动起来,我们来创建一个 ENTER_FRAME 侦听,并把 flash player 初始化时间赋值给一个变量。 * // 声明一个整型变量存储初始化时间,添加侦听 * var lastTime:int = getTimer();
* addEventListener(Event.ENTER_FRAME, animateBall); * // 创建动画
* function animateBall(event:Event) { * // 获取时间间隔
* var timeDiff:int = getTimer()-lastTime; * lastTime += timeDiff;
* dy 变量是垂直方向上的,他与重力的方向相反。 * dy+=gravity*timeDiff
* 小球的移动位置由 dx,dy 这两个速度决定。在下面两行代码中,时间差用来计算出 需要移动几个像素的距离。
* ball.x += timeDiff*dx; * ball.y += timeDiff*dy; * } ******
**13--用方向键控制影片的移动.txt ***** **
FLASHAS3.0—用方向键控制影片的移动(15) 2.4.1 用方向键控制影片的移动
* 用鼠标或者键盘来控制影片的运动是非常常见的。在本章的前面部分,我们学习了 怎样判定空格键是否被按下。同样,我们还可以用这种方法来判定方向键是否被按下。虽然 方向键没有显著的特征,但我们可以用它们各自的键控代码来表示:37(左) ,38(上) ,39 (右) ,40(下) 。
* 同样,现绘制一个影片剪辑拖放到舞台,实例名称为 mascot。 * 首先,我们先声明 4 个布尔型变量来存储 4 个方向键的初始状态 * var leftArrow:Boolean = false; * var rightArrow:Boolean = false; * var upArrow:Boolean = false; * var downArrow:Boolean = false;
* 然后,用 KEY_DOWN,KEY_UP 和 ENTER_FRAME 侦听器来处理影片的运动。
* // 设定事件侦听 *
stage.addEventListener(KeyboardEvent.KEY_DOWN,
keyPressedDown);
* stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp); * stage.addEventListener(Event.ENTER_FRAME, moveMascot); * 当用户按下任意一个方向键时,我们设定它的布尔值变量为真 true *

