0

I have written a code to add two buttons. It shows them correctly, but the action is not performed correctly.

public class butt extends Sprite {
    public function butt() {
        var delayGlobal:Number = 2000;
        var min1:Number =1000;
        var myTimer:Timer = new Timer(delayGlobal);
        myTimer.addEventListener(TimerEvent.TIMER,runMany);
        myTimer.start();
        // Button Event
        myButton1.addEventListener(MouseEvent.CLICK, myButton1Click);
        function myButton1Click(ev:MouseEvent):void {
            delayGlobal = delayGlobal- 1000;
            trace(delayGlobal);
        }
        myButton2.addEventListener(MouseEvent.CLICK, myButton2Click);
        function myButton2Click(ev:MouseEvent):void {
            delayGlobal = delayGlobal + 1000;
            trace(delayGlobal);
        }
        function runMany(e:TimerEvent):void {
            var loader:Loader=new Loader();
            var url:String= "http://google.com.example2";
            loader.load(new URLRequest(url));
            addChild(loader);
        }
    }  
}

The timer is shown but doesn't work

zb226
  • 9,586
  • 6
  • 49
  • 79
TheTricker
  • 43
  • 10

1 Answers1

1

Your issue is that you are updating a variable, but not actually updating the timer at all.

You need to explicitly tell the timer to change the delay. myTimer.delay = delayGlobal

Here is a re-working of your code:

public class butt extends Sprite {
    private var min1:Number =1000; //assuming this is your minimum allowed delay?
    private var myTimer:Timer;

    public function butt() {
        myTimer = new Timer(2000);
        myTimer.addEventListener(TimerEvent.TIMER,runMany);
        myTimer.start();

        // Button Event
        myButton1.addEventListener(MouseEvent.CLICK, myButton1Click);
        myButton2.addEventListener(MouseEvent.CLICK, myButton2Click);
    }

    private function myButton1Click(ev:MouseEvent):void {
        myTimer.delay = Math.max(min1, myTimer.delay - 1000);  //This will assign whatever is bigger,  min1 or the timer delay less 1000 - ensuring that the timer doesn't drop below the value of min1
        trace(myTimer.delay);
    }

    private function myButton2Click(ev:MouseEvent):void {
        myTimer.delay = myTimer.delay + 1000;
        trace(myTimer.delay);
    }
    private function runMany(e:TimerEvent):void {
        var loader:Loader=new Loader();
        var url:String= "http://google.com.example2";
        loader.load(new URLRequest(url));
        addChild(loader);
    } 
}
BadFeelingAboutThis
  • 14,445
  • 2
  • 33
  • 40