Hola!
LA SITUACI�N
=============
Estoy realizando unas pruebas con un fla con un �nico objeto mc llamado
"punto" vinculado a la clase Elastic (las de R. Penner). Todo en as2.
S�lo hay un fotograma que dice as�:
/////
ratonListener = new Object();
ratonListener.onMouseDown = function(){
var inicialX = _root.punto._x;
var inicialY = _root.punto._y;
var finalX = _root._xmouse;
var finalY = _root._ymouse;
var distanciaX = _root._xmouse - inicialX;
var distanciaY = _root._ymouse - inicialY;
var t = 0;
var cuadros = 50;
_root.onEnterFrame = function(){
if(t<cuadros){
_root.punto._x = Elastic.easeInOut(t, inicialX,
distanciaX, cuadros);
_root.punto._y = Elastic.easeInOut(t, inicialY,
distanciaY, cuadros);
t++;
}else{
_root.punto._x = finalX;
_root.punto._y = finalY;
delete _root.onEnterFrame;
}
}
}
Mouse.addListener(ratonListener);
stop();
/////
Funciona a las mil maravillas. Cada vez que se oprime el bot�n del
rat�n, el punto se desplaza a la posici�n del puntero.
Y cambiando simplemente la clase Elastic por alguna de las otras de R.
Penner podemos visionar f�cilmente el resultado.
LO QUE QUERR�A
===============
Como dec�a antes, todo funciona.
Sin embargo, querr�a abstraer algo el c�digo en diferentes piezas que me
permitieran una reutilizaci�n posterior.
Para eso est�n las clases y la poo entre otras cosas.
Se me ocurre que podr�a primero intentar trocearlo aqu�, en el fla y
despu�s ya crear�a las clases necesarias.
El sistema podr�a ser que desde el fla controlo el evento de rat�n que
llama a un m�todo de la clase (del objeto mc que queremos controlar) y
luego tendr�a una clase que controlara todo el moviemiento del mc y otra
que hiciera todos los c�lculos del mc:
fla>objeto
|
MovEasing
|
Elastic
No parece nada del otro mundo.
As� troceo el c�digo anterior en el fla:
/////
ratonListener = new Object();
ratonListener.onMouseDown = LlamarMovimiento;
Mouse.addListener(ratonListener);
// Esto de abajo es lo que saco del literal de funci�n anterior.
function LlamarMovimiento(){
var inicialX = _root.punto._x;
var inicialY = _root.punto._y;
var finalX = _root._xmouse;
var finalY = _root._ymouse;
var distanciaX = _root._xmouse - inicialX;
var distanciaY = _root._ymouse - inicialY;
var t = 0;
var cuadros = 50;
_root.onEnterFrame = function (){
if(t<cuadros){
_root.punto._x = Elastic.easeInOut(t, inicialX,
distanciaX, cuadros);
_root.punto._y = Elastic.easeInOut(t, inicialY,
distanciaY, cuadros);
t++;
}else{
_root.punto._x = finalX;
_root.punto._y = finalY;
delete _root.onEnterFrame;
}
}
}
/////
Bien, esto tira tambi�n.
Sin embargo esto de aqu� abajo ya no:
/////
ratonListener = new Object();
ratonListener.onMouseDown = LlamarMovimiento;
Mouse.addListener(ratonListener);
function LlamarMovimiento(){
var inicialX = _root.punto._x;
var inicialY = _root.punto._y;
var finalX = _root._xmouse;
var finalY = _root._ymouse;
var distanciaX = _root._xmouse - inicialX;
var distanciaY = _root._ymouse - inicialY;
var t = 0;
var cuadros = 50;
_root.onEnterFrame = Mover(t, inicialX, inicialY, distanciaX,
distanciaY, cuadros);
}
function Mover(t, inicialX, inicialY, distanciaX, distanciaY, cuadros){
if(t<cuadros){
_root.punto._x = Elastic.easeInOut(t, inicialX,
distanciaX, cuadros);
_root.punto._y = Elastic.easeInOut(t, inicialY,
distanciaY, cuadros);
t++;
}else{
_root.punto._x = finalX;
_root.punto._y = finalY;
delete _root.onEnterFrame;
}
}
/////
EL PROBLEMA
============
Bueno el problema se da en la segunda versi�n del c�digo troceado. M�s
exactamente en la funci�n Mover(...).
La cuesti�n es que funciona pero no cada enterFrame sino s�lo una vez.
�Por qu� necesito trocearlo as�?
Porque cuando haga las clases necesito que est� el c�digo dividido en
funciones separadas y evitar al m�ximo los literales de funciones en las
clases (porque no es posible pasarles par�metros a estas funciones en
las clases �?)
Le he dado todas las vueltas habidas y por haber. He hecho las clases,
creado el objeto correspondiente y llamado a los m�todos y el resultado
es el mismo.
Me imagino que el problema es que lo planteo mal y que esto falla con el
onEnterFrame y no en otras situaciones. Pero �c�mo puedo resolver casos
como el de los movimientos sin recurrir al onEnterFrame?
Saludos.
:��: croma2 :������������������������:
: Carlos Terradillos Guti�rrez :
::::::::::::::::::::::::::::::::::::::
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->