Comunidad de diseño web y desarrollo en internet online

redimencionando arrays

Citar            
MensajeEscrito el 27 Jul 2009 11:22 pm
Hola compañeros flasheros

bien, espero poder explicarme lo suficientemente bien para que se comprenda lo que quisiera que me ayuden, para iniciar, pondre un ejemplo y despues les platico de que se trata con exactitud y me dicen si se puede y como deberia hacerlo...he buscando en varios lados pero aun no doy con la respuesta.

me gustaria saber como puedo hacer para que al ejecutar mi swf, me pregunte cuantos renglones y cuantas filas quiero en un array y al sumir un boton, suponiendo que yo quisiera 3x3, la respuesta que esperaria seria esta:

Código :

array1 = [[0,0,0],
[0,0,0],
[0,0,0]];


o por ejemplo si quisiera una de 3x6, cliqueo nuevamente el boton y quedaria asi

Código :

array1 = [[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],


y si no es molestia, como podria hacer que esa array que voy a crear la coloque en un codigo que tiene ese mismo swf en otro frame?

gracias de antemano por la ayuda xicos

Por loboblanco

74 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Jul 2009 12:04 pm
Puedes usar dos loops, el de afuera con un array contenedor (filas), el de dentro de columnas, teniendo las variables filas y columnas sería algo así:

Código ActionScript :

var contenedor:Array = new Array()
for(var i:Number = 0; i<filas; i++){
   var col:Array = new Array()
   for(var c:Number = 0; c<columnas; c++) col.push(c)
   contenedor.push(col)
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Jul 2009 02:56 pm
gracias por la ayuda solisarg, solo perdona que sea un poco novato en todo esto jeje y ademas pidilon....pues aunque funciona de maravilla tu codigo, tengo dos pequeños detalle que investigare ahora...uno es que la matriz que m genera el codigo no es matriz ceros...(no se si se pueda generar solo matriz de ceros) y la otra, es darle formato adecuado, ya que como menciono en el post anterior, necesita llevar los corchetes. investigue un poco antes de responderte y encotre por ahi un comando "join()" que segun parece hace lo que te menciono de ponerle los corchetes...pero reitero que soy algo novato en entos jijiji y no se bien aun como usarlo pero ando en ellos...de todas maneras si me pudieran hechar la mano se los agradeceria muchsisisimo.

Por loboblanco

74 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Jul 2009 03:40 pm
Sospecho que lo que quieres es armar un string, lo cual no necesariamente es un array multidimensional. Si lo que quieres es que el array tenga un cero (nro o string), haz var col:Array = new Array(0) o var col:Array = new Array("0")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Jul 2009 05:30 pm
gracias por todas la ideas mi estimado solisarg, ya concrete lo que queria jiji...y debo decir que tu idea ayudo muchisimo, andube jugueteando con el hasta que entre juego e investigaciones lo termine....quiza no sea la mejor manera de lograr el fin que queria pero al menos llegue...aqui te paso el codigo que hice

Código :

var filas = 2
var columna = 1
var repeticiones = 5
var contenedor:Array = new Array()
for(var i:Number = 0; i<filas; i++){
   var col:Array = new Array()
   for(var c:Number = 0; c<columna; c++) col.push(c)
   contenedor.push(col)
}
var matrizinicio:Array = new Array("[["+contenedor+"]");
var matricesintermedias:Array = new Array()
for(var b:Number = 0; b+2<repeticiones; b++){
   matricesintermedias.push("["+contenedor+"]")}
var matrizfinal:Array = new Array("["+contenedor+"]];");
var matriz:Array = new Array(matrizinicio, matricesintermedias, matrizfinal);

trace(matriz);


en este codigo lo que varian son var filas y var repeteciones, tomando en cuenta que una fila, contiene tantos "0's" como la variable indica y la variable repeticiones maneja cuantas de esas filas necesitas, ademas pude arreglar que se colocasen en formato adecuado.


pues agradesco nuevamente tu ayuda solisarg, quiza haya una mejor forma de hacerlo insisto, pero por el momento me conformo con esta jiji...claro que me gustaria igual aprender como se hace mas facil por que de eso se trata..de expander conocimiento...

un saludo

Por loboblanco

74 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Jul 2009 11:44 pm
hola nuevamente mi estimado solisarg...bien te comento que aunque logre lo que queria...no funciono al incorporarlo a otro codigo, paso a explicarme mejor

lo que ando armando es un programa para generar mapas con tiles isometricos, para ello utilizo lo que segun yo era un array..pero para explicarme mejor pongo el codigo que me funciona hasta ahora para generar un mapa y cambiarle las tiles, es este:

Código :

selectedTile = 0;
mapString = String;
mvWdth = 800;
mvHght = 800;
tileWdth = 52;
tileHght =26;

tile0 = function () {};
tile0.prototype.pos = 1;
tile0.prototype.barrier = false;

tile1 = function () {};
tile1.prototype.pos = 2;
tile1.prototype.barrier = true;

tile2 = function () {};
tile2.prototype.pos = 3;
tile.prototype.barrier = false;

map1 = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0]];

function MapMaker (map) {
   _root.attachMovie("blank", "tiler", d++);
   var mapWdth = map[0].length;
   var mapHght = map.length;
   for (var i = 0; i < mapHght; i++) {
      for (var j = 0; j < mapWdth; j++) {
         var name = "tile_"+j+"_"+i;
   _root[name] = new _root["tile"+map[i][j]];
   _root.tiler.attachMovie("TileSet1", name, i*100+j*2);
   
   _root.tiler[name]._x = (j-i)*_root.tileWdth/2;
   _root.tiler[name]._y = (j+i)*_root.tileHght/2;
      _root.tiler[name].gotoAndStop(_root[name].pos);
   _root.tiler._x = 200
   _root.tiler._y = 50
      
      }
   }
}


MapMaker(map1);


como pueden ver, las dimensiones del mapa estan dadas por map1 y segun la camtidad de ceros que coloque, es la dimension del mapa.

segun lo que intente hacer con el codigo anterior fue alojar en una variable una cantidad de datos que el usuario pueda decidir, asi definir desde un principio el tamaño del mapa....pero al colocar la variable, ya no jala el mapa...supongo que es por lo que comentaste solisarg sobre array o string.

en fin...se que puedes ayudarme...y te agradesco de antemano...igualmente a todos por su apoyo.

Por loboblanco

74 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Jul 2009 10:48 am
La verdad es que el code que agregaste al mío no tiene mucho sentido, excepto hacer que aparezca lindo en un trace (de ahí que apunto a que quieres formatear un string más que trabajar sobre un array multidimensional) Si te quedas solo con lo que te puse, tienes un array de "filas" x "columna" que es todo lo que necesitas para empezar a armar el mapa, que al fin y al cabo es un array multidimensional, y es lo que tienes asignado en el code como map1

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 02:46 am
bueno, atendiendo un poco a lo que dices, el detalle de hacer asi el array multidimencional es el siguiente:

en el codigo que puse para generar el mapa, segun el numero que coloque en el array es el tipo de terreno que va a aparcer, si coloco puros 0's, aparecera solamente el clasico pastito verde, pero si coloco un una serie de numeros deferentes, aparecen diferentes tipos de terreno, por decirlo asi, si coloco:

[[0,0,0,1,0,0,0]
[0,0,0,1,0,0,0]
[0,0,0,1,0,0,0]
[0,0,0,1,0,0,0]

graficamente estoy dibujando un mapa de 7x4, con pastito verde y un camino de tierra en medio (que son la linea de 1's en el array), por eso si utiliso el codigo que me diste solisarg, me genera diferentes numeros, eso significaria que me esta generando muchos tipos de terrenos diferentes por cada numero, por eso la importancia de que todos sean ceros...de todas formas sigo investigando mi estimado solisarg....espero igual me heches la mano aunque igual talacho.

Por loboblanco

74 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jul 2009 10:49 am
Si quieres un cero como string lo agregas en esta línea:

var col:Array = new Array("0")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Ago 2009 05:46 am
Hola mi estimado Solisarg

pues con la novedad que ya resolvi lo que necesitaba...ahora si ya quedo jiji...gracias por tida tu ayuda...el codigo final es este mira:

Código :

var columnas = columnas.text
var filas = filas.text
mapa1=new Array(columnas);
for (var i=0; i<columnas; i++)
{
  mapa1[i]="0";
}
mapafinal=new Array();
for (var p=0; p<filas; p++)
{
   mapafinal.push(mapa1)
}


gracias a todos por las lecturas...eso denota interes y gracias especiales a solisarg por sus valiosas ideas

Por loboblanco

74 de clabLevel



 

msie7

 

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