..:: MX Studio Fóruns ::..: Abrir Portas no Flash `[JOGO]´ - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Abrir Portas no Flash `[JOGO]´ Aprenda a não ficar no mesmo lugar no flash

#1 User is offline   diммy Flαรн.єxє 

  • Group: Membros
  • Posts: 27
  • Joined: 24-September 09

  Posted 24 September 2009 - 08:52 PM


Quanto tempo você consegue ficar em um quarto? Quanto tempo você vai olhar do mesmo? Sim, precisamos de mais salas para explorar. Isso significa que uma maneira de mudar o mapa, criar nova sala de telhas e colocar o herói na posição correta.



Para fazer dois quartos, nós declaramos dois mapas:

CÓDIGO
myMap1 = [
[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, 2],
[1, 1, 1, 1, 1, 1, 1, 1]
];
myMap2 = [
[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],
[3, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1]
];

In The Game objeto também definir o número de mapas usados atualmente:

CÓDIGO
game = (tileW: 30, tileH: 30, currentMap: 1)

Então, nós começamos a explorar na myMap1. Para chamar a função buildMap, calculamos o mapa necessários com _root
CÓDIGO
[ "myMap" + game.currentMap] quando currentMap é 1, vamos obter myMap1:

buildMap (_root [ "myMap" + game.currentMap])
Em seguida temos de novo objeto para representar as portas:

game.Doors = função newMap (, newcharx, newchary) (
   this.newMap = newMap;
   this.newcharx = newcharx;
   newchary this.newchary =;
);
game.Doors.prototype.walkable = true;
game.Doors.prototype.frame = 3;
game.Doors.prototype.door = true;
game.Tile2 = function () ();
game.Tile2.prototype = game.Doors (2, 1, 4);
game.Tile3 = function () ();
game.Tile3.prototype = game.Doors (1, 6, 4);

Como você provavelmente já adivinhou, azulejo porta pode ser pisado, ele mostra o quadro 3 e tem propriedade nova "porta" definido para "true". Usaremos essa propriedade para determinar se o herói está de pé na porta.

As portas de usar algo chamado de "herança", que pode soar horrível, mas é realmente uma coisa boa. As portas "todos os objetos são criados usando" Doors "modelo e todas as peças contêm portas herdar todas as propriedades da" porta "do objeto, por exemplo, todos eles são walkable e show frame 3.

Cada porta que crate deve ter as seguintes informações: qual o número de mapa para mostrar que vem, o que é a nova posição X e Y do nosso caráter. Se você não mover o personagem para a nova posição, em seguida, telhas será alterado, mas permanece herói no mesmo local e isto não parecer correta. Palavra de cautela sobre as novas coordenadas para o herói. Você deve evitar colocar o herói no mapa ao lado também sobre o azulejo porta, como se ele apenas entrou em cena a partir da parede. Se a nova posição x / y é também porta, logo em seguida, à medida que o jogador, este ao lado, no novo mapa é detectado e herói é enviado de volta. Lembre-se, coloque o seu herói ao lado da porta em azulejo novo mapa!

Quando o objeto de nova porta é feita, passamos por 3 variáveis a ele: newmap, newcharx, newchary. E objeto de nova porta terá os valores ligados às suas propriedades. Assim, quando o número 2 está definida na matriz do mapa, nós sabemos que vai ser feita a partir de Tile2 modelo e desde Tile2 objetos são criados a partir de modelos de portas, ele terá todas as propriedades do objeto Doors. Objeto Tile2 passa newmap = 2 para as portas modelo, assim que todos os objetos Tile2 enviará ao herói map2. Você pode ter mais de 1 porta similar em The Game. Você pode querer colocar portas tipo Tile2 em vários mapas, e todos eles enviam para o herói map2.

Mais ações
Na função moveChar adicionar este código ao final, pouco antes de retornar verdadeiro:

CÓDIGO
if (game [ "t_" + ob.ytile +"_"+ ob.xtile]. porta e ob == _root.char) (
   changeMap (OB);
)

Aqui depois de ter movido o char (ou algum outro objeto em movimento) que irá verificar se o char tile está de pé agora, é porta. Como nós não queremos mapa a mudar quando uma bala ou inimigo passos no azulejo porta, nós também vamos verificar se o objeto atual é o herói. Usaremos a função changeMap para a mudança do mapa:

CÓDIGO
changeMap function (ob) (
   var name = "t_" + ob.ytile ob.xtile +"_"+;
   jogo game.currentMap = [nome]. newMap;
   jogo ob.ytile = [nome]. newchary;
   jogo ob.xtile = [nome]. newcharx;
   ob.frame = ob.clip._currentframe;
   buildMap (_root [ "myMap" + game.currentMap]);
)

Este código deve ser bastante óbvio, obter os valores do azulejo porta e atualizar as variáveis de currentMap, ytile e xtile. O ob.frame novo imóvel vai salvar direção atual do herói. Sem este truque, o nosso herói começaria em frame1 toda vez que ele entra no novo mapa. Você também precisa adicionar linha na função buildMap depois de ter colocado o clipe de char:

CÓDIGO
char.frame (char.clip.gotoAndStop);
É isso, fazer alguns mapas e brincar com as portas.

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)