Comunidad de diseño web y desarrollo en internet online

Detectar una posición "x" de un "mc" en movimiento

Citar            
MensajeEscrito el 28 Ago 2011 11:17 am
Hola;

Les agradecería si me pudieran ayudar sobre un problema que se me presenta con una página que estoy haciendo en Flash.

¿Cómo es posible detectar una posición "x" de un "mc" en movimiento con un Tween, y hacer que se ponga en movimiento otro "mc" cuando pase por esa pocición?. Los "mc" están atachados al escenario.

Lo que quiero realizar es una sucesión de mc que se vayan moviendo de manera consecutiva uno detras de otro antes de que lleguen a pararse, lo hago con varios "setTimeout" que llaman a distintas funciones que contienen el Tween de cada "mc", pero para el conjunto general de la web se me presenta un conflicto y por lo tanto no me conviene hacerlo así.

No se si se entiende lo que pretendo hacer. Gracias por la atención.

Un saludo

Por rantopad

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ago 2011 01:19 pm
/*
Hola.

Se me ocurre que hagas lo siguiente
Dentro de cada MC pones un this.onEnterFrame = function() {
De esta forma puedes sacar las coordenadas donde se encuentra cada MC en todo momento
Los puedes poner directamente en los MC o los cargas con un attach para que no trabajen hasta que tu digas

La verdad es que los timer, los evito o solo para pequeñas cosas.

Estoy haciendo un trabajo en el que se tienen que disparar muchos MCs y lo que hago es utilizar una linea de tiempo con instrucciones a base de If
*/
this.onEnterFrame = function() {
trace("que te haga un trazado de la posicion o lo que tu quieras para hacer el seguimiento");
if ("Si esto es igual" == "a esto") {
// Que haga play() etc. a lo que quieras
delete this.onEnterFrame;
}
};


Espero que te de ideas.

Salu2
Cuae

Por Cuae

29 de clabLevel



 

msie8
Citar            
MensajeEscrito el 30 Ago 2011 07:53 pm
hola Cuae;

gracias por la idea, lo que hice fue lo siguiente:

Puse un "this.onEnterFrame = function() {" en cada MC, y saque las coordenadas con
"Math.round(this._x);", las almacene en una variable y luego puse la condicional
"if(posicionX == 314){" y llame a la función del escenario.

El único problema es que el seguimiento del trazado de la posición del MC, al ser un movimiento desacelerado, la coordenada "X" va dando numeros salteados y por lo general distintos cada vez, por lo que es difícil acertar en el numero de coordenada que quiero que se produzca la acción.

Saludos, rantopad

Por rantopad

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Sep 2011 05:16 pm
Hola.
Prueba este codigo tal como te lo pongo
Crea una nueva pelicula y creas un MC con el nombre MC en el frame 1 y pegas el codigo.
He relizado la prueba y me da las mismas coordenadas siempre.
Con lo cual puedes saber donde se encuenrtra el MC.

Aqui le digo que si es igual o mayor a la coordenada x, lo que tiene que hacer.
if (MC._x>=150) {

Como puedes ver, le digo que se desplace de la coordenada 30 a la 200 y tiempo 10
-----------------------------------
this.onEnterFrame = function() {
trace(Math.round(MC._x));
if (MC._x>=150) {
delete this.onEnterFrame;
// Que tiene que hacer
}
};
var mueve = new mx.transitions.Tween(MC, "_x", Tween, 30, 200, 10);
-----------------------------------
Puedes fijarte que solo pongo "Tween" y carga una transicion predeterminada.
No hay que poner el:
import mx.transitions.*;
import mx.transitions.easing.*;
ni nada de nada. Funciona sin mas.

Salu2.
Cuae

Por Cuae

29 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Sep 2011 02:07 pm
Hola;

Bueno ya lo tengo resuelto como me digiste, ha quedado perfecto.

Ahora lo que se me plantea es otro problema distinto, ¿cómo pongo un cargador para cada mc (que son 9 en total) y que están creados con un ciclo o loop, es decir:

var contador = 0;
while(contador < 10){
mc = this.attachMovie("Marco1", "web" + contador + "_mc", contador++);
}

Quiero crear los cargadores como los mc, atachando uno al escenario y con un loop crear el resto asociando cada uno al mc correspondiente.

Perdona por las molestias, y gracias.

Un saludo, rantopad

Por rantopad

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Sep 2011 04:50 pm
Hola.
Aquí te pongo un ejemplo de como hacerlo:

// 1º
// Le pasas la variable de la direccion de donde se tiene que cargar la foto con: mc.DirFoto = DirDeLaFoto;
mc = this.attachMovie("Marco1", "web"+contador+"_mc", contador++);
mc.DirFoto = DirDeLaFoto;
//*******
// 2º
// Todo esto lo pones dentro del attach
// Puedes poner una barra de carga: Progres y un texto que refleje el tanto por ciento: Porcen
// Si no quieres utilizar precarga: Eliminas el Porcen y los Progres.

CargaPeli(this.DirFoto, this);
function CargaPeli(QuePeli, DondeVa) {
var precargador_mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
// Aqui empieza la precarga
var porcen:Number;
Porcen = Math.round((loadedBytes*100)/totalBytes);
};
listener.onLoadComplete = function(target_mc) {
Progres._visible = 0;
Progres.stop();
// Aqui ya esta cargada la foto y si quieres que tenga alguna transicion etc.
// lo que quieras que haga
};
listener.onLoadError = function(target_mc:MovieClip, errorCode:String, httpStatus:Number) {
// Si hay error aqui le dices que tiene que hacer
};
precargador_mcl.addListener(listener);
precargador_mcl.loadClip(QuePeli, DondeVa);
}
// Todo esto tambien se puede poner en el _root y desde cada attach llamarlo pasandole lo que tiene que hacer: _root.CargaPeli(QuePeli, DondeVa)

Salu2

Cuae

Por Cuae

29 de clabLevel



 

msie8
Citar            
MensajeEscrito el 13 Sep 2011 07:20 pm
Hola;

1º - Perdona por mi torpeza, no entendí muy bien Cuae, no tengo que cargar ninguna foto, lo que cargo es un archivo swf, ya que la foto la tengo dentro de éste.
Me imagino que sería:

mc = this.attachMovie("Marco1", "web"+contador+"_mc", contador++);
mc.DirFoto = "web_"+contador+".swf"; (si no esta cargado previamente no puedo pasarlo a una variable).
//¡Ojo!, "web"+contador+"_mc", son los mc que se mueven por el escenario y dentro hay un contenedor (carga_mc), donde cargo por loop "web_"+contador+".swf":

var contador = 0;
while(contador < 10){
mc = this.attachMovie("Marco1", "web" + contador + "_mc", contador++);
mc.carga_mc.loadMovie("web_"+contador+".swf");//Esto sería sín precarga, como quiero ponerla, ésta última línea la quito.

2º - Ahora tengo Progres y Porcen en un mc llamado "cargadorExterno_mc". Al poner la precarga en el mismo sitio del attach, NO dentro de éste, hago:

cargadorExterno_mc._visible = false;
var precargador_mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadStart = function(target_mc) {
trace("Iniciando");
};
listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
trace("En progreso");
var porcentaje:Number;
cargadorExterno_mc._visible = true;
porcentaje = Math.round((loadedBytes*100)/totalBytes);
cargadorExterno_mc.porcentaje_txt.text = porcentaje;
target_mc._visible=false;
target_mc.stop();
};
listener.onLoadComplete = function(target_mc) {
trace("ya");
cargadorExterno_mc._visible = false;
target_mc._visible=true;
target_mc.play();
};
precargador_mcl.addListener(listener);
precargador_mcl.loadClip("web_"+contador+".swf", mc.carga_mc);


- Al exportar, el trace me da los valores del proceso de la carga correctos, pero el "cargadorExterno_mc" no me funciona, y como quiero que cada "web"+contador+"_mc" tenga el suyo, ¿cómo lo haría con loop?

Saludos, rantopad

Por rantopad

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Sep 2011 06:45 pm
Hola.

No importa que sea una foto o un swf, es lo mismo.

Crea un nuevo fla y practica con el ejemplo que te puse anteriormente.
De forma que empieza con una sola carga.
Luego lo haces con el cargador dentro y fuera del attach.

De esa forma estoy seguro que lo vas a entender y sobre todo su proceso.

Dedica unas horas al ejemplo que te he dado, no corras y entiende su esencia ya que es algo muy importante para todo lo que puedas hacer en el futuro.

Recuerdo muy bien mis inicios de flash con el tema de los cargadores, me dio muchos quebraderos de cabeza.

El ejemplo que te he pasado, es lo que utilizo desde hace años y con ello puedes hacer mucho mas de lo que te imaginas.

Suerte.

Cuea

Por Cuae

29 de clabLevel



 

msie8

 

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