0

我正在使用 AS3 创建游戏。游戏结束时,我需要在下一个关键帧上显示玩家的最终得分。当玩家与敌人发生碰撞时,玩家得分增加 1。

这是我更新分数的代码。

var playerScore:int = 0;

function updateTextFields():void
{
    playerScoreText.text = ("Score: " + playerScore);
}

function caught(enemy:MovieClip):void 
{
    enemy.removeEventListener(Event.ENTER_FRAME,dropEnemy);
    removeChild(enemy);
    playerScore++;
    updateTextFields(); 
}

我需要在游戏结束屏幕上显示玩家的最终分数,但是因为 playerScore 的值是动态的并且递增一我不能只显示

playerScoreText.text = ("Score: " + playerScore); 

因为变量默认值为 0。

我已经尝试过,但我不知道如何使它工作。

var playerScore = playerScore;   
4

2 回答 2

0

如果你想在每一帧中使用 var ,你必须把它放到一个类中(在 Main 函数之前)。此外,您应该使用公共或私有前缀。如果添加 private,则只能在此类中使用此变量,而 public 将使您能够在与该文件相关的每个类中使用它。使用 uint 而不是 int 也是个好主意。

例如,它应该如下所示:

package
{
       //import...
       public class Main extends //(you should write Sprite, MovieClip... there)
       {
            public var playerScore:uint = 0;
            public function Main()
            {
                //constructor
            }
       }
}
于 2012-09-03T20:52:39.340 回答
0

如果你摆脱了= 0那么它应该工作。帧脚本将 playerScore 设置为 0。如果您只有声明var playerScore:int;,则该变量将默认为零,并且 Flash 不会将该语句添加playerScore = 0到帧脚本(每次到达特定帧时都会调用的函数)。

一般来说,最好显式地声明一个类。Flash 从添加到帧的脚本生成类的方式可能相当混乱,因为单个语句可能会出现在两个地方。例如,您上面的代码实际上将变为以下内容:

package filename_fla 
{
  public dynamic class MainTimeLine extends MovieClip
  {
    public var playerScore:int;

    internal function frame1:* 
    {
      playerScore = 0;
    }

    public function updateTextFields():void 
    {
      playerScoreText.text = ("Score: " + playerScore);
    }

    public function caught(enemy:MovieClip):void 
    {
      enemy.removeEventListener(Event.ENTER_FRAME,dropEnemy);
      removeChild(enemy);
      playerScore++;
      updateTextFields(); 
    }
  }
}
于 2012-09-04T05:13:32.723 回答