0

我想将变量 score 从GameScreen.as 转移GameOverScreen.as

GameOverScreen.as 中的方法称为getScore (score:Number),它不会从GameOverScreen.as的构造函数中更新finalScore

有没有办法确保 finalScore 与 GameScreen.as 中的scorePoints具有相同值?(PS我试图找到答案,但无济于事。)

这是代码:

游戏画面.as

package  
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.net.SharedObject;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.text.*;

/**
 * ...
 * @author xxxx
 */
public class GameScreen extends MovieClip
{
    private var mainClass:main;
    private var enemy:Enemy;
    private var timer:Timer;
    public var scorePoints:Number;

    public var gameOverScreen:GameOverScreen;

    private var debugValue:Number;

    public function GameScreen(passedClass:main) 
    {
        mainClass = passedClass;

        gameOverScreen = new GameOverScreen();

        enemy = new Enemy();
        addChild(enemy);                        

        debugValue = 1;

        scorePoints = 0;

        addEventListener(Event.ADDED_TO_STAGE, onAdd);

        ClickToWinButton.addEventListener(MouseEvent.CLICK, clickToWin);


    }

    private function clickToWin(e:MouseEvent):void 
    {
        scorePoints += 50;

    }


    private function onAdd(e:Event):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, onAdd);
        init();
    }

    private function init():void 
    {
        addEventListener(Event.ENTER_FRAME, gameScreenProgress);
    }

    public function gameScreenProgress(e:Event):void 
    {
        ScoreText.text = "Score: " + scorePoints;

        if (enemy.hitTestPoint(mouseX, mouseY, true))
        {

            mainClass.showGameOver();

            gameOverScreen.getScore(scorePoints);

            enemy.removeEnemy();

        }
    }


   }

  }

GameOverScreen.as

package  
{
import flash.events.Event;
import flash.display.MovieClip;
import flash.net.SharedObject;
import flash.text.*;
/**
 * ...
 * @author xxxx
 */
public class GameOverScreen extends MovieClip
{
    private var mainClass:main;

    private var gameScreen:GameScreen;

    public var finalScore:Number;

    public function GameOverScreen() 
    {


        ScoreText.text = "" + finalScore;

    }

    public function getScore(score:Number)
    {
        finalScore = score;
        trace(finalScore);
    }


    }

  }
4

1 回答 1

1

问题似乎是你GameOverScreen只更新ScoreText.text了构造函数中的。构造函数在创建时执行GameOverScreen

稍后,在GameOverScreen创建之后,您调用该getScore()方法并传入最终分数。但是该getScore()方法所做的只是更新finalScore变量......它实际上并没有用实际 score 更新文本字段

您可能应该做的是从构造函数中删除这一行:

ScoreText.text = "" + finalScore;

并将其放入您的getScore()方法中。我也会考虑重命名getScore()setScore()- 因为它是设置分数,而不是检索它......

public function setScore(score:Number)
{
    finalScore = score;
    trace(finalScore);
    ScoreText.text = "" + finalScore;
}
于 2013-06-02T20:09:31.730 回答