| ●预览成品:两个小球在画面里以直行方式移动着,一旦碰到画面的边界就会反弹90度,往另一个方向继续直行移动,就象是一个小皮球在密闭的房间里不断弹跳一般。 下载源程序 ●逐步说明: 1)新增影片片段ball1和ball2,并把它们拖动到工作区中的适当位置。最后建立程序如图所示:  background层上放的是场景的背景,ball层中放的是影片片段ball1和ball2(左上角的球体为ball1,右上角的球体为ball2),action层是控制层。下面我们详细分析action层是怎么控制球体运动的。 2)第1个影帧设定的Actions为:  这里定义了四个变量,也就是每次所要移动的“X”距离和“Y”距离。 第2个影帧设定的Actions为:  Set Variable: "x1" = GetProperty ("/ball1",_x ) Set Variable: "y1" = GetProperty ("/ball1",_y ) If (x1 >= 340) Set Variable: "move_x1" = -(move_x1) Else If (x1<=10) Set Variable: "move_x1" = -(move_x1) End If If (y1 >= 190) Set Variable: "move_y1" = -(move_y1) Else If (y1<=10) Set Variable: "move_y1" = -(move_y1) End If Set Variable: "x2" = GetProperty ("/ball2",_x ) Set Variable: "y2" = GetProperty ("/ball2",_y ) If (x2 >= 340) Set Variable: "move_x2" = -(move_x2) Else If (x2<=10) Set Variable: "move_x2" = -(move_x2) End If If (y2 >= 190) Set Variable: "move_y2" = -(move_y2) Else If (y2<=10) Set Variable: "move_y2" = -(move_y2) End If 这里先取得两个小球目前的“X”位置和“Y”位置(ball1为:x1,y1;ball2为:x2,y2),然后分别对两个小球执行两个If判断。如果X大于等于340(表示球已经到了画面右边的边界),就将变量要移动的“X”距离由正值转为负值,如果X小于等于10(表示球已经到了画面左边的边界),就将变量要移动的“X”距离由负值转为正值。如果Y大于等于190(表示球已经到了画面下方的边界),就将变量要移动的“Y”距离由正值转为负值,如果Y小于等于10(表示球已经到了画面上方的边界),就将变量要移动的“Y”距离由负值转为正值。 第3个影帧设定球体新的“X位置”及“Y位置”,即为目前的“X位置”及“Y位置”,加上变量移动的“X距离”及“Y距离”,然后跳回第2个影帧。  Set Property ("/ball1", X Position) = x1-move_x1 Set Property ("/ball1", Y Position) = y1-move_y1 Set Property ("/ball2", X Position) = x2-move_x2 Set Property ("/ball2", Y Position) = y2-move_y2 Go to and Play (2) |