Search code examples
actionscript-3flashvariablesactionscriptadobe

Cannot refresh the variable to initial number


I'm making a simple game and it's working alright, but the only problem right now is my time value (var nummer:Number = 300:) I't wont reset to 300 when I either complete, or fail the game.

import flash.utils.Timer;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.TimerEvent;


var femMinutter:Timer = new Timer(1000, 300);
var tid:Timer = new Timer(5000);
var rightArrow:Boolean;
var leftArrow:Boolean;
var upArrow:Boolean;
var downArrow:Boolean;
var speed:int = 10;
var score:int = 0
var ferdig:MovieClip = new Sluttskjerm();
var startSpillet:MovieClip = new Startskjerm();
var feiletSpillet:MovieClip = new Feilskjerm();
var nummer:Number = 300;

stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.removeEventListener(Event.ENTER_FRAME, everyFrame);
femMinutter.addEventListener(TimerEvent.TIMER, tellNed);
tid.addEventListener(TimerEvent.TIMER, flyttRandom);

knpStart.addEventListener(MouseEvent.CLICK, startSpill);
addChild(startSpillet);
startSpillet.x = 275;
startSpillet.y = 150;

troll.x = 500;
troll.y = 300;
meg.x = 100;
meg.y = 300;
function tellNed (evt:TimerEvent):void
{
txtTid.text = String((nummer)-femMinutter.currentCount);
if (txtTid.text == "0")
{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.removeEventListener(Event.ENTER_FRAME, everyFrame);
troll.x = 500;
troll.y = 300;
meg.x = 100;
meg.y = 300;
addChild(feiletSpillet);
feiletSpillet.x = 275;
feiletSpillet.y = 150;
tid.stop();
femMinutter.stop();
nummer = 300;
}
}
function startSpill(event:MouseEvent):void
{

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.ENTER_FRAME, everyFrame);
tid.start();
femMinutter.start();
if (contains(ferdig))
{
    removeChild(ferdig);
}
if (contains(startSpillet))
{
    removeChild(startSpillet);
}
if (contains(feiletSpillet))
{
    removeChild(feiletSpillet);
}
}

function flyttRandom (evt:TimerEvent):void
{
troll.x = Math.random() * (550 - 0) + 0;
troll.y = Math.random() * (350 - 0) + 0;
}
function keyPressed(event:KeyboardEvent):void 
{
if (event.keyCode == Keyboard.RIGHT)
{
    rightArrow = true;
}
if (event.keyCode == Keyboard.LEFT) 
{
    leftArrow = true;
}
if (event.keyCode == Keyboard.UP) 
{
    upArrow = true;
}
if (event.keyCode == Keyboard.DOWN) 
{
    downArrow = true;
}   
if (meg.hitTestObject(troll) == true)
{
    score = score+1;
    txtScore.text = score.toString();
    troll.x = Math.random() * (550 - 0) + 0;
    troll.y = Math.random() * (350 - 0) + 0;
    troll.scaleX = troll.scaleX * 0.9;
    troll.scaleY = troll.scaleX * 0.9;
    if (score == 2)
    {
        femMinutter.stop();
        tid.stop();
        stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
        stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);
        stage.removeEventListener(Event.ENTER_FRAME, everyFrame);
        troll.x = 500;
        troll.y = 300;
        meg.x = 100;
        meg.y = 300;
        addChild(ferdig);
        ferdig.x = 275;
        ferdig.y = 150;
        score = 0;
        troll.height = 134;
        troll.width = 138;
        nummer = 300;
    }
}   
}
function keyReleased(event:KeyboardEvent):void 
{
if (event.keyCode == Keyboard.RIGHT) 
{
    rightArrow = false;
}
if (event.keyCode == Keyboard.LEFT) 
{
    leftArrow = false;
}
if (event.keyCode == Keyboard.UP) 
{
    upArrow = false;
}
if (event.keyCode == Keyboard.DOWN) 
{
    downArrow = false;
}
}
function everyFrame(event:Event):void 
{
if (rightArrow) 
{
    meg.x += speed;
}
if (leftArrow) 
{
    meg.x -= speed;
}
if (upArrow) 
{
    meg.y -= speed;
}
if (downArrow) 
{
    meg.y += speed;
}   
}

As you can see I'm have added the "nummer = 300;" to both the fail and the win screen. If I win in 3 seconds, the clock will say 297, and start at 297 the next round instead of the initial 300.


Solution

  • Arg.... redundant code makes my eyes bleed %-X

    But still, you are not resetting your timer (femMinutter.reset()). This means

    femMinutter.currentCount

    will keep increasing, even after your game ends.