0

I am a newbie trying to do some buttons for my website. I have this actionscript for flash 3.0:

this.home.addEventListener(MouseEvent.ROLL_OVER, function(e:MouseEvent): void{

    play();

});

stop();

It works, and the flash plays continuously, but I would like to make it play ONLY ONCE when mouse is over the button. The stop(); in the end frame does not work, it stops the flash from playing a second time on mouse over. Tried ROLL_OVER and MOUSE_OVER, no luck. There must be a simple trick, but not getting to it yet.

Anil
  • 2,539
  • 6
  • 33
  • 42
Deno
  • 1
  • 2

3 Answers3

0

You need to remove the event listener after it fires the first time. So:

this.home.addEventListener(MouseEvent.ROLL_OVER, function(e:MouseEvent): void{

    this.home.removeEventListener(MouseEvent.ROLL_OVER, arguments.callee);
    play();

});
Scott
  • 948
  • 2
  • 13
  • 25
0

It seems that this code works, my luck!

stop();
home.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);

 function manageMouseOut(event:MouseEvent):void{
  home.removeEventListener(MouseEvent.ROLL_OVER, manageMouseOver);
  home.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
  play();
}

function manageMouseOver(event:MouseEvent):void{
  home.removeEventListener(MouseEvent.ROLL_OVER, manageMouseOut);
  home.addEventListener(MouseEvent.ROLL_OVER, manageMouseOut, false, 0, true);
  stop();
}

It does what I needed, play once on mouse over. Phew!

Deno
  • 1
  • 2
0

After some formatting, I got this:

stop()

home.addEventListener(MouseEvent.MOUSE_OVER, manageMouseOver, false, 0, true);
function manageMouseOut(event:MouseEvent):void{
  play();
}
function manageMouseOver(event:MouseEvent):void{
home.addEventListener(MouseEvent.MOUSE_OVER, manageMouseOut, false, 0, true);
  stop();
}

It works nicely. There are 2 layers, 62 frames (1st layer). 'home' is the button name.

Deno
  • 1
  • 2