添加评分系统到泡沫破灭游戏as3

时间:2013-12-22 08:46:05

标签: actionscript-3 flash

首先感谢您对我的问题感兴趣。我正在尝试修改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,它会正常工作。任何帮助将受到高度赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

  1. 您正在使用局部变量进行评分。方法调用完成后,局部变量将丢失:它不能用于存储持久值,如得分。你应该使用成员变量或静态变量,无论方法调用如何,它们都会持续存在。

  2. 您的计算是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;
                        }