Comunidad de diseño web y desarrollo en internet online

For dentro de onEnterFrame

Citar            
MensajeEscrito el 15 May 2007 05:45 pm
Buenas.

Estoy estudiando actionscript y tengo una duda. Mi profesor dice que no es buena idea colocar un for dentro de un onEnterFrame y a mi eso me resulta un poco raro porque yo creo que si tengo un bucle que se repite 50 veces es lo mismo que escribir las lineas de código que van dentro del bucle 50 veces entonces porque va a ser malo hacerlo...

Estoy equivocado?? o es mi profesor al que se le ha ido la pinza.

Gracias de antemano.

Por Ardul

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 May 2007 07:16 pm
primero porque un onEnterFrame gasta muchos recursos y segundo no veo el sentido de que si tu onEnterframe hace 50 veces y despues otro ciclo de 50 no le veo el sentido
Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

msie7
Citar            
MensajeEscrito el 16 May 2007 03:15 pm
Me inclino a pensar que tu profesor dijo eso para un caso particular, porque los for suelen consumir muchos recursos y llamarlos 12 o 30 veces por segundo (dependiendo de los fps) puede no ser muy inteligente a menos que sea absolutamente necesario.

Igualmente, si en tu caso no hay otra manera de crear el código que no sea con un for, es válido usarlo, siempre con el continue (si es posible) y dejando de emplear el for cuando ya no hace falta.

Ayudaría mucho que pusieras el caso particular en el que te dijo que no convenía.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 17 May 2007 02:15 am
ok veamos si tu fps son 20 (osea 20 frames cada segundo) los onEnterframe se ejecutan (20 veces cada segundo) y si dentro vas a colocar un for de (i=1;i<=50;i++) estamos hablando que este código se ejecutara 20 veces y si no matas el onEnterFrame (delete onEnterFrame;) se ejecutara hasta el infinito, aquí un código que te mostrará lo explicado, estoy matando el onEnterFrame al segundo.

_root.nCont = 1;
_root.onEnterFrame = function(){
trace("paso numero " + _root.nCont);
for(i=1;i<=50;i++){
trace(i);
}
_root.nCont++;
}
_root.inter = setInterval(function(){clearInterval(_root.inter);delete _root.onEnterFrame;}, 1000);


Saludos :D

Por flasher

SWAT Team

120 de clabLevel

1 tutorial

 

Peruvian City

firefox
Citar            
MensajeEscrito el 17 May 2007 02:51 am
Supongamos que tenemos una iteración necesaria (y que el enterFrame debe ser permanente). Un truco es ahorrar la cantidad de código que usamos.

Por ejemplo, hace unos días estuve ocupado en una función que detectaba el punto (más o menos exacto) donde se tocaban un MC y una línea recta.

Como el único modo que tenía de hacerlo era una vez por fotograma, intenté reducir al máximo la cantidad de cuentas que calculaba en el for y, lo principal. Puse el for en una función para con un return dejar de ejecutarlo una vez que había encontrado las coordenadas.

Es por eso que decía que hay casos en los que hace falta un for y un enterFrame, pero hay que hacerlo con cuidado, tratar de no usar raíces cuadradas o funciones trigonométricas y, en la medida de lo posible, si hacen falta valores como estos, precalcularlos. En el caso que comenté arriba, el ángulo de la línea no variaba dentro del for, por lo que en una variable había almacenado el seno y coseno de ese ángulo con grandes mejoras a la performance.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 17 May 2007 06:26 am
Ok, mi profesor me dijo que en general no lo hiciera nunca.

La historia es que quería hacer un juego de un helicóptero que si pegaba con el suelo o el techo explotaba. Para hacer un hittest preciso puse un montón de clips vacíos por el contorno del helicóptero y un for dentro de el onEnterFrame para que estuviera comprobando continuamente si alguno chocaba. Funcionaba perfectamente pero mi profesor me dijo eso por eso me extrañó.

Saludos y gracias.

Por Ardul

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 May 2007 03:38 am
Está en lo cierto (por lo de en general). Tarde o temprano tus scripts se van a volver insoportablemente lentos. Respecto al método de colisión, podés intentar (aunque puede ser un poco lento) de la siguiente manera:
http://www.kirupa.com/forum/showthread.php?t=203701
(la respuesta está en los comentarios)

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox

 

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