Comunidad de diseño web y desarrollo en internet online

¿Qué es mejor, un for con hitTest o MouseEvent.MOUSE_OVER?

Citar            
MensajeEscrito el 18 Jun 2010 11:19 pm
Hola,

Otra vez tengo un problema de optimización, en este caso quiero saber que es más optimizado, si usar un for con hitTest sobre el objeto para detectar cuando está el mouse ensima y cuando no, o agregar un listener a cada objeto con mouse Over y Mouse Out.

Aclaro que el producto que voy a desarrollar tiene que estar preparado para funcionar con muchos objetos (hasta 250) y de la manera más óptima.

Codigo actual (for con hitTest). Anda totalmente bien, hasta ahora parece bastante rapido y funcional...

Código ActionScript :

//Es un estilo de menu que cuando el mouse esta encima, los objetos se colorean de rojo y cuando no, vuelven a su color normal
var i:int;
for(i=0;i<=objetos_totales;i++){
var obj:Object = contenedor.getChildAt(i);
if (obj.hitTestPoint(stage.mouseX,stage.mouseY,true)) {
cambiarColor(obj,0xFF0000);
}
}




Desde ya,

Muchisimas gracias.

Por lea123456

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Jun 2010 07:54 pm
Yo siempre e escuchado que HitestConsumia bastante paro tmb abria que ver cuan grande va a ser tu proyecto y si va a consumir recusos por algun otro lado
tmb podrias hacer que al colocarte encima de tu menu lanzar un enterframe y dentro comprobar con if la posicion del raton respecto al area de cada boton en plan

if(stage.mouseX >= obj[n].x && stage.mouseX <= obj[n].x + obj[n].width && stage.mouseY >= obj[n].y && stage.mouseY <= obj[n].y + heidth){
trace("estas encima del boton numero "+ n);
}

despues al salir fuera del componente pues eliminar el listener enterFrame

o si no detectar la posicion del raton que cuando se ponga encima del menu utilizando la tecnica anterior agregar todos los listeners rollover y al salir fuera del area del menu eliminarlos

no se si te servira saludos

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie8
Citar            
MensajeEscrito el 20 Jun 2010 03:34 pm
El tema es que con hitTest es facil remover y agregar en tiempo real, ya que el valor del for es una variable con todos los items y si elimino uno no tengo que complicarme mandando funciones y listeners en un array para que la otra clase pueda borrar el listener. Es un proyecto bastante grande y requiere muchas comunicaciones entre clases (a parte de que así queda mas prolijo).
La idea es saber si un listener puede consumir tanto como el hitTest en un enterFrame. Habría que analizar cuánta memoria consumen muchos listeners y cuánta memoria un for con hitTest en EnterFrame.

Igualmente, muchas gracias

Por lea123456

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Jun 2010 08:58 pm
Con el primer ejemplo que dije en principio solo usas un listener y un if por lo que eliminas el hitest o tener que usar listeners para todos los objetos, de todas maneras tendras que lanzar el for cada x intervalo igualmente de alguna manera no? 1 listener lo vas a tener que utilizar igualmente por narices.

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie8
Citar            
MensajeEscrito el 21 Jun 2010 02:25 pm

giskard escribió:

Con el primer ejemplo que dije en principio solo usas un listener y un if por lo que eliminas el hitest o tener que usar listeners para todos los objetos, de todas maneras tendras que lanzar el for cada x intervalo igualmente de alguna manera no? 1 listener lo vas a tener que utilizar igualmente por narices.


Si, pero con ese ejemplo queda todo mas optimizado :D, ya que al estar fuera del menu no ejecuta nada.

Muchas gracias!

Por lea123456

33 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.