Foros del Web » Creando para Internet » Flash y Actionscript »

HELP! Problema con AMFPHP

Estas en el tema de HELP! Problema con AMFPHP en el foro de Flash y Actionscript en Foros del Web. Buenas, Ante todo quiero agradecer a Tmeister ya que gracias a su sitio encontre mucha info sobre el AMFPHP. Estoy haciendo un sitio en flash, ...
  #1 (permalink)  
Antiguo 11/07/2005, 09:30
 
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires - Argentina
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
HELP! Problema con AMFPHP

Buenas,

Ante todo quiero agradecer a Tmeister ya que gracias a su sitio encontre mucha info sobre el AMFPHP.
Estoy haciendo un sitio en flash, que mediante una consulta en una base MySQL (mediante PHP) tiene que mostrar una determinada cantidad de botones (dependiendo de cuantos registros haya) y al presionar cada boton debera mostrar en un movieclip una imagen determinada. Los botones me los duplica bien, el problema es que presione el boton que presione siempre me muestra la misma foto y el mismo titulo (el ultimo registro de la consulta), hay algo que debo estar haciendo mal. En la base de datos esta la direccion de cada jpg (por ejemplo img/20.jpg)

Les paso el codigo que tengo en Flash:

p._visible = false;
basey = 0;
import mx.remoting.Service;
import mx.rpc.FaultEvent;
import mx.remoting.PendingCall;
import mx.rpc.ResultEvent;
import mx.rpc.RelayResponder;
var urlGateway:String = "http://www.espak.com.ar/amfphp/gateway.php";
var services:String = "resultset";
var myService:Service = new Service(urlGateway, null, services, null, null);
var calling:PendingCall = myService.getData();
calling.responder = new RelayResponder(this, "getData_Result");
function getData_Result(obj:ResultEvent) {
rows = obj.result._items;
x = 0;
for (var info in rows) {

tit=rows[x].titulo;
picture=rows[x].foto;

clip = this.p.duplicateMovieClip("p"+x, x+10);
clip._y = basey;
clip.onPress = function() {
_root.titulo=tit;
loadMovie(picture,"_root.foto");
};
basey += 30;

x = x+1;
}
}


Desde ya muchas gracias !
  #2 (permalink)  
Antiguo 11/07/2005, 09:53
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
El problema es que estas sobreescribiendo las variables y por ende su valor siempre sera el ultimo..

La solucion es asignar una variable con el titulo y una variable con el url del foto a cada clip... algo asi...

Código:
for (var info in rows) {
	clip = this.p.duplicateMovieClip("p"+x, x+10);
	clip.tit = rows[x].titulo;
	clip.picture = rows[x].foto;
	clip.onPress = function() {
		_root.titulo = this.tit;
		loadMovie(this.picture, "_root.foto");
	};
	clip._y = basey;	
        basey += 30;
	x = x+1;
}
  #3 (permalink)  
Antiguo 11/07/2005, 10:09
 
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires - Argentina
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
Excelente !!! sos un grande !
muchas gracias !!!!!!!!!!!!!!!!!

Igualmente no entiendo porque se sobreescibian, sabia que pasaba eso, pero no porque, ya que supuestamente, cada vez que recorre el for crea un boton nuevo, nose porque modifica las acciones de los botones anteriores.
  #4 (permalink)  
Antiguo 11/07/2005, 10:13
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
tu codigo dentro del for estaba asi:

Código:
tit=rows[x].titulo;
picture=rows[x].foto;
tit se refiere a por ejemplo si tu codigo esta en la linea de tiempo principal,

_level0.tit

Esto depende del path de tu script pero siempre se referia a la misma variable, en cambio si metes la variable a tu clip duplicadola variable queda asi

_level0.p0.tit = elvalor de row[0]
_level0.p1.tit = elvalor de row[1]

etc etc...

Me explico
  #5 (permalink)  
Antiguo 11/07/2005, 10:15
 
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires - Argentina
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
ahh, esta bien, me voy a poner a examinarlo.
muchas gracias nuevamente!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.