我正在使用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;
答案 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();
}
}
}