Actionscript 3 在AS3中更新和显示变量

Actionscript 3 在AS3中更新和显示变量,actionscript-3,flash,flashdevelop,Actionscript 3,Flash,Flashdevelop,我一直在遵循AS3教程的一个回避游戏,麻烦的是,教程是为CS5和我使用的Flash开发。我完全无法更新和显示分数。我已经在某某和其他地方读了好几篇文章,但似乎仍然无法修复它 这里是我调用以显示分数的Score类,它包含更新“Score”值的函数 这是我正在运行的游戏类,目的是增加每刻度的“分数” package { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; i

我一直在遵循AS3教程的一个回避游戏,麻烦的是,教程是为CS5和我使用的Flash开发。我完全无法更新和显示分数。我已经在某某和其他地方读了好几篇文章,但似乎仍然无法修复它

这里是我调用以显示分数的Score类,它包含更新“Score”值的函数

这是我正在运行的游戏类,目的是增加每刻度的“分数”

package  
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.Timer;

import Score;

public class Game extends Sprite
{
    public var army:Array;
    public var gameTimer:Timer;
    public var player:Player;
    public var background:Sprite;

    public function Game() 
    {           
        army = new Array();
        var newenemy:Enemy = new Enemy(100, -15);
        army.push(newenemy);
        addChild(newenemy);

        player = new Player();
        addChild(player);
        player.x = mouseX;
        player.y = mouseY;

        gameTimer = new Timer(20);
        gameTimer.addEventListener(TimerEvent.TIMER, move);
        gameTimer.addEventListener(TimerEvent.TIMER, onTick);
        gameTimer.start();
    }

    private function move(timerEvent:TimerEvent):void
    {

        player.x = mouseX;
        player.y = mouseY;

        for each (var enemy:Enemy in army)
        {
            enemy.moveDownABit();

            if (player.hitTestObject(enemy))
            {
                gameTimer.stop();

                dispatchEvent( new AvatarEvent( AvatarEvent.DEAD));

            }
        }
    }

    public function onTick(e:Event):void
    {
        if (Math.random() < .1)
        {
            var randomX:Number = Math.random() * 400;
            var newEnemy:Enemy = new Enemy(randomX, -15);
            army.push(newEnemy);
            addChild(newEnemy);

            var instanceScore:Score = new Score();
            instanceScore.addToValue(10)
        }
    }   
}

}
包
{
导入flash.display.Sprite;
导入flash.events.Event;
导入flash.events.TimerEvent;
导入flash.text.TextField;
导入flash.text.TextFormat;
导入flash.utils.Timer;
导入分数;
公共类游戏扩展精灵
{
公共军队:阵列;
公共变量gameTimer:计时器;
公共玩家:玩家;
公共背景:雪碧;
公共功能游戏()
{           
陆军=新阵列();
var new敌军:敌军=新敌军(100,-15);
军队。推(新敌人);
addChild(新敌人);
player=新玩家();
addChild(玩家);
player.x=mouseX;
player.y=mouseY;
游戏计时器=新计时器(20);
gameTimer.addEventListener(TimerEvent.TIMER,move);
gameTimer.addEventListener(TimerEvent.TIMER,onTick);
gameTimer.start();
}
私有函数移动(timerEvent:timerEvent):无效
{
player.x=mouseX;
player.y=mouseY;
每个(var敌人:军队中的敌人)
{
敌人。移动可移动();
如果(玩家.命中测试对象(敌人))
{
gameTimer.stop();
dispatchEvent(新化身(化身死亡));
}
}
}
公共功能点击(e:事件):无效
{
if(Math.random()<.1)
{
var randomX:Number=Math.random()*400;
var new敌军:敌军=新敌军(随机X,-15);
军队。推(新敌人);
addChild(新敌人);
var instanceScore:Score=新分数();
instanceScore.addToValue(10)
}
}   
}
}
我的跟踪函数输出“addToValue,0,10 1”并重复该操作,从不更改超过0的“curentValue”变量。我可以看出“amountToAdd”功能正常,但不知道为什么“currentValue”总是重置为0

问题,让我看; 问题在于:

var instanceScore:Score = new Score();
这意味着每次有一个勾号,你就创建一个新的分数。创建新分数时,它从0开始。将其更新为10,在下一个刻度上,通过创建一个全新的类忽略旧值10。新类的值为0,因为它的值以前从未增加过。然后再增加一次。。一个新的滴答声开始(循环)


您需要做的是只实例化score实例一次,并将其保存为类成员变量。然后你可以打电话给它。

比我快;)。为了清晰起见,我可能也会将currentValue初始化为0,尽管默认值为0。它起作用了,我的跟踪现在更新了。非常感谢。现在的问题是,我的'updateDisplay'函数的文本字段总是读取0。跟踪还指出,“updateDisplay”函数中的“currentValue”始终为0。
var instanceScore:Score = new Score();