Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Strelok

Passar código de flash 5 ao AS3

Recommended Posts

Esse código é muito importante para mim. Estou tentando aprender AS3 voltado à jogos. E encontrei alguns tutoriais de flash que utilizam uma antiga linguagem, acho que é flash 5.

 

fscommand ( "allowscale", false );
tileW = 16;
tileH = 16;
myMap = [ [1,1,1,1,1,1,1,1],
  [1,0,0,0,0,0,0,1],
  [1,0,1,0,0,0,0,1],
  [1,0,0,0,0,1,0,1],
  [1,0,0,0,0,0,0,1],
  [1,1,1,1,1,1,1,1] ];

function buildMap (map) {
var mapWidth = map[0].length;
var mapHeight = map.length;
for (var i = 0; i < mapHeight; ++i) {
	for (var j = 0; j < mapWidth; ++j) {
		this.attachMovie("tile", "t_"+i+"_"+j, ++d);
		this["t_"+i+"_"+j]._x = (j*tileW);
		this["t_"+i+"_"+j]._y = (i*tileH);
		this["t_"+i+"_"+j].gotoAndStop(map[i][j]+1);
	}
}
}


buildMap (myMap);

 

Gostaria que, se possivel, alguém traduzisse esse código do flash 5 ao AS3. Já que sou iniciante seria uma mão na roda para mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

import flash.system.fscommand;//importa a classe fscommand
import flash.display.MovieClip ; //importa a classe movieclip

fscommand ( "allowscale", "false" );//os dois parametros são string
var tileW:Number = 16;
var tileH:Number = 16;
var myMap:Array = [ [1,1,1,1,1,1,1,1],
         [1,0,0,0,0,0,0,1],
         [1,0,1,0,0,0,0,1],
         [1,0,0,0,0,1,0,1],
         [1,0,0,0,0,0,0,1],
         [1,1,1,1,1,1,1,1] ];
//ao declarar a variavel tem que colocar o tipo da variavel
var mcarray:Array ;//nessa variavel estaram os movieclips, igual ao mymap só que com movieclips
function buildMap (map) {
       var mapWidth:Number = map[0].length;
       var mapHeight:Number = map.length;

       for (var i:Number = 0; i < mapHeight; ++i) {
               for (var j:Number = 0; j < mapWidth; ++j) {
                       mcarray[i] = [];
                       mcarray[i][j] = new MovieClip();//cria movieclip, vasio, 

                       //this.attachMovie("tile", "t_"+i+"_"+j, ++d);
                       addChild( mcarray[i][j]); //coloca no palco
                       mcarray[i][j].x = (j*tileW)  ;//propriedades _x e _y não começão com _(underline)
                       mcarray[i][j].y = (i*tileH)  ;
                       mcarray[i][j].gotoAndStop()  ; //essa parte não intendi


                       /*
                       this["t_"+i+"_"+j]._x = (j*tileW);
                       this["t_"+i+"_"+j]._y = (i*tileH);
                       this["t_"+i+"_"+j].gotoAndStop(map[i][j]+1);
*/
               }
       }
}

buildMap(myMap);

 

Nâo sei se ta funcionando mas é mais ou menos assim que ficaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só corrigindo a linguagem não é flash 5 nem 4. A linguagem é actionscript, e no seu exemplo as2.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o código faz ou deveria fazer, basicamente, é desenhar um tilemap 8x6 bidimensional, usando aquela array:

 

var myMap:Array = [ [1,1,1,1,1,1,1,1],
                   [1,0,0,0,0,0,0,1],
                   [1,0,1,0,0,0,0,1],
                   [1,0,0,0,0,1,0,1],
                   [1,0,0,0,0,0,0,1],
                   [1,1,1,1,1,1,1,1] ];

 

A lógica básica do programa eu até que entendo. Mas não consigo entender a fundo como o programa poderia funcionar.

Estes seriam os passos, mais ou menos:

  • Cria uma array bidimensional de 8x6
  • Define dois números na array, 1 para tiles pretos(parede) e 0 para tiles brancos(caminho)
  • A array mapa(array maior 8x6) é basicamente criada por 6 arrays com 8 elementos (isto serve para designar coordenadas X e Y
  • Faz com que apareçam tiles pretos nos 1 e brancos nos 2
  • Imprime a imagem na tela

 

Basicamente é isto; mas eu não consigo entender como ele consegue posicionar as imagens(que eu criarei) na tela baseando-se nas arrays.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nas propriredades dos mcs da parede e chao marca "export for actionscript" e em "class" coloque seu nome(nesse script é parede e chao)

 

for (var i:Number = 0; i < mapHeight; ++i) {
mcarray[i] = [];//eu tinha colocado isso no lugar errado 
for (var j:Number = 0; j < mapWidth; ++j) {                     	if(map[i][j] == 0){                     	mcarray[i][j] = new chao();                     	}else 
                       if(map[i][j] == 1){                     	mcarray[i][j] = new parede();                     	} 
//this.attachMovie("tile", "t_"+i+"_"+j, ++d);                     	addChild( mcarray[i][j]); //coloca no palco                     	mcarray[i][j].x = (j*tileW)  ;//propriedades _x e _y não começão com _(underline)                     	mcarray[i][j].y = (i*tileH)  ;                     	mcarray[i][j].gotoAndStop()  ; //essa parte não intendi                       	/*                     	this["t_"+i+"_"+j]._x = (j*tileW);                     	this["t_"+i+"_"+j]._y = (i*tileH);                     	this["t_"+i+"_"+j].gotoAndStop(map[i][j]+1); */             	}     	}

 

//////////////

Eu nem me liguei que ele falou "flash 5 ao as3". Eu só usei actionscript 2 no flash mx e 8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.