Oop 在类之间传递变量并存储变量Actionscript 3.0

Oop 在类之间传递变量并存储变量Actionscript 3.0,oop,function,variables,actionscript,constructor,Oop,Function,Variables,Actionscript,Constructor,我想将变量得分从GameScreen.as转移到gamesoverscreen.as 来自GameOverScreen.as的方法称为getScore(score:Number),它不会更新来自GameOverScreen.as的构造函数的finalScore 是否有办法确保最终核心的值与游戏屏幕中的得分的值相同?(P.S.我试着找到答案,但没有用。) 代码如下: GameScreen.as package { import flash.display.MovieClip; import f

我想将变量得分从GameScreen.as转移到gamesoverscreen.as

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

是否有办法确保最终核心的值与游戏屏幕中的得分的值相同?(P.S.我试着找到答案,但没有用。)

代码如下:

GameScreen.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);
    }


    }

  }

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

稍后,在创建了
GameOverScreen
之后,调用
getScore()
方法并通过最终分数。但是
getScore()
方法所做的就是更新
finalScore
变量它实际上不会用实际分数更新文本字段

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

ScoreText.text = "" + finalScore;
并将其放入您的
getScore()
方法中。我还将考虑改名<代码> GETSCORE()<代码> >代码> SETCOMSEEL()/<代码>,因为它正在设置分数,而不是检索它…< /P>
public function setScore(score:Number)
{
    finalScore = score;
    trace(finalScore);
    ScoreText.text = "" + finalScore;
}

它无法更新finalScore,并给出NAN,因为我将ScoreText.text放在了游戏屏幕上的movieclip中。有没有办法改变分数?我假设正在将setScore(finalScore)放入构造函数中,但它出现了错误。您可以为主类添加代码吗?我不确定我是否了解你的评论。如果我可以通过电子邮件或dropbox将代码和fla发送给你会更好吗?@Minelava别忘了返回finalScore,然后在你的另一封邮件中,你可以写“GameScreen.finalScore”,所以“返回finalScore”和“GameScreen.finalScore”。如果我写GameScreen.finalScore,我会有TypeError:Error#1009:无法访问null对象引用的属性或方法。在游戏屏幕上()在游戏屏幕上()在主屏幕上()在SplashScreen/debugButtonClick()上/showGame()在SplashScreen/debugButtonClick()上