在下一个关键帧AS3上显示动态变量

时间:2012-09-03 18:40:57

标签: actionscript-3 flash variables

我正在使用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的值是动态的并且递增1我无法显示

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

因为变量默认值为0。

我尝试过,但我无法弄清楚如何让它发挥作用。

var playerScore = playerScore;   

2 个答案:

答案 0 :(得分:0)

如果要在每个帧中使用var,则必须将其放入类中(在Main函数之前)。您还应该使用公共或私人前缀。如果你添加私有,你只能在这个类中使用这个变量,而public将使你能够在与该文件相关的每个类中使用它。另外,最好使用uint而不是int。

例如它应该是这样的:

package
{
       //import...
       public class Main extends //(you should write Sprite, MovieClip... there)
       {
            public var playerScore:uint = 0;
            public function Main()
            {
                //constructor
            }
       }
}

答案 1 :(得分:0)

如果你摆脱= 0那么它应该有用。 frameScore由frame脚本设置为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(); 
    }
  }
}