首页 > ActionScript 3 > flash as3制作小球碰撞游戏(下)

flash as3制作小球碰撞游戏(下)

第4步计算小球测试碰撞位置

修改这里代码如下
if(ball_mc.hitTestObject(paddle_mc))
{
yDirection *= -1;
ball_mc.y = paddle_mc.y - ball_mc.height - paddle_mc.height/2;
checkHitLocation(paddle_mc);//增加的
}

计算事件 根据小球位置不同碰撞就改变速度,比如左边碰撞后加速
function checkHitLocation(paddle:MovieClip):void
{
var hitPercent:Number;//定义百分比
var ballPosition:Number = ball_mc.x - paddle.x;//小球位置
//小球位置/(铁棒长度-小球长度)-0.5
hitPercent = (ballPosition / (paddle.width - ball_mc.width)) - .5; //计算百分比
xDirection = hitPercent * 30;
yDirection *= 1.05;
}

第5步增加AI敌人
在initializeGame里增加敌人事件如下:

enemy_mc.addEventListener(Event.ENTER_FRAME, moveEnemy);

具体moveEnemy事件如下:
function moveEnemy(event:Event):void
{
var enemyTargetX:Number;
enemyTargetX = ball_mc.x - enemy_mc.width/2;

if(enemyTargetX <= 0)
{
enemyTargetX = 0;
}
else if(enemyTargetX >= stage.stageWidth - enemy_mc.width)
{
enemyTargetX = stage.stageWidth - enemy_mc.width;
}

enemy_mc.x += (enemyTargetX - enemy_mc.x) / easing;
}

然后也要设置跟小球碰撞测试

再moveBall增加如下代码

if(ball_mc.hitTestObject(enemy_mc))
{
yDirection *= -1;
ball_mc.y = enemy_mc.y + enemy_mc.height + ball_mc.height/2;//小球y坐标
checkHitLocation(enemy_mc);
}
改动下面代码
if(ball_mc.y <= 0)
{

resetBallPosition();//如果小球出界重置位置
}

第6步,计算敌我双方分数

定义2个变量
var playerScore:Number;
var enemyScore:Number;

在 initializeGame初始化下上面变量

playerScore = 0;
enemyScore = 0;

改变moveBall里的代码如下

if(ball_mc.y <= 0)
{
playerScore ++; //得分
showScore();//调用显示分数代码
resetBallPosition();
}
else if(ball_mc.y >= stage.stageHeight - ball_mc.height)
{
enemyScore ++;//失分
showScore();//调用显示分数代码
resetBallPosition();
}

//调用显示分数代码

function showScore():void
{
//元件score_mc里面的影片剪辑slide_mc上的文本player_txt值
score_mc.slide_mc.player_txt.text = "Player: " + playerScore;
score_mc.slide_mc.enemy_txt.text = "Enemy: " + enemyScore;
score_mc.gotoAndPlay(2);//跳到第2帧
}
元件score_mc里面的影片剪辑slide_mc上的文本player_txt值

第7步设置谁赢谁输
设置赢的条件
var winningScore:Number = 3;

然后改变showScore()函数如下

function showScore():void
{
//大于影的条件为赢
if(playerScore >= winningScore)
{
score_mc.slide_mc.player_txt.text = "Player Wins!";
score_mc.slide_mc.enemy_txt.text = "Click to play again";
endGame();//调用结束函数
}
else if(enemyScore >= winningScore)
{
score_mc.slide_mc.enemy_txt.text = "Enemy Wins!";
score_mc.slide_mc.player_txt.text = "Click to play again";
endGame();
}
else
{
score_mc.slide_mc.player_txt.text = "Player: " + playerScore;
score_mc.slide_mc.enemy_txt.text = "Enemy: " + enemyScore;
score_mc.gotoAndPlay(2);//跳到2帧
}

//调用结束函数
function endGame():void
{
//移除事件
paddle_mc.removeEventListener(Event.ENTER_FRAME, movePaddle);
enemy_mc.removeEventListener(Event.ENTER_FRAME, moveEnemy);
ball_mc.removeEventListener(Event.ENTER_FRAME, moveBall);
bg_mc.addEventListener(MouseEvent.CLICK, initializeGame);//增加点击背景开始游戏事件

Mouse.show();//显示鼠标

score_mc.gotoAndStop(12);//跳到12帧,相应的也要改变initializeGame里score_mc.gotoAndStop(1);
}
}

改变initializeGame函数
增加
score_mc.gotoAndStop(1);

第8步最后一步给游戏增加声音
打开库文件点击声音类型hit.wav,右键属性-》链接 类名Hit确定

然后重新定义一个声音 var hit:Sound = new Hit();

然后在moveBall函数里调用,用hit.play();

比如此处等等,还有重置函数resetBallPosition不要忘了
if(ball_mc.x <= 0)
{
xDirection *= -1;
hit.play();
}

本程序最初文件和最终源码下载
本文通过听一个英文视频教程后把开发步骤用中文记录下,并自己加点注释

原创文章转载请注明出处:云飞扬IT的blog

本文链接: http://www.ajaxcn.net/archives/335

分类: ActionScript 3 标签:
一键分享到:新浪微博分享  分享到网易微博    转贴到开心网  推荐到豆瓣  分享到QQ空间    RSS订阅
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

key office 2010

office 2010 key

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

serial corel draw 11

serial corel draw 11 serials

windows 7 key

windows 7 key

office 2010 professional key

office 2010 key

windows key

windows key

free winrar download for xp

download winrar for xp for free

winrar password cracker serial

wirar password cracker

cs5 serialz

cs5 serialz free

photoshop key

photoshop key

free corel photoshop download

free corel photoshop download keygen

photo shop key

photo shop key

download photo shop free

photo shop serial

serial winzip 11

serial winzip 11 key

adobe free

adobe free

windows 7 free

windows 7 crack

winrar 3 download

winrar 3 download freedownload

office 2010 free

office 2010 key

free corel downloads

free corel downloads cracked