点击浏览该文件
用ActionScript实现重力效果并不复杂,只需在受控对象上捆绑几行代码便可。其算法是根据物理学上自由落体运动以及碰撞所遵循的规律,即匀加速和动量守衡推导出的。下面介绍具体实现办法:
1。新建一合适尺寸的舞台,为了能较好的表现加速度效果可以将帧速调大些(30帧每秒)
2。下面制作场景:
作一水平长方形并将其转化为影夹符号“地面”,命实例名为floor。同样,作一竖直长方形并将其转化为影夹符号“墙”,命实例名为leftWall;将库中的“墙”拖到舞台上,即再创建一个实例,命实例名为rightWall。调整这三个实例的位置,使它们形成槽状。
3。接下来制作具有重力的小球:
创建一个新影夹符号“运动的小球”,并转入编辑状态。在其中作一个小球,选中该小球将其转化为影夹符号“小球”,命实例名为ball,将其延长到第三帧(在第三帧处插入帧)。新建一个脚本层:
在第一帧中输入如下代码:
ySpeed=0;//初始化x,y方向上的速率
xSpeed=0;
在第二帧中输入如下代码:
ball._y+=ySpeed;//改变小球x,y的坐标从而产生运动
ball._x+=xSpeed;
在第三帧中输入如下代码:
if(ball.hitTest(_root.floor)){
ySpeed=-ySpeed;}//与地面碰撞,则y方向上速度反向
else{
ySpeed+=1;}
if(ball.hitTest(_root.leftWall) or ball.hitTest(_root.rightWall)){
xSpeed=-xSpeed;//与墙面碰撞,则x方向上速度反向
}
gotoAndPlay(2);
回到主场景中,将库中的“运动的小球”拖到舞台上,命实例名为moveBall
3。在舞台上创建几个按钮,在按钮上捆绑脚本用于控制小球的运动:
增加小球水平速率:
on (press) {
if(moveBall.xSpeed>0){
moveBall.xSpeed+=1;}
else{
moveBall.xSpeed-=1;}
}
减小小球水平速率:
on (press) {
if(moveBall.xSpeed!=0){
if(moveBall.xSpeed>0){
moveBall.xSpeed-=1;}
else{
moveBall.xSpeed+=1;}
}
}
增加小球竖直速率:
on (press) {
if(moveBall.ySpeed>0){
moveBall.ySpeed+=1;}
else{
moveBall.ySpeed-=1;}
}
减小小球竖直速率:
on (press) {
if(moveBall.ySpeed!=0){
if(moveBall.ySpeed>0){
if(moveBall.ySpeed<0.1){
//当速率很小是就设其为0
moveBall.ySpeed=0;}
else{
moveBall.ySpeed-=1;}
}
else{
moveBall.ySpeed+=1;}
}
}
还原小球位置:
on (press) {
moveBall.ball._x = 0;
moveBall.ball._y = 0;
moveBall.xSpeed=0;
moveBall.ySpeed=0;
}
点击浏览该文件