Soy un pobre hombre al que el as3 está arruinando todos sus truquis de as2.
Tengo un fla con este código como base. Pone un botón y le da un on rollover-onrollout :
____________________________________________
package ugh{
import flash.display.*
import flash.events.*
public class ugh extends Sprite{
public function ugh(){
function onOver(e:MouseEvent){
var d=e.target
trace("in:"+d)
var g=new Go(d)
}
function onOut(e:MouseEvent){
var d=e.target
trace("out:"+d)
var g=new Go(d)
}
var b=new boton()
addChild(b)
b.addEventListener(MouseEvent.MOUSE_OVER,onOver)
b.addEventListener(MouseEvent.MOUSE_OUT,onOut)
}// fin ugh
}
}
_____________________________________
Por otro lado, tengo esta clase estática, a la que se llama al hacer los rollovers
_______________________________
package{
import flash.display.*
import flash.events.*
public class Go{
public function Go(loque:Sprite){
if(loque.hasEventListener(Event.ENTER_FRAME)){
trace("quita")
loque.removeEventListener(Event.ENTER_FRAME, procede)
}else{
trace("pone")
loque.addEventListener(Event.ENTER_FRAME,procede)
}
var k=0
function procede(e:Event){
trace("procede:"+e.target+" k:"+k)
k++
if(k>10){
loque.removeEventListener(Event.ENTER_FRAME, procede)
}
}// fin procede
}// fin go
}// fin class
}// package
_______________________________________________
Si te pones encima del botón, sale una cuenta "1, 2, 3...";un número onEnterFrame hasta diez.
Pero si sales antes de que la cuenta acabe, aunque detecta el eventListener y lo quita, la cuenta sigue hasta el final, lo que significa que no lo elimina.
Tiene alguien alguna idea de qué es lo que estoy haciendo mal?
gracias por adelantado