Comunidad de diseño web y desarrollo en internet online

problemas con arrays bidimensionales

Citar            
MensajeEscrito el 02 Jul 2005 06:59 pm
Seguramente esto esté más que respondido, pero lo único que he visto son respuestas de como hacerlo, y lo que necesito es saber si lo que tengo en mente se puede hacer o no.

Queria hacer una función a la que le pasase arrays con nombres de peliculas, sobre los que luego dentro de la función se llevarán a cabo acciones.

el tema es que, hago mi array :

miarray = new Array();
miarray[0]="p1_mc"
miarray[1]="p2_mc"
miarray[3]="p3_mc"

lo tipico vamos..

pero me he quedado sorprendido de ver que esto no funciona:

miarray[0][0]="p1_mc"
miarray[0][1]=500
miarray[0][2]=200

a lo que voy es que, queria crear arrays bidimensionales , que me permitan incluir el nombre de la pelicula y las coordenadas X e Y. No entiendo porqué no funciona esto.

He estado mirando y los arrays bidimensionales se hacen asi:

Código :

var fila1=[10,50]
var fila2=[70,90]
var fila3=[20,15]

var tabla=[fila1, fila2, fila3]


trace(tabla[2][0])


pero me resulta más complicado. Pensé que crear Arrays era tan facil como , declararte el array y asignar las coordenadas dinamicamente en plan:

miarray[0][0]="valor 1"

¿no puede esto que busco de ninguna forma amigos?

salu2

Por :Vortex:

16 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 02 Jul 2005 07:16 pm
pero me he quedado sorprendido de ver que esto no funciona:

miarray[0][0]="p1_mc"
miarray[0][1]=500
miarray[0][2]=200


La asignación correcta sería algo como:

Código :

miarray [0] = ["p1_mc", 500, 200];


Pues no puedes asignarle valores a una posición inexistente, es decir miarray[0] existe (y si no existiera sería válido de todos modos por tratarse de un vector), pero miarray[0][0] no existe (y no funciona porque el array se comporta como un vector, a menos que le indiques lo contrario)

Después de haber hecho la asignación anterior, miarray[0][0]="p1_mc" es totalmente válido.

Saludos.

Por ExGaul

Claber

180 de clabLevel



Genero:Masculino  

Cereté - Colombia

firefox
Citar            
MensajeEscrito el 02 Jul 2005 07:35 pm
gracias ExGaul, todo OK ya. Pensé que al poner :

miarray[0][0]="hola"

el propio flash creaba dicha posición automáticamente. Ya veo que no.

Por :Vortex:

16 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 03 Jul 2005 09:08 am
Errrr.... los arrays de flash son MUY faciles y MUY flexibles... acaso habeis intentado trabajar con arrays en java? ahi tienes que declarar desde un principio la longitud del array y de ahi no puede pasar...!! no hay metodos "push", "slice","pop" ....

En flash la verdad que hay un error en la "logica" de creacion de arrays... tu puesdes declarar un nuevo Array asi
var miArray:Array = new Array();
este sera unidimensional y todo lo largo que quieras...

en cambio esto no funciona
var miArray:Array = new Array[][]; //Intentos de array bidimensional
var miArray:Array = new Array([][]);
var miArray:Array = new Array(2); //este crea uno unidimensional de longitud 2
//Estableciendo las longitudes NO FUNCIONA
var miArray:Array = new Array[2][3];

Para crear un Array bidimensional lo correcto es :
//Dando los valores de inicio
var miArray:Array = new Array(["a","b","c"],["d","e","f"]);

para mi lo mejor es crear un for que lo inicialice todo

var miArray:Array = new Array();
var longitudDeseada:Number = 34;
var otraLongitud:Number = 3;
for(var i:Number = 0;i<longitudDeseada;i++) {
miArray[i] = new Array(otraLongitud);
}
trace(miArray);

Ademas en flash puedes tener arrays con diferentes tipos de variables, cosas que en otros lenguajes son inpensables...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 03 Jul 2005 01:43 pm
gracias por la aclaración Iceman. Tendré que hacerlos así entonces. Declarando cada posición del array cada vez que quiera crear una nueva posición.

Se me está ocurriendo un asunto. ¿crees que seria posible crear algun tipo de prototipo o función que nos permitiese crear arrays dinamicos bidimensionales o tridimensionales?

para en cualquier momento poner miarray[15][25]="dato1".

Quizás en flash 8 esté implementada esta posibilidad. Uno se mal acostumbra a que las cosas se hagan solas jeje.

salu2

EDITO: Iceman, una pregunta : esa forma que tienes de declarar las variables del tipo var mivariable:Number, ¿es realmente necesaria?
es que yo siempre declaro todo a pelo, pongo:

var mivariable;

y luego meto numeros... texto.. o lo que sea, incluso reutilizo variables para meter diferentes tipos de datos.

Por :Vortex:

16 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 03 Jul 2005 04:21 pm
Bueno eso es un tema que ya se ha tratado antes. Flash como ya dije tiene un lenguaje MUY flexible, porque empezo siendo poca cosa, asi por ejemplo te funciona esto :
variable = "hola soy de tipo String";
variable = 666; //ahora un numero
variable = _root; //Ahora un MC

Este funciona, pero hace gastar mas recursos pues es flash quien decide que tipo de variable es, y consume mas memoria. De la otra forma una vez declarado el tipo de variable, Flash adjudica su espacio de memoria y se olvida de reconversiones... Ademas con AS2.0, el lenguaje es mas estricto, mucho mas parecido a java/C++ y te obliga a ser mas ordenado y limpio en tus codigos, asi mismo te protege de "errores" como el de arriba ...
var variable:String = "hola soy de tipo String";
variable = 666; //Aqui da error
variable = _root; //Aqui vuelve a dar error

Aunque parezca una chorrada, si tu en tu programa esperas que tal variable sea del tipo Number y te llea como String te puede dar un dolor de cabeza antes de encontrar el problema, de esta forma te avisa de las incidencias....

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 03 Jul 2005 05:07 pm
Interesante.

Lo haré asi a partir de ahora. Yo pensé que era más un tema estético , para tu saber de que tipo de variables estamos hablando en cada momento. Los casos en los que reutilizo variables son escasos.

gracias por las aclaraciones :)

Por :Vortex:

16 de clabLevel



Genero:Masculino  

Madrid

firefox

 

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