Comunidad de diseño web y desarrollo en internet online

Como aplicar un mismo AS a diferentes Simbolos

Citar            
MensajeEscrito el 12 Oct 2007 04:57 pm
Que tal? mi duda es como hacer para que dos o mas simbolos (ya sean mc - botones o grafico) tengan esta misma accion:

_root.attachMovie("Design","Design",10);
w = 900;
h = 400;
onEnterFrame = function() {
// Posición destino
destx = w - _xmouse;
desty = h - _ymouse;
// Incrementos de posición
incrx = (destx - Design._x)/4;
incry = (desty - Design._y)/4;
Design._x += incrx;
Design._y += incry;
}
//PD: el problema me surje cuando quiero darle esta misma accion a otro mc, si un solo mc tiene este codigo me anda de maravilla.

Por ivanjamaica

19 de clabLevel



 

msie7
Citar            
MensajeEscrito el 12 Oct 2007 11:31 pm
puedes usar un for

Código :

var cantidad:Number = 10
for (var i = 0; i < cantidad; i++) {
  var clip:MovieClip = this.attachMovie("design", "design" + i , this.getNextHighestDepth ());
  clip.w = 900;
  clip.h = 400;
  clip.onEnterFrame = function() {
    // Posición destino
    this.destx = w - _root._xmouse;
    this.desty = h - _root._ymouse;
    // Incrementos de posición
    this.ncrx = (this.destx - this.Design._x)/4;
    this.incry = (this.desty - this.Design._y)/4;
    this.Design._x += this.incrx;
    this.Design._y += this.incry;
  } 
} 

Por penHolder

Claber

4661 de clabLevel

39 tutoriales
2 articulos

Genero:Masculino   Premio_Secretos

| mdz |

firefox
Citar            
MensajeEscrito el 13 Oct 2007 12:12 am
Hola ivanjamaica...
Lo mejor (a mi parecer) es que uses un for. Busca en la ayuda de flash para mas información.
Lee los comentarios, encontrarás una pequeña explicación de lo que se hace.

Suponiendo que quieras "attachar" el clip "Design" varias veces y aplicarle el efecto, seria algo así:

Código :

w = 900;
h = 400;
for (i=1; i<=10; i++) { //creas una varible i, dices que es igual a 1, y que es menor o igual a 10, y luego que incremente
   _root.attachMovie("Design","Design"+i,i); // "attachas" Design, y le agregas como nuevo nombre "Design" mas la variable "i" y le asignas esa profundidad
   _root["Design"+i].onMouseMove = function() { //Señalas que cada vez que se mueva el Mouse, cada uno de los clip Design realicen la funcion
      // Posición destino
      destx = w-_xmouse;
      desty = h-_ymouse;
      // Incrementos de posición
      incrx = (destx-this._x)/4; //notese que coloco "this" y no "_root["Design"+i]" porque esta es una varible que afecta de forma individual a los clips
      incry = (desty-this._y)/4;
      this._x += incrx; //igual aca uso el "this" porque la posicion en este caso es un movimiento individual
      this._y += incry;
   };
}


Espero te sirva, sino pues, entonces te entendí mal.

Saludos.

Por ironpopcorn

51 de clabLevel



 

pensando

firefox
Citar            
MensajeEscrito el 13 Oct 2007 12:13 am
vaya penHolder me has ganado en tiempo.... jejeje...

Saludos.

Por ironpopcorn

51 de clabLevel



 

pensando

firefox
Citar            
MensajeEscrito el 16 Oct 2007 03:05 pm
Gracias por las respuestas! lo voy a probar y les comento como me fue!

Por ivanjamaica

19 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Oct 2007 03:47 pm
Estuve probando de diferentes maneras, y leyendo un poco, soy novato por exelencia pero con ganas de aprender, y la cosa es que no me sale.
Tengo 2 mc en la biblioteca, por ejemplo: uno Design y el otro Industrial.
1er preg. Para cada mc tengo que tener un layer? o puedo en un mismo layer poner los dos mc y en el primer frame colocarle el codigo que me postearon arriba?
2do de sero así, tengo que poner el mismo codigo para cada mc? o hay una manera de en el mismo codigo, incluir mas de un mc?
El ejemplo de penHolder se traba en la esquina superior izquierda, tiene algun tipo de error?

Por ivanjamaica

19 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Oct 2007 04:37 pm
Quita el codigo del primer frame de cada movieclip
y coloca el siguiente codigo en el primer frame de tu pelicula principal
no es necesario que coloques los clips en el escenario, porque este codigo los coloca en el escenario

Código :

//----------------------------------------------------------
_global.W = 900;
_global.h = 400;
//----------------------------------------------------------
InicializaClip = function (Simbolo, Prof) {
   objClip = _root.attachMovie(Simbolo, Simbolo, Prof);
   objClip.onEnterFrame = function() {
      // Posición destino 
      destx = _global.W - this._xmouse;
      desty = _global.h - this._ymouse;
      // Incrementos de posición 
      incrx = (destx - this._x)/4;
      incry = (desty - this._y)/4;
      this._x += incrx;
      this._y += incry;
   }
}
//----------------------------------------------------------
InicializaClip("Design", 10);
InicializaClip("Industrial", 20);


Respondiendo a tu primer pregunta: Puedes poner tus dos movieclips en el mismo layer, mas no en la misma profundidad, pero si los colocas en el escenario, no es necesario que hagas el attach.

Respondiendo a tu segunda pregunta: el codigo arriba escrito es una funcion que inicializa cada movieclip, y le pasas como parametro el nombre del simbolo ligado a AS en la biblioteca, y la profundidad, que tiene que ser diferente para cada movieclip, y con esta función puedes inicializar todos los clips que necesites, unicamente agregando una línea de código como las dos últimas del código escrito.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 16 Oct 2007 08:14 pm
jojojo heme aqui con una solucion que a mi me funciona

en tu movieclip que se llama DESING ( la que tienes en la libreria )
le pones esto a la primera Frame

onClipEvent (enterFrame)
{
// Posición destino
destx = w - this._xmouse;
desty = h - this._ymouse;
// Incrementos de posición
incrx = (destx - this._x)/4;
incry = (desty - this._y)/4;
this._x += incrx;
this._y += incry;
}

y despues en la escena principal haces todos los attachmovies que se te ocurran



_root.attachMovie("Design","Design",10);
_root.attachMovie("Design","Design2",11);
_root.attachMovie("Design","Design3",13);

o con un array :P

y ya despues les das los valores de w y h

_root.Design.w = 900;
_root.Desing.h = 400;
_root.Design2.w = 700;
_root.Desing2.h = 200;
_root.Design3.w = 500;
_root.Desing3.h = 100;

supongo que le daras valores diferentes a cada uno

espero te sirva saludos

Por angelkaido

38 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 16 Oct 2007 09:06 pm
ivanjamaica y angelkaido.
Por favor, para postear código, háganlo entre las etiquetas [*code] y [*/code] (sin los asteriscos). Así será mucho más entendible lo que postean.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 16 Oct 2007 09:18 pm
Sale .. entendido y anotado

Por angelkaido

38 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Oct 2007 12:51 am
angelkaido, cuando coloco el primer codigo que posteaste, me tira el siguiente error:

Código :

Clip events are permitted only for movie clip instances 

Por ivanjamaica

19 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Oct 2007 01:45 am
Bueno, eso sucede porque el código que escribió angelkaido, es para colocarlo en un MC. NO en la línea de tiempo. Es porque usa el "onClipEvent".

Saludos.

Por ironpopcorn

51 de clabLevel



 

pensando

firefox
Citar            
MensajeEscrito el 17 Oct 2007 02:52 am
jajaja por eso puse LO PONES DENTRO DEL MovieCLIP Design en el primer FRAME .. ashhh :(
por que la gente no me entiende :D si tienes mas problemas me dices y te hago el fla :D

Saludos ;)

Por angelkaido

38 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Oct 2007 04:39 am
Obviamente hago algo mal...
1ro Creo un movie clip vacio, vinculado (en la opcion de edicion de un simbolo) con el nombre de "pelicula".
2do Creo otro mc llamado "diseño", que dice diseño, dentro de "pelicula", vinculado (y lo coloco fuera de los margenes del escenario)
3ro Al mc de "diseño" (no al frame) le doy este codigo:

Código :

 
onClipEvent (enterFrame)
{
// Posición destino 
destx = w - this._xmouse;
desty = h - this._ymouse;
// Incrementos de posición 
incrx = (destx - this._x)/4;
incry = (desty - this._y)/4;
this._x += incrx;
this._y += incry;
}

4to Creo otro mc con el nombre de "3d" y sigo los mismos pasos
5to Salgo de la edicion de "pelicula" y en el frame 1 del mc "pelicula" coloco este codigo
[code]
_root.attachMovie("diseño","diseño",10);
_root.attachMovie("3d","3d",11);
_root.diseño.w = 900;
_root.diseño.h = 400;
_root.3d.w = 800;
_root.3d.h = 450;
(Todos los paso (1ro-2do-3ro-4to y 5to) en el mismo layer)

RESULTADO --------
cuando reprodusco la pelicula me aparece en la esquina superior izquierda para de la palabra diseño.

Por ivanjamaica

19 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Oct 2007 12:53 pm
1) si tu movieclip "pelicula" lo pones manualmente en el escenario, no es necesario los attachMovie de los otros dos clips, puesto que ya estan instanciados dentro de "pelicula", y al hacer referencia a los clips que estan dentro de "pelicula", tienes que poner la dirección completa:

Código :

_root.pelicula.diseño.w = 900;
_root.pelicula.diseño.h = 400;
_root.pelicula.3d.w = 800;
_root.pelicula.3d.h = 450;

// y en el evento (enterFrame) de cada clip cambiar las líneas:

destx = this.w - this._xmouse;
desty = this.h - this._ymouse;



2) si el clip "pelicula" no lo pones en el escenario, y quieres instanciarlo por código, entonces al que le tienes que hacer attach es al movieclip "película"

Código :

_root.attachMovie("pelicula","pelicula",10);
_root.pelicula.diseño.w = 900;
_root.pelicula.diseño.h = 400;
_root.pelicula.3d.w = 800;
_root.pelicula.3d.h = 450;

// y en el evento (enterFrame) de cada clip cambiar las líneas:

destx = this.w - this._xmouse;
desty = this.h - this._ymouse;



3) si no quieres instanciar el clip "pelicula", y quieres que los clips "diseño" y "3d", se carguen en la línea de tiempo principal, entonces coloca el siguiente código en el primer fotograma de la película principal, sin colocar tus clips en el escenario:

Código :

//----------------------------------------------------------
InicializaClip = function (Simbolo, Prof, Ancho, Alto) {
   objClip = _root.attachMovie(Simbolo, Simbolo, Prof);
   objClip.w = Ancho;
   objClip.h = Alto;
   objClip.onEnterFrame = function() {
      // Posición destino
       destx = this.w - this._xmouse;
       desty = this.h - this._ymouse;
       // Incrementos de posición
       incrx = (destx - this._x)/4;
       incry = (desty - this._y)/4;
       this._x += incrx;
       this._y += incry;
   }
}
//----------------------------------------------------------
InicializaClip("diseño", 10, 900, 400);
InicializaClip("3d", 11, 800, 450);

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7

 

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