我最近开始尝试使用ActionScript进行编程几年后没有使用它,我开始使用Pong,因为这似乎是一个简单的游戏来实现,但是我的(非常简陋的)代码将球从顶部反弹并且底壁由于某种原因卡在顶壁上上下弹跳......
有人可以帮忙吗?
import flash.events.Event;
stage.addEventListener(Event.ENTER_FRAME, mov);
var ySpeed:int = -5;
function mov(e:Event) {
trace(ySpeed + " " + ball.y);
ball.y += ySpeed;
if (ySpeed < 0 && ball.y <= 0) {
ySpeed *= -1;
}
if (ySpeed > 0 && ball.y >= 360) {
ySpeed *= -1;
}
}
答案 0 :(得分:0)
您的代码似乎是在不断切换速度向量,因为“击中”&#39;事件不断被触发。
有一些方法可以解决这个问题 - 积极推迟“击中”#39;方法(您的&#39; if&#39;陈述) - 在碰到之前跟踪对象行进的方向,然后将其用作if语句中的附加比较参数 - 在冲击开关上,速度矢量PLUS&#39;反弹&#39;物体略微远离撞击边缘
我还建议将if语句链接起来,以便在第一个更改值后触发第二个。
我已稍微调整了代码,以考虑球和舞台的尺寸。
类似的东西:
import flash.events.Event;
stage.addEventListener(Event.ENTER_FRAME, mov);
var dirY:int = -1;
var ySpeed:int = -5;
var ballR:uint = ball.height/2;
function mov(e:Event) {
trace(ySpeed + " " + ball.y);
if (ySpeed < 0 && ball.y <= (0+ballR) && dirY == -1) {
dirY = 1;
ySpeed *= -1;
ball.y = 0 + ballR;
} else if (ySpeed > 0 && ball.y >= (stage.stageHeight-+ballR) && dirY == 1) {
dirY = -1
ySpeed *= -1;
ball.y = stage.stageHeight - ballR;
}
ball.y += ySpeed;
}