如何在屏幕上保留我的分数计数器?

时间:2014-01-27 03:13:14

标签: actionscript-3

有没有办法让我目前的分数计数器在屏幕上?还是我需要创建另一种方法?我的代码如下(当然不是最终的脚本,我只想在抛光之前得到一个原型(:)

var score:Number = 0;
var myScoreBox:TextField = new TextField(); 
var myScore:String = ("Score:"+ score); 
myScoreBox.text = myScore;
addChild(myScoreBox);
myScoreBox.x = player.x;
myScoreBox.y = player.y - 200;

我还创建了一个不同的方法(如下所示),但是当它被设置为零时,它不会显示“得分”数字的值,并且只要将点添加到变量中,它就不会更新。

var score:Number = 0;
trace("The score is", score);
var str:String = ("Score:");
txt.text = str +(score); // now "score 1"

所以基本上,顶部的代码显示我想要它但不跟随角色,而底部则反过来!非常感谢任何帮助!:)

2 个答案:

答案 0 :(得分:0)

我假设你正在使用某种类型的Camera类,你只需要下载或只是移动舞台。然而,最好的做法是分离UI和游戏本身。您应该创建一个这样的层次结构:

MAIN_CONTAINER
->UI_CONTAINER
-->SCORE TEXT FIELD, HUD...
->GAME_CONTAINER //MOVE THIS CONTAINER [1]
-->PLAYER, ENEMIES, OBJECTS...
[1] GAME_CONTAINER.x = -player.x+[your stage's width]; GAME_CONTAINER.y = -player.y+[your stage's height];

答案 1 :(得分:0)

每当您的分数变量更新时,您需要使用新分数更新txt.text。最好的方法是编写一个setter函数:

private var _score:Number=0;
public function set score(value:Number):void {
    _score=value;
    txt.text="Score: "+_score.toString(); // provide correct name for text field!
}

在某些情况下,由于变量的可见性修饰符,可能还需要使用getter函数:

public function get score():Number { return _score; }