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

acceder funcion de MoviewClip atachado

Estas en el tema de acceder funcion de MoviewClip atachado en el foro de Flash y Actionscript en Foros del Web. Hola, llevo ya varios días buscando y na... Tengo 2 problemas: El primero y más importante es que tengo un menú y cada opción carga ...
  #1 (permalink)  
Antiguo 25/02/2008, 09:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 9 meses
Puntos: 0
acceder funcion de MoviewClip atachado

Hola, llevo ya varios días buscando y na...

Tengo 2 problemas:

El primero y más importante es que tengo un menú y cada opción carga sus imagenes, borrando las del anterior menú pinchado. Bien, conseguí cargar las imagenes creando un MC vacío con código en el onEnterFrame.
Cada vez que pasaba miraba si había terminado de cargar la anterior foto y si sí, mandaba cargar otra a un MC el cual tenía MovieClipLoader para gestionar la descarga.

Pues el problema era que si pinchabas en una opción del menú y en otra rápidamente, al final no se cargaba ninguna imagen y había que pulsar F5 en el navegador para actualizar la web.

Cada vez que cargaba una opción del menú, obvio que borraba todas las MC de las fotos y el array de fotos y la MC del onEnterFrame...

¿Alguna idea para esto?

------
El segundo problema viene dado un poco por buscar la solución. Es más sencillo de explicar...
Cuando atacho un MC con Action Script no puedo acceder a sus variables y funciones a menos que las cree una vez atachado de forma:

Cita:
var new_mc:MovieClip = attachMovie(...);
new_mc.newFunction();
new_mc.newVariable = 3;
Aunque a newVariable le asigne un valor en la nueva MC, después de atachar tiene undefined.


Código del MC atachado (he quitado partes para no agobiar mucho):

Cita:
import mx.transitions.Tween;
import flash.display.BitmapData;

var indice:Number = -1;
var precargador_mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();

listener.onLoadStart = function(target_mc) {

};

listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {

};

listener.onLoadComplete = function(target_mc) {

target_mc._width = 91.6;
target_mc._height = 56.7;
target_mc._y = 0;
target_mc._x = (target_mc._width * i) + (sepBetwenPics * i);
};

listener.onLoadError = function(target_mc:MovieClip, errorCode:String, httpStatus:Number) {

var noFoto_bmp:BitmapData = BitmapData.loadBitmap("noImagen.png");
target_mc.attachBitmap(noFoto_bmp, target_mc.getNextHighestDepth());

target_mc._width = 91.6;
target_mc._height = 56.7;
target_mc._y = 0;
target_mc._x = (target_mc._width * i) + (sepBetwenPics * i);
};

precargador_mcl.addListener(listener);
Muchas gracias por todo.
  #2 (permalink)  
Antiguo 25/02/2008, 09:40
 
Fecha de Ingreso: diciembre-2004
Mensajes: 418
Antigüedad: 19 años, 11 meses
Puntos: 2
Re: acceder funcion de MoviewClip atachado

si quieres acceder a una variable de un mc atachado, debria ser asi:

nuevo = mc_vacio.attachMovie("mimc","nuevo_mimc",0);
nuevo.mivariable=3;

si la quiero usar seria:

mc_vacio.nuevo_mimc.mivariable
  #3 (permalink)  
Antiguo 25/02/2008, 13:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: acceder funcion de MoviewClip atachado

Bueno, he creado un ejemplito básico para entenderlo mejor, a ver si a alguien más le pasa, empiezo a pensar que soy yo... :S

Creo un documento nuevo de flash, creo un rectángulo y lo convierto en símbolo MovieClip, el símbolo se llama MCPelicula. A la instancia de dicho símbolo la llamo main_mc. En el frame 1 meto el siguiente código:
Cita:
main_mc.onRelease = function() {

var new_mc:MovieClip = attachMovie("MCPelicula", "segunda_mc", 1);
new_mc.fusuario("hola");
trace("new_mc.texto = "+new_mc.texto);
}
Y dentro de MCPelicula, en el frame 1 he puesto el siguiente código:
Cita:
var texto:String = "";
function fusuario(ptext:String)
{
texto = ptext;
trace("texto = "+texto);
}
Como veis es sencillo, al hacer un clic en main_mc tiene que crear otra igual y pasar la cadena "hola" pues lo único que me saca en la ventana de salida es esto:
Cita:
new_mc.texto = undefined
Lo cual significa que NO ha entrado a ejecutar la función "fusuario" y que la variable no está definida...

¿Cómo lo veis?

Por otro lado, si el código del evento onRelease lo cambio por esto otro:
Cita:
main_mc.onRelease = function() {

var new_mc:MovieClip = attachMovie("MCPelicula", "segunda_mc", 1);

new_mc.fusuario = function (ptext:String){
texto = ptext;
trace("texto = "+texto);
}
new_mc.fusuario("hola");

trace("new_mc.texto = "+new_mc.texto);
}
La llamada a la función sí funciona, aunque el último trace no saca el contenido de la variable new_mc.texto.
Este es el resultado:
Cita:
texto = hola
new_mc.texto = undefined
  #4 (permalink)  
Antiguo 25/02/2008, 14:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 418
Antigüedad: 19 años, 11 meses
Puntos: 2
Re: acceder funcion de MoviewClip atachado

En tu primer ejemplo, en donde tas attachando?? ahi sale q en la nada.
var new_mc:MovieClip = attachMovie("MCPelicula", "segunda_mc", 1);

cuando deberia ser:
this.createEmptyMovieClip("vacio_mc",0);
var new_mc:MovieClip = vacio_mc.attachMovie("MCPelicula", "segunda_mc", 1);

En tu segundo ejemplo, en le ultimo, no te sale el
trace("new_mc.texto = "+new_mc.texto);

por que la variable new_mc.texto se ha llenado y existe solo en la funcion fusuario. fuera de ella es inexistente. el trace deberia estar dentro de la funcion para poder imprimir el valor
  #5 (permalink)  
Antiguo 25/02/2008, 16:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: acceder funcion de MoviewClip atachado

Cita:
Iniciado por Hats Ver Mensaje
En tu primer ejemplo, en donde tas attachando?? ahi sale q en la nada.
var new_mc:MovieClip = attachMovie("MCPelicula", "segunda_mc", 1);

cuando deberia ser:
this.createEmptyMovieClip("vacio_mc",0);
var new_mc:MovieClip = vacio_mc.attachMovie("MCPelicula", "segunda_mc", 1);

En tu segundo ejemplo, en le ultimo, no te sale el
trace("new_mc.texto = "+new_mc.texto);

por que la variable new_mc.texto se ha llenado y existe solo en la funcion fusuario. fuera de ella es inexistente. el trace deberia estar dentro de la funcion para poder imprimir el valor
Bueno, de ninguna de estas formas me funciona... a menos que declare la función y la variable donde he puesto el atach. cuando no se pone nada el attach lo hace en el this o en la MovieClip actual. Bueno, eso lo tengo comprobado y funciona, lo que no funciona es el acceso a las cosas de dentro del MC. Igual no se pueden utilizar como si furan propiedades y métodos...
Pero si en lugar de hacer una attach pongo la MC en el documento sí puedo acceder.
¿Hay que hacer algo más aparte de vincular el MC en la biblioteca? No me puedo creer que no pueda acceder al código de un MC atachado... :S
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 00:08.