因为本例程使用的是随机运动,程序看起来稍有点复杂,不过一步一步的看,还是挺清晰的。
①创建物体(),是在动画框中创建一个可以控制移动的动画体(相当于图片的载体),动画物体.图片=#图片,是这个动画物体具体显示的图片数据,在后续的程序中,还可以使用该语句在改变动画物体的可视图片。如(用时钟组件)每隔一定时间,更换一次动画物体的图片。
比如:
动画框1.置图片 (程序集_标识_球 [1], #玫瑰3, )
动画框1.置图片 (程序集_标识_球 [2], #玫瑰4, )
用"球"作变量,主要是动画物体还可进行碰撞效果的编写。这里只给了两个动画物体,你可以按上述的方法增加动画物体。
② 这三个变量在本例程中确实没有用,是为了后面编写碰撞、更换动画物体图片及Dll函数使用的
③第二行:当动画物体以一定角度碰到上、下边界时,取出其
入射角度,再计算其弹射角度。比如当乒乓以30度入射角碰到地面后,按常理,会以150角再弹射出去。即180-30=150,我用178,是为了避免在入射角为90度时,该动画物体只作垂直上下运动,稍为改变点角度,使该动画物体能在整个动画框
中移动 。
第四行:原理同第二行,动画物体的入射角与弹射角刚好为
相反数第五行:是动画物体碰到动画框的四个角时的反弹角度,实际上是同时碰到上或下与左或右,我的计算方法是(上、下+左、右)/2得到的。
④第六行:是因为动画框置角度的取值范围为-360度到+360度,为了避免设置的角度数超过这个范围,就去掉其角度中的整圈数(即360度)
这些计算都是纯物理的钢体碰撞知识,第二行与第四行是同一道理,只不过第四行转了个90度角
⑤90度角是碰不到左、右边框的,我想你的意思应该是0度或180度,可以加或减个小度数,因为该例程我采用的首发角度主要在上、下方向开始,以0度或180度碰左、右的机会很小,所以暂时没有考虑。
⑥也就是碰到上下边框的角度与碰到左右边框的角度
即[180 - _启动窗口.动画框1.取角度(物体标识值)] + [_启动窗口.动画框1.取角度(物体标识值) × -1]
=180 - 2[_启动窗口.动画框1.取角度(物体标识物)]
=90 - _启动窗口.动画框1.取角度(物体标识物)
由于是以相反的方向弹射出去的,所以在取角度时 "×-1 "
其实同时碰到两边框的机会也很小,本第语句也可以省略。