首先感谢您对我的问题感兴趣。我正在尝试修改flash as3 bubble burst game并添加一个评分系统。我正在粘贴代码,它会检测到气泡组并将其爆破。
/**
* Checks single ball for touching another ball with the same color
* @param ball
*/
private function checkHit(ball:Ball):void {
_checkingNum++;
ball.checked = true;
var point:Point;
var point2:Point;
var d:Number;
var scorenet:Number;
for (var j:int = 0; j < _tabBalls.length; j++) {
if (Ball(_tabBalls[j]).color == ball.color) {
if (!_tabBalls[j].checked && !inTab(_theSame, _tabBalls[j])) {
point = new Point(ball.x, ball.y);
point2 = new Point(Ball(_tabBalls[j]).x, Ball(_tabBalls[j]).y);
d = countD(point, point2);
if (d < _BALL_WIDTH + 4) {
_theSame.push(_tabBalls[j]);
checkHit(_tabBalls[j]);
/*score system*/
scorenet = scorenet + 10;
trace (scorenet);
}
}
}
}
_checkingNum--;
if (_checkingNum == 0) {
if (_theSame.length >= 3) {
for (var i:int = 0; i < _theSame.length; i++) {
killBall(Ball(_theSame[i]));
Ball(_theSame[i]).kill();
}
_noeffect = 0;
} else {
_noeffect++;
if (_noeffect >= _MAX_NO_EFFECT) {
_noeffect = 0;
addNewLine();
}
}
}
}
现在我添加了一个名为scorenet的变量,后来我试图在每次泡沫爆发时添加10,但这显然不起作用。每次气泡爆发时,迹线返回一个值'0',所以如果总共说4个气泡爆裂,则返回0,0,0,0的值。我想知道是否有一些东西要跟踪它返回的0的数量,然后每次添加10,它会正常工作。任何帮助将受到高度赞赏。感谢。
答案 0 :(得分:0)
您正在使用局部变量进行评分。方法调用完成后,局部变量将丢失:它不能用于存储持久值,如得分。你应该使用成员变量或静态变量,无论方法调用如何,它们都会持续存在。
您的计算是NaN + 10,因为每次调用checkHit()时,局部变量scorenet都是INITIALIZED。所以跟踪显示“0”。你必须处理问题1,否则它将只是“10,10,10,10 ......”
答案 1 :(得分:0)
我添加了这个
public var scorenet:Number = 0; //as variable
并添加了分数系统
/ 得分系统 /
if(_checkingNum > 1 ) {
scorenet = scorenet + _checkingNum + 10 ;
_mainTimeline.scoreField.text = scorenet;
} else if(_checkingNum >= 4 ) {
scorenet = scorenet + _checkingNum + 20 ;
_mainTimeline.scoreField.text = scorenet;
}