Quantcast
Channel: Adobe Community : Discussion List - All Communities
Viewing all articles
Browse latest Browse all 238792

Using SharedObjects to load and save data

$
0
0

Hello, i am having troubles with using shared objects to save and load data for my highscore feature of my game i am developing in actionscript 3. This is my main code.

I am trying to update a dynamic text field that acts as an high score function

 

[as]

package

{

          // initialize;

          import flash.display.MovieClip;

          import flash.utils.Timer;

          import flash.events.TimerEvent;

          import flash.ui.Mouse;

          import flash.events.KeyboardEvent;

          import flash.ui.Keyboard;

          import flash.events.Event;

          import flash.media.SoundChannel;

          import flash.net.SharedObject;

          import flash.text.TextField;

          import flash.display.Stage;

          import flash.events.ProgressEvent;

 

 

          public class Game extends MovieClip

          {

                    public static var _stage:Stage;

                    static var so:SharedObject;

                    static var ship:MovieClip;

                    static var healthMeter:HealthMeter;

                    static var score:Score;

                    static var highScore:HighScore;

                    static var enemyShipTimer:Timer;

                    static var gameOverMenu:GameOverMenu;

                    static var startMenu:StartMenu;

                    static var helpMenu:HelpMenu;

                    static var startButton:StartButton;

                    static var returnButton:ReturnButton;

                    static var helpButton:HelpButton;

                    static var pauseButton:PauseButton;

                    static var playButton:PlayButton;

                    static var mainMenuButton:MainMenuButton;

                    public var currentValue:Number;

                    public var loadingProgress:LoadingProgress;

 

 

 

 

                    public function Game()

                    {

                              loadingProgress = new LoadingProgress();

                              loadingProgress.x = 550;

                              loadingProgress.y = 500;

                              addChild( loadingProgress );

                              loaderInfo.addEventListener( Event.COMPLETE, onCompletelyDownloaded );

                              loaderInfo.addEventListener( ProgressEvent.PROGRESS, onProgressMade );

                    }

 

 

                    public function showMenuScreen():void

                    {

 

 

                              _stage = this.stage;

                              Key.initialize(stage);

                              ship = new Ship();

                              healthMeter = new HealthMeter();

 

 

 

 

 

 

 

 

                              var score:Score = new Score();

                              var highScore:HighScore = new HighScore();

                              so = SharedObject.getLocal("scores");

                              if (so.data.score)

                              {

                                        highScore.bestScore.text = so.data.score.toString();

                              }

                              else

                              {

                                        highScore.bestScore.text = "0";

                              }

 

 

 

 

 

 

 

 

                              addChild(score);

                              addChild(highScore);

                              gameScore.visible = false;

                              bestScore.visible = true;

 

 

 

 

 

 

 

 

                              healthMeter.x = 2.5;

                              healthMeter.y = 576;

 

 

 

 

 

 

 

 

                              gameOverMenu = new GameOverMenu();

                              gameOverMenu.x = 217;

                              gameOverMenu.y = 244;

                              addChild(gameOverMenu);

                              gameOverMenu.visible = false;

 

 

 

 

 

 

 

 

                              helpMenu = new HelpMenu();

                              helpMenu.x = 480;

                              helpMenu.y = 312;

                              addChild(helpMenu);

                              helpMenu.visible = false;

 

 

 

 

 

 

 

 

                              returnButton = new ReturnButton();

                              returnButton.x = 54;

                              returnButton.y = 52;

                              addChild(returnButton);

                              returnButton.visible = false;

 

 

 

 

 

 

 

 

                              gameOverMenu.playAgainButton.addEventListener("mouseDo wn", newGame);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                              startMenu = new StartMenu();

                              mainMenuButton = new MainMenuButton();

                              startButton = new StartButton();

                              helpButton = new HelpButton();

                              startMenu.x = 151;

                              startMenu.y = 111;

                              startButton.x = 93;

                              startButton.y = 426;

                              helpButton.x = 631;

                              helpButton.y = 386;

                              mainMenuButton.x = 656;

                              mainMenuButton.y = 483;

                              addChild(mainMenuButton);

                              mainMenuButton.visible = false;

                              stage.addChildAt(startMenu, 0);

                              addChild(startButton);

                              addChild(helpButton);

                              startMenu.visible = true;

                              startButton.visible = true;

                              helpButton.visible = true;

 

 

 

 

 

 

 

 

                              startMenu.visible = true;

 

 

 

 

 

 

 

 

                              startButton.addEventListener("mouseDown", newGame);

                              helpButton.addEventListener("mouseDown", helpGame);

                              mainMenuButton.addEventListener("mouseDown", mainMenu);

                              returnButton.addEventListener("mouseDown", mainMenu2);

 

 

 

 

 

 

 

 

                              pauseButton = new PauseButton();

                              pauseButton.x = 896;

                              pauseButton.y = 63;

 

 

 

 

 

 

 

 

                              pauseButton.addEventListener("mouseDown", PauseGame);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                              playButton = new PlayButton();

                              playButton.x = 896;

                              playButton.y = 63;

                              addChild(playButton);

                              playButton.visible = false;

 

 

 

 

 

 

 

 

                              playButton.addEventListener("mouseDown", PlayGame);

 

 

 

 

 

 

 

 

                    }

 

 

 

 

 

 

                    static function gameOver()

                    {

                              scoreF();

                              mainMenuButton.visible = true;

                              healthMeter.visible = false;

                              pauseButton.visible = false;

                              gameOverMenu.visible = true;

                              enemyShipTimer.stop();

                              for (var i in EnemyShip.list)

                              {

                                        EnemyShip.list[i].kill();

                              }

                              ship.takeDamage(-ship.maxHealth);

                    }

 

 

 

 

 

 

 

 

                    function newGame(e:Event)

                    {

                              addEventListener(Event.DEACTIVATE, PauseGame);

                              bestScore.visible = false;

                              gameScore.visible = true;

                              addChild(pauseButton);

                              addChild(healthMeter);

                              addChild(mainMenuButton);

                              enemyShipTimer = new Timer(750);

                              enemyShipTimer.addEventListener("timer", sendEnemy);

                              addChild(ship);

                              healthMeter.visible = true;

                              startMenu.visible = false;

                              mainMenuButton.visible = false;

                              startButton.visible = false;

                              healthMeter.visible = true;

                              pauseButton.visible = true;

                              playButton.visible = false;

                              gameOverMenu.visible = false;

                              helpButton.visible = false;

                              ship.visible = true;

                              ship.x = 367;

                              ship.y = 542;

                              enemyShipTimer.start();

                              currentValue = 0;

                              updateDisplay();

                    }

                    function mainMenu(e:Event)

                    {

                              removeEventListener(Event.DEACTIVATE, PauseGame);

                              bestScore.visible = true;

                              gameScore.visible = false;

                              removeChild(mainMenuButton);

                              removeChild(ship);

                              healthMeter.visible = false;

                              startMenu.visible = true;

                              mainMenuButton.visible = false;

                              startButton.visible = true;

                              healthMeter.visible = false;

                              pauseButton.visible = false;

                              playButton.visible = false;

                              ship.takeDamage(ship.maxHealth);

                              gameOverMenu.visible = false;

                              helpButton.visible = true;

                              returnButton.visible = false;

                    }

                    function mainMenu2(e:Event)

                    {

                              bestScore.visible = true;

                              gameScore.visible = false;

                              healthMeter.visible = false;

                              startMenu.visible = true;

                              mainMenuButton.visible = false;

                              startButton.visible = true;

                              healthMeter.visible = false;

                              pauseButton.visible = false;

                              playButton.visible = false;

                              gameOverMenu.visible = false;

                              helpButton.visible = true;

                              returnButton.visible = false;

                              helpMenu.visible = false;

                    }

                    function PauseGame(e:Event)

                    {

                              enemyShipTimer.removeEventListener("timer", sendEnemy);

                              stage.frameRate = 0;//

                              pauseButton.visible = false;

                              playButton.visible = true;

                    }

                    function PlayGame(e:Event)

                    {

                              enemyShipTimer.addEventListener("timer", sendEnemy);

                              stage.frameRate = 30;//

                              pauseButton.visible = true;

                              playButton.visible = false;

                    }

                    function helpGame(e:Event)

                    {

                              startMenu.visible = false;

                              startButton.visible = false;

                              helpButton.visible = false;

                              helpMenu.visible = true;

                              returnButton.visible = true;

                    }

                    function sendEnemy(e:Event)

                    {

                              var enemy = new EnemyShip();

                              stage.addChildAt(enemy, 0);

                              addToValue(1);

                    }

                    function addToValue( amountToAdd:Number ):void

                    {

                              currentValue = currentValue + amountToAdd;

                              updateDisplay();

                    }

                    static function scoreF():void

                    {

                              if (so.data.score)

                              {

                                        if (getFinalScore()>so.data.score)

                                        {

                                                  so.data.score = getFinalScore();

 

 

 

 

                                                  so.flush();

                                        }

                              }

                              else

                              {

                                        so.data.score = getFinalScore();

                                        so.flush();

                              }

                    }

                    function updateDisplay():void

                    {

                              if (currentValue>Number(highScore.bestScore.text))

                              {

                                        scoreF();

                                        highScore.bestScore.text = currentValue.toString();

                              }

                              TextField(gameScore.getChildByName("scoreDisplay")).te xt = currentValue.toString();

                              TextField(bestScore.getChildByName("bestScore")).text = highScore.bestScore.text;

                              loadingProgress.percentDisplay.text = currentValue.toString();

                    }

                    static function getFinalScore()

                    {

                              _stage;

                              return;

                              gameScore.currentValue;

                    }

                    public function onCompletelyDownloaded( event:Event ):void

                    {

                              gotoAndStop(3);

                              showMenuScreen();

                    }

                    public function onProgressMade( progressEvent:ProgressEvent ):void

                    {

                              setValue( Math.floor( 100 * loaderInfo.bytesLoaded / loaderInfo.bytesTotal ) );

                    }

                    public function setValue( amount:Number ):void

                    {

                              currentValue = amount;

                              updateDisplay();

                    }

 

 

          }

}

[/as]

 

 

when i run this, it crashes with this error.

 

TypeError: Error #1009: Cannot access a property or method of a null object reference.

          at Game/updateDisplay()[C:\Users\Ben\Desktop\SFUR\Game.as:329]

          at Game/setValue()[C:\Users\Ben\Desktop\SFUR\Game.as:356]

          at Game/onProgressMade()[C:\Users\Ben\Desktop\SFUR\Game.as:351]

 

help would be greatly appreciated.

 

if you need any more details please ask.

 

Line 329:  if (currentValue>Number(highScore.bestScore.text))

Line 356:  updateDisplay();

Line 351:




setValue( Math.floor( 100 * loaderInfo.bytesLoaded / loaderInfo.bytesTotal ) );

 

 

 

-Ben


Viewing all articles
Browse latest Browse all 238792

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>