flash as3制作小球碰撞游戏(上)
第一步制作一个鼠标点击后开始游戏然后移动小球,到边界改变方向
主要增加这个事件
ball_mc.addEventListener(Event.ENTER_FRAME, moveBall);
最初始代码
function initializeGame(event:MouseEvent):void
{
bg_mc.removeEventListener(MouseEvent.CLICK, initializeGame);
}
bg_mc.addEventListener(MouseEvent.CLICK, initializeGame);
增加后代码,此时运行程序,小球在界面中四处碰撞
var xDirection:Number = 10;
var yDirection:Number = -10;
//初始化事件
function initializeGame(event:MouseEvent):void
{
ball_mc.addEventListener(Event.ENTER_FRAME, moveBall);//小球移动事件
bg_mc.removeEventListener(MouseEvent.CLICK, initializeGame);
}
//小球移动代码
function moveBall(event:Event):void
{
if(ball_mc.x <= 0)//小于X边界
{
xDirection *= -1; //改变x方向
}
else if(ball_mc.x >= stage.stageWidth - ball_mc.width)
{
xDirection *= -1;//改变x方向
}
if(ball_mc.y <= 0)//小于Y边界
{
yDirection *= -1;//改变y方向
}
else if(ball_mc.y >= stage.stageHeight - ball_mc.height)
{
yDirection *= -1;//改变y方向
}
ball_mc.x += xDirection;
ball_mc.y += yDirection;
}
bg_mc.addEventListener(MouseEvent.CLICK, initializeGame);
第2步移动矩形铁棒
增加2个变量
var targetX:Number = paddle_mc.x; //目标对象初始X坐标为铁棒X坐标
var easing:Number = 7;//移动的距离
初始化程序增加的事件
paddle_mc.addEventListener(Event.ENTER_FRAME, movePaddle);
并且最后鼠标隐藏
Mouse.hide();
具体移动矩形铁棒ovePaddle事件
function movePaddle(event:Event):void
{
//控制移动的边界
if(this.mouseX <= paddle_mc.width/2)//当鼠标小于等于铁棒1/2时,
{
targetX = 0;//铁棒X坐标为0
}
else if(this.mouseX >= stage.stageWidth - paddle_mc.width/2)/当鼠标大于等于(舞台宽度-铁棒宽度1/2)时
{
targetX = stage.stageWidth - paddle_mc.width;////铁棒X坐标为舞台宽度-铁棒的宽度
}
else
{
targetX = this.mouseX - paddle_mc.width/2;//鼠标移动的坐标-铁棒宽度1/2
}
paddle_mc.x += (targetX - paddle_mc.x) / easing; //铁棒的坐标为目标对象-铁棒坐标 移动速度
}
第3步就是铁棒与小球碰撞的事件
在moveBall事件里
if(ball_mc.hitTestObject(paddle_mc)) //小球与铁棒碰撞测试
{
//发生碰撞则移动方向
yDirection *= -1;
ball_mc.y = paddle_mc.y - ball_mc.height - paddle_mc.height/2;
}
同样在moveBall事件里改变2个
if(ball_mc.y <= 0)
{
yDirection *= -1;
//resetBallPosition();
}
else if(ball_mc.y >= stage.stageHeight - ball_mc.height)
{
resetBallPosition();//调用重置位置事件
}
//重置位置事件
function resetBallPosition():void
{
xDirection = 10;
yDirection = -10;
ball_mc.x = paddle_mc.x + paddle_mc.width/2 - ball_mc.width/2;//小球x坐标=铁棒x坐标+铁棒1/2长-小球1/2长
ball_mc.y = paddle_mc.y - ball_mc.height - paddle_mc.height/2;//小球y坐标=铁棒y坐标-小球高度-铁棒1/2高
}
本文通过听一个英文视频教程后把开发步骤用中文记录下,并自己加点注释
原创文章转载请注明出处:云飞扬IT的blog






来看看。学习学习。。