版本 2
程序集 窗口程序集1
子程序 _组合框1_列表项被选择
如果 (组合框1取项目文本 (组合框1现行选中项) = “夜叉石”)
标签1标题 = “嘿嘿”
编辑框1内容 = “456”
否则
如果真 (组合框1取项目文本 (组合框1现行选中项) = “玫瑰仙叶”)
标签1标题 = “哈哈”
编辑框1内容 = “123”
如果真结束
如果结束
子程序 __启动窗口_创建完毕
局部变量 位置
组合框1内容 = “请选择”
组合框1插入项目 (位置, “夜叉石”, )
组合框1插入项目 (位置 + 1, “玫瑰仙叶”, )
因为本例程使用的是随机运动,程序看起来稍有点复杂,不过一步一步的看,还是挺清晰的。
①创建物体(),是在动画框中创建一个可以控制移动的动画体(相当于的载体),动画物体=#,是这个动画物体具体显示的数据,在后续的程序中,还可以使用该语句在改变动画物体的可视。如(用时钟组件)每隔一定时间,更换一次动画物体的。
比如:
动画框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 "
其实同时碰到两边框的机会也很小,本第语句也可以省略。
欢迎分享,转载请注明来源:表白网
评论列表(0条)