FLASH AS2 小球减速运动的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 15:51:37
在这段代码中
myMc._x = 0;
onEnterFrame = function () {
myMc._x += (500-myMc._x)/10;
if (Math.abs(500-myMc._x)<0.5) {
delete this.onEnterFrame;
myMc._x = 500;
}
};
为什么myMc._x += (500-myMc._x)/10;是代表减运动呢
myMc._x的初始值是0 ,myMc._x += (500-myMc._x)/10的意思不就是myMc._x =myMc._x + (500-myMc._x)/10么
第一次循环myMc._x=50 第二次是应该等于45 还是95呢?
一楼回答的有问题吧
再代入95的话 (500-myMc._x)/10是减小了 但是还得加myMc._x=95啊 然后值就变更大啊!~

第一次循环myMc._x=50 第二次等于50+45=95;
用的+=后面的值就代表每次循环X所要增加的量,如果右边是一个常数,那就是匀速运动
你现在右边是(500-myMc._x)/10包含了myMc._x变量,所以每次增机的值受到myMc._x的影响,因为myMc._x一直在增加,所以(500-myMc._x)/10一直减小,是减速运动
使用Math.abs(500-myMc._x)<0.5)来判断是否运动到位有一个好处,就是到最后的时候有一个轻微的拉回运动

我说的95是指myMc的_x值。不是_x增加的值,实际上增加了45,目的_x变成95,你分析下+=45和=45的差别!