Comunidad de diseño web y desarrollo en internet online

Aplcando la misma función a varios MovieClips

Citar            
MensajeEscrito el 16 Mar 2009 11:19 am
Hola buenas!!! Que tal? Ya hace que no tocaba nada de Flash y ahura que vuelvo a la carga me topé con un problemilla, que en parte no sé si lo estaré buscando en vano.

Mi problema es el siguiente: Quería hacer que con una sola función me refiera a varios objetos de la película Flash, todos empezando con el mismo nombre, por ejemplo "bola". Imaginaos que en el escenario hay 4 bolas, cada una de ellas se llamaría bola1, bola2, bola3 y bola4 respectivamente. Me interesaría saber como podría llamar a todas ellas para realizar una función, por ejemplo esta:

boton.onRelease=function(){
bola*._x+=2;
};

Donde * es lo que indica que busque en el escenario todos los objetos que contengan en el nombre la palabra bola para que realicen la misma función.

Muchas gracias gentes!!! Espero respuestas ;).

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Mar 2009 01:53 pm
Hola, sera esto lo que buscas?

Código ActionScript :

for( var i:Number = 1; i <= 4; i++ )
{
    _root["bola" + i]._x = 2;
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 16 Mar 2009 08:26 pm
Buah men!!! eres un crack :D, esto justo era lo que andaba buscando si si si :D, mil millones y medio más uno de gracias LongeVie xD ;)

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2009 12:53 pm
Hola wenas de nuevo! Akí con respecto a este tema tengo un problemilla. La función "for" funciona perfectamente para lo que es desplazamientos, etc... Sin embargo pensé que si funcionaría para ello, también funcionaría para hayar lugares en el mapa, que desgraciadamente no es posible pues, si intentas hallar las hipotenusas de la situación de las 4 bolas te halla solo la de número más grande en el nombre, es decir, si tenemos bola1, bola2, bola3 y bola4, solo te halla la referida a la bola4. El código dentro de cada bola es el siguiente:

if(this._x<25){this._x=25;d1.text=d1.text*(-1);};
if(this._y<25){this._y=25;d2.text=d2.text*(-1);};
if(this._y>375){this._y=375;d2.text=d2.text*(-1);};
if(this._x>525){this._x=525;d1.text=d1.text*(-1);};
this._x-=d1.text*3;this._y-=d2.text*3;
for(var i:Number=1;i<=4;i++){hipo.text=Math.sqrt(Math.pow(this._x-_parent._root["bola"+i]._x,2)+Math.pow(this._y-_parent._root["bola"+i]._y,2),2);};

La verdad, no lo entiendo, como es que si muevo las bolas simultáneamente con la misma función funcione perfectamente, sin embargo a la hora de sacar números me encuentro con este problema, pues con la siguiente función externa a las bolas detecta cada bola por individual:

for(var i=1;i<=4;i++){_root["bola"+i]._x++;};

En fin, la verdad es que no controlo nada de Flash, sin embargo me imagino que habrá alguna manera de que si usamos esta función dé por ejemplo el valor más pequeño, o el valor más grande tal que así:

for(var i=1;i<=4;i++){d1.text=_root["bola"+i]._x;};

Pero con la diferencia de dar el valor más pequeño entre los 4 que debería de haber pues, nos estamos refiriendo a las 4 bolas y no solo a la bola4.

No sé si me expliqué bien, sin embargo espero que alguien me entienda y sepa responderme xD, sino habrá que esforzarse más en la explicación. Un saludo y gracias ;).

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2009 09:25 pm
Prueba con:

Código ActionScript :

for(var i:Number=1;i<=4;i++)
{
   hipo.text += " :"+i+" = "+ Math.sqrt(Math.pow(this._x -_root["bola"+i]._x, 2) + Math.pow(this._y - _root["bola"+i]._y, 2 ) , 2);
}


Suerte.

PS. Tienes que espaciar tu codigo y colocarlo dentro de

Código :

[code]Codigo[/code]

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 20 Abr 2009 09:59 am
Muchas gracias Longe Vie por tus respuestas, me cundieron mucho, ahora empiezo a comprender el funcionamiento de for y while, que antes buf!!! Sin embargo no entiendo una cosa, cuando uso cualquiera de estos para hacer un bucle hasta cierto número para duplicar un MC en el escenario, solo aparece el último, no aparecen los demás. A ver si lo fui a hacer mal. Yo puse esto:

Código :

for(var i:Number=0;i<10;i++){
   ob.duplicateMovieClip("ob"+i,i);
   _root["ob"+1]._x=10*i;
};


Lo que pensaba es que pondría cada resultado uno por uno. Primero probaría con 1, si se corresponde a la condición de que i es menor que 10 lo pone, entonces haría eso, con el valor de i=1. Después con el 2, y con el 3 y así sucesivamente, pero no, solo me haya el último valor, o el valor más grande entre todos ellos. A que puede ser debido? Estoy haciendo algo mal?

Muchas gracias gentes!!! ;).

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Abr 2009 08:56 pm
Lo mas probable es que si cree todo, pero como uno es sobre otro, no se precibe que esten todos, error causado porque no usas bien la colocación con respecto a la "i"

Código ActionScript :

var aux:MovieClip;
for(var i:Number = 0; i < 10 ; i++)
{
   aux = ob.duplicateMovieClip("ob"+i, i);
   aux._x = 10 * i;
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 21 Abr 2009 01:53 pm
Nass LongeVie, creo que me acabas de solucionar todos mis problemas xD, funcionó perfectamente tiu!!! Ahora por fin puedo leer un PHP con respecto a los datos recogidos crear X MC y en base a eso mi web :D. Eres un dios men xD. Muchas gracias por tu respuesta tiu ;).

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Abr 2009 09:13 am
Weno gentes, tengo otro problema con esto otra vez, pues ahora lo intenté hacer leyendo los parámetros desde un PHP, pero es que cuando le hago un LoadVars y lo meto dentro del la función del onLoad el script deja de funcionar. A ver si es que estoy haciendo algo mal. Pongo a ocntinuación el Script:

Código ActionScript :

var productos:LoadVars=new LoadVars();
productos.load("productos.php");
productos.onLoad=function(si){if(si){
   var U:Number=productos.num;
   var aux:MovieClip;
   for(var i:Number=0;i<U;i++){
      var R:Number=Math.floor(i/3);
      aux=mn.uno.duplicateMovieClip("uno"+i,i);
      aux._x=(i*130)-(3*130*R);
      aux._y=160*R
      aux.T=productos.T;
      aux.I=productos.I;
      aux.P=productos.P;
   };
};};


De esta manera no funciona, y el PHP funciona a la perfección, de todas maneras pondré el código PHP para que veáis en que puede fallar:

Código PHP :

<?php
$url="./prueba";
$contar=0;
$images2=glob("$url/{*}",GLOB_BRACE);
foreach($images2 as $v2){
$fp=fopen($v2,"r");
$leer=fread($fp,filesize($v2));
fclose($fp);
echo "$leer";
};
$cuenta=count(glob("$url/{*}",GLOB_BRACE));
echo "&num=$cuenta&"
?>


De todas maneras probé con el código de esta otra forma y tampoco va:

Código ActionScript :

var productos:LoadVars=new LoadVars();
productos.load("productos.php");
productos.onLoad=function(si){if(si){
   var U:Number=productos.num;
   var aux:MovieClip;
   for(var i:Number=0;i<10;i++){
      var R:Number=Math.floor(i/3);
      aux=mn.uno.duplicateMovieClip("uno"+i,i);
      aux._x=(i*130)-(3*130*R);
      aux._y=160*R
      aux.T=productos.T;
      aux.I=productos.I;
      aux.P=productos.P;
   };
};};


Sin embargo pongo esto siguiente (Que es quitándolo dentro de la función onLoad) y funciona perfectamente:

Código ActionScript :

var aux:MovieClip;
for(var i:Number=0;i<10;i++){
   var R:Number=Math.floor(i/3);
   aux=mn.uno.duplicateMovieClip("uno"+i,i);
   aux._x=(i*130)-(3*130*R);
   aux._y=160*R
   aux.T=productos.T;
   aux.I=productos.I;
   aux.P=productos.P;
};


La verdad, no lo entiendo. A ver si me podéis ayudar porque esto es una comedura de olla tela xD. Muchas gracias gentes ;)

Por miglug

Claber

113 de clabLevel



Genero:Masculino  

firefox

 

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