Posts Tagged ‘Flash’

MUDAMOS DE ENDEREÇO

junho 9, 2010

olá pessoal, mudei de endereço e aguardo sua visita:

http://HamisterTower.com.br

Novidades:

Nessa nova fase do blog  continuaremos com o foco em no flash e jogos a novidade é que também abordaremos assuntos como: Flex, Air, outras engines (Away3d, Sandy, Alternativa3d, Box2d,Jiblib), Realidade Aumentada, Componentes especifico para jogos e alguns de meus projetos pessoais entre outras coisas.

Não deixem de acompanhar o blog, lembrando que estamos em outro endereço: http://HamisterTower.com.br espero a visita de vocês lá, vlw Abraços.

Papervision MouseClick

maio 7, 2009

mundi

Olá pessoal como havia prometido nosso mais novo tutorial papervision não estamos usando o Cubo, para diversificar um pouco decidi utilizar a Esfera.

Este tutorial é essencial para ter uma base de criação de site em papervion, neste tutorial vamos aprender a colocar nosso viewport para aceitar interação e definiremos nossa esfera para funcionar como botão simples, onde a única funcionalidade será pausar e retomar a rotação.

Depois de uma seqüência de tutoriais sobre papervision existe muitos pontos que não precisarei explicar de novo, como  por exemplo: inserir uma esfera e importar uma textura para ela. Hoje me focarei somente nos pontos chaves.

Viewport3D

O viewport é o nosso ambiente 3d, extremamente essencial para criar algo com o papervision, quando criamos nosso viewport3d podemos definir alguns parâmetros iniciais.

    new niewport3D(width, height, autoscale, interactive)
  • width (Number): Define a largura de nosso viewport3d;
  • height (Number): Define a altura de nosso viewport3d;
  • autoscale (Boolean): Determina se o viewport vai se escalar ao Stage.
  • Interactive (Boolean): Permite o uso de interações com o mouse, possibilitando o uso do evento InteractiveScene3DEvent.

Criando Interação

Em nosso código passaremos a definir o parâmetro interativo para true. Com o viewport definido para true poderemos definir agora nosso material para interative possibilitando ele ser clicado quando estiver em um objeto primitivo.Neste exemplo eu usarei o MovieMaterial, mas vocês poderiam utilizar qualquer outro tipo de material, lembrando que com o movie material eu importo um movieclip que esteja em minha biblioteca ou que já tenha sido instanciado.

     skin = new MovieMaterial(mov);
     skin.interactive = true;

Agora poderemos adicionar um listener em nossa esfera chamando o evento de interação especifico seguido de um método que será executado.

    esfera.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS,PRESS);

Código: main.as

package
{
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.Event;
    import org.papervision3d.materials.MovieMaterial;
    import org.papervision3d.objects.primitives.Sphere;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.events.InteractiveScene3DEvent;
    public class main extends Sprite
    {
        public var cena:Scene3D;
        public var viewport:Viewport3D;
        public var camera:Camera3D;
        public var renderer:BasicRenderEngine;
        public var esfera:Sphere;
        public var mov:MovieClip = new earth();
        public var skin:MovieMaterial;
        public var paused:Boolean = false;
        public function main ()
        {
            Set ();
            Objetos ();
        }
        public function Set ():void
        {
            viewport = new Viewport3D(300,300,false,true);
            addChild (viewport);
            cena = new Scene3D ;
            renderer = new BasicRenderEngine ;
            camera = new Camera3D ;
        }
        public function Objetos ():void
        {
            skin = new MovieMaterial(mov);
            skin.interactive = true;

esfera = new Sphere(skin,300,30);

            cena.addChild(esfera);

esfera.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS,PRESS);

            addEventListener (Event.ENTER_FRAME,Loop,false, 0, true);
        }
        public function PRESS (e:InteractiveScene3DEvent ):void
        {
            paused = !paused;
        }
        public function Loop (e:Event):void
        {
            if (!paused)
            {
                esfera.roll(1)
                esfera.yaw(3)
                esfera.pitch(1)
            }
            renderer.renderScene (cena,camera,viewport);
        }
    }
}

Lembrando que para este tutorial funcionar devemos importer as classes do papervision e definir como classe padrão do fla a classe main,
Tentei fazer algo bem simples para demonstrar a interação do mouse com o papervision, com isso podemos criar diversas coisas seguindo a criatividade de cada um. Tentarei fazer algo mais elaborado para próximo tutorial. Espero que tenham gostado e que estes tutoriais sobre papervision estejam sendo úteis para vocês em seus estudos. Bem ate a próxima.


									

Papervision MovieMaterial

maio 4, 2009

moviematerial

Clique na imagem para testar

Olá pessoal , para dar continuidade ao nosso estudo sobre papervision, hoje vamos falar sobre mais um tipo de material que podemos utilizar nos nosso objetos primitivos a textura MovieMaterial. Antes de começamos a falar sobre esse material vamos falar sobre um problema que ocorria com a classe MovieAssetMaterial.

Quando aprendemos sobre MovieAssetMaterial, passávamos uma string como parâmetro e importávamos de nossa biblioteca um movieclip onde o valor da propriedade linkage era igual da string referida. Mas a classe MovieAssetMaterial não aceita importar um movieclip que tenha come base uma classe que necessite de um parâmetro.

A classe MovieMaterial utiliza como parâmetro a instanciação de um movielip ao invés de uma string referindo sua propriedade linkage, com isso seu movieclip padrão não necessariamente precisa estar na bibliote, você pode trabalhar com um movieclip já instanciado, assim você pode utilizar o método gotoAndStop para indicar outro frame antes de ter instanciado ele como material..Outra vantagem é a possibilidade de utilizar um movieclip da biblioteca que tenha como base uma classe que exija parâmetro.

Construtor

Para criarmos um MovieMaterial devemos instanciar um objeto do tipo MovieMaterial.
Nosso único parâmetro obrigatório é um do tipo DisplayObject que é a referencia de nossa textura.

var  material:MovieMaterial =  new MovieMaterial(movieAsset);

movieAsset (DisplayObject): Referencia de um movieclip existente carregado na memória ou no stage.
Transparent (Boolean): Define se a textura possuirá transparência. [opcional]
Animated (Boolean): Define se o movieclip sera animado [opcional]

Tutorial

Neste tutorial eu quis brincar um pouco e mais uma vez dou uma demonstração de tile system com papervison, mas desta vez vamos ter uma classe que se comportará como movieclip aonde receberá como parâmetro um número que definirá qual vetor vai utilizar para criar o cenário, depois utilizaremos como material nosso cenário, A parte relacionada a papervision não terá mistério nenhum pois estarei usando a estrutura do tutorial anterior relacionado a materiais.

Arquivos

Neste tutorial trabalharemos com os seguintes arquivos:
1- MovieMaterial.fla
2- main.as
3- faceField.as: Classe que criará um cenário tile system para se comportar como material

MovieMaterial.fla:

obtile

1- faceField: Movieclip
2- obTile:MovieClip
3- main (definir como classe principal)

obs: para criar um movirclip vazio basta segurar ctrl + F8.

faceField.as

Esta classe não existe mistério nenhum, seu construtor recebe um numero como parâmetro e se for 1 desenha o vetor map1 e se for outro desenha o vetor map2. Em seguida percorre a seqüência de loops para desenhar o tile.

package
{
    import flash.display.MvieClip;
    public class faceField extends MovieClip
    {
        public var map1:Array = [
        [1,1,1,1,1,1,1,1,1,1,1],
        [1,0,0,0,0,0,0,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,1,1,0,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,1,1,1,0,0,0,1],
        [1,0,0,0,0,0,0,0,0,0,1],
        [1,1,1,1,1,1,1,1,1,1,1],
        ];
        public var map2:Array = [
        [1,1,1,1,1,1,1,1,1,1,1],
        [1,0,0,0,0,0,0,0,0,0,1],
        [1,0,0,0,1,1,1,0,0,0,1],
        [1,0,0,1,0,0,0,1,0,0,1],
        [1,0,0,1,0,0,0,1,0,0,1],
        [1,0,0,0,0,0,1,0,0,0,1],
        [1,0,0,0,0,1,0,0,0,0,1],
        [1,0,0,0,1,0,0,0,0,0,1],
        [1,0,0,1,1,1,1,1,0,0,1],
        [1,0,0,0,0,0,0,0,0,0,1],
        [1,1,1,1,1,1,1,1,1,1,1],
        ];
        public function faceField (n:Number)
        {
            for (var j =0; j<11; j++)
            {
                for (var i=0; i<11; i++)
                {
                    var t:MovieClip = new obTile();
                    addChild (t);
                    t.x = i * 20;
                    t.y = j * 20;
                    if (n==1)
                    {
                        t.gotoAndStop(map1[j][i]+1);
                    }
                    else
                    {
                        t.gotoAndStop(map2[j][i]+1);
                    }
                }
            }
        }
    }
 }

main.as

Nossa classe principal não possui nenhum mistério, utilizamos a estrutura do tutorial papervision materiais.

Utilizamos apenas MovieMaterial para formação das faces do cubo, com a diferença apenas na maneira de que são chamadas desta apenas uma fogem do padrão.

    skinTile1.gotoAndStop(1);
    skinTile2.gotoAndStop(2);
    faceMovTile1 =  new MovieMaterial(skinTile1);
    faceMovTile2 =  new MovieMaterial(skinTile2);

Apesar dos objetos terem sidos criados no começo da classe só neste ponto que instanciamos os objetos para se portar como material, desta maneira garante que os moviesclips vão estar em seus respectivos frames antes de instanciarmos os materiais.

package
{
    //flash
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.Event;
    //papervision
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.BasicRenderEngine;
    //Material
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.MovieMaterial;
    // objeto
    import org.papervision3d.objects.primitives.Cube;
    public class main extends Sprite
    {
        public var cena:Scene3D;
        public var viewport:Viewport3D;
        public var camera:Camera3D;
        public var renderer:BasicRenderEngine;
        //Material
        public var skinMaterial1:MovieClip = new faceField(1);
        public var faceMov1:MovieMaterial = new MovieMaterial(skinMaterial1);
        public var skinMaterial2:MovieClip = new faceField(2);
        public var faceMov2:MovieMaterial = new MovieMaterial(skinMaterial2);
        public var skinTile1:MovieClip = new obTile();
        public var skinTile2:MovieClip = new obTile();
        public var faceMovTile1:MovieMaterial;
        public var faceMovTile2:MovieMaterial;
        //objetos Primitivos
        public var obCube:Cube;
        public function main ()
        {
            Set ();
            Objetos ();
        }
        public function Set ():void
        {
            viewport = new Viewport3D(400,300,true,false,true,true);
            addChild (viewport);
            cena = new Scene3D ;
            renderer = new BasicRenderEngine ;
            camera = new Camera3D ;
            camera.focus = 600;
            camera.zoom = 1;
        }
        public function Objetos ():void
        {
            skinTile1.gotoAndStop(1);
            skinTile2.gotoAndStop(2);
            faceMovTile1 =  new MovieMaterial(skinTile1);
            faceMovTile2 =  new MovieMaterial(skinTile2);
            //Cube
            obCube = new Cube(
                new MaterialsList(
                {front: faceMov1,
                 back: faceMov1,
                 left: faceMovTile1,
                 right: faceMovTile2,
                 top: faceMov2,
                 bottom: faceMov2}
                )
            ,220,220,220,1,1,1);
            cena.addChild (obCube);
            addEventListener (Event.ENTER_FRAME,Loop,false, 0, true);
        }
        public function Loop (e:Event):void
        {
            obCube.yaw (-4);
            obCube.pitch (-2);
            renderer.renderScene (cena,camera,viewport);
        }
    }
}

Espero que tenham gostado do tutorial, apesar de MovieMaterial ser uma textura bem útil não devemos esquecer das outras texturas, é sempre bom usar a textura certa para cada momento assim deixa o programa mais leve. Ao que parece vocês já devem estar enjoados de exemplos com cubo, por isso tentarei mudar um pouco de objeto para o próximo tutorial, estou dando uma olhada em coisas interessantes com o objeto “Plane” quem sabe ele não vira tema do nosso próximo tutorial de papervision. Obrigado pela visita e volte sempre.

Mario Card 2

outubro 30, 2008

今日は皆-さん. Alguns devem estar se perguntando, por que o Ronaldo não postou nada falando sobre o aniversário do blog e o seu próprio aniversário, o motivo foi: falta de tempo T_T ultimamente tenho andado igual a Jack Bauer (Cloe estamos ficando sem tempo), trabalho, faculdade, curso, Bares (ninguém é de ferro^^), mas apesar do tempo escasso eu consegui uma brechinha na minha agenda para finalmente concluir um novo game. Conheçam agora o Mario Card 2.

Acho que nessa altura do campeonato vocês já devem ter percebido que eu adoro a serie de jogos Mario Bros, se eu não me engano a nintendo começou com um simples jogo de cartas e como o meu game Mario Card foi um sucesso achei que seria uma boa criar uma continuação^^.

  • Nome: Mario Card 2
  • Ultima Atualização: 18 de outubro de 2008.
  • Design: Ronaldo Santiago
  • Codificação: Ronaldo Santiago
  • Criação: Adaptação
  • Gênero: Puzzle
  • Descrição: Jogo de cartas onde seu objetivo é ir removendo todas as cartas iguais que estejam próximas.
  • Exigências: Suport ao Flash 8 ou superior.
  • Click Aqui para poder jogar

Diferente de sua versão anterior Mario Card 2 não é um jogo da memória, e sim um jogo tecnicamente infinito, seu principal objetivo e ir removendo os pares iguais que estejam adjacentes. Após clicar em uma carta você precisa clicar em uma carta que esteja exatamente do lado, não importando a direção: cima, baixo, frente, traz, diagonal o importante é clicar em uma carta que esteja do lado. Se você clicar em qualquer outra carta você estará cancelando a seleção.

Apesar do game estar 99% funcional, eu ainda estou trabalhando nele, em breve estarei fazendo o update deste game com sons e se possível um sistema de recordes. Enquanto o upgrade não chega peço lhes que degustem esse novo game.

Antes de se despedir deste post eu queria agradecer a um grande amigo Garu (vocalista da banda ctrl j ) que me ajudou a encontrar os bugs deste game no processo de criação, ao Phil por sempre que pode divulga meu blog e meus jogos (pode deixar que no próximo post terá imagem do cthulhu e em breve estarei te enviando o desenho do Dr.Orima) e a todos vocês por perderem seus tempos jogando meus simples e singelos jogos, pode deixar que em breve estarei postando mais. Vlw pessoal até a próxima CYA. また見てね.

swapDethps

setembro 10, 2008

今日は皆-さん. Hoje vamos aprender a usar mais uma função que é uma mão na roda para quem quer criar jogos ou slides de efeitos é a Função swapdethps().

Não sei se vocês já perceberam mas o flash trabalha com camadas ôôooooo hehe mas é muito simples perceber isso quando se esta desenhando no flash, ou usando algumas de suas ferramentas, mas quando adicionamos nosso objeto no palco via action script qual é a camada que ele pertence?

Quando criamos um movieclip via actionsctip nós definimos um detphs, que é na verdade é uma posição índice,para saber a posição que um movieclip está usamos a propriedade getdethps(). e para muda-la usamos a propriedade swapdethps() do movie clip.

movieclip.swapdethps(10);

a propriedade swapdethps pode ser usada para permutar um dethps de um movieclip para outro.

Download exemplo.

No aquivo flash acima nós permutamos o Dethps dos blocos para outro clicando em cima dele.

A função swapdethps é muito util na criação de jogos 3d (emulado) e isométricos. Assim sempre dará uma noção de profundidade trazendo para o primeiro plano a imagem mais proxima.

Bem pessoal espero que tenham gostado, e para os fãs de cthulhu eu estou preparando novas imagens aguardem^^ até a próxima. CYA, また見てね.

hitTest

agosto 28, 2008

今日は皆-さん. Estive um tempo ausente, tomei vergonha na cara e entrei numa facul, isso esta consumindo muito do meu tempo, e sem contar que tive umas semanas doente mas ja estou melhor, e devolta com a nossa programação^^

Hoje estava montando uns scripts no trabalho e descobri que a uma das principais ferramentas de criação de jogos eu não estava usando todo seu poder a função hitTest. E depois de analisar o seu poder a finco decidi fazer um post somente relacionado a ela

hitTest

A função hitTest de um objeto serve para retornar valores booleanos (true ou false) quando o objeto está sobre outro objeto ou as coordenadas descritas estão sobre um objeto.

A função hitTest possui 2 maneiras de ser escrita a primeira e mais simples retorna true quando o ojeto está encostando em outro objeto.

objeto1.hitTest(objeto2);

Se o objeto1 estiver encostando no objeto2 o hitTest retorna true senão retorna false. Não importa se encostou apenas um pixel ou boa parte do seu objeto mas a variável irá retornar true em qualquer sensibilidade com a objeto2

No nosso segundo caso nós passamos uma coordenada para a função e ela retorna true ou false se a coordenada corresponder ao objeto em questão.

objeto2.hitTest(x:Number, y:Number, [shapeFlag:Boolean]);

Desta vez a função verifica se as coordenadas x e y estão sobre o objeto.
shapeflag: Não definindo essa propriedade o sistema usará como default (false). Sendo false a função hitTest retorna true quando as coordenadas colidem em qualquer ponto do objeto2, mesmo que esse ponto seja um espaço vazio (transparente) dentro do objeto2. Mas se for definida como true irá retornar false quando as coordenadas colidirem com um espaço vazio dentro do objeto2

Usando a propriedade shapeflag como true você abre um leque de possibilidades para diversos tipos de jogos diferentes. agora basta usar um pouco a criatividade e mandar ver.

Espero que tenham gostado dessa matéria e podem deixar que logo logo estarei postando novidades. vlw, cya また見てね.

Tile System – Tutorial [Part 3][ActionScript]

maio 30, 2008

今日は皆-さん Olá pessoal dando continuidade ao nosso tutorial do tile system hoje vocês começaram a programar^^ Mas antes de começarmos a colocar o código vamos criar nosso movieclip base.

Tile Base

Abra o Flash crie um arquivo 200 x 200. Antes de criarmos o tile base vamos entender como funcionar. O movieclip Tile ele será a base da construção do cenário, cada frame desse movieclip representará um bloco colorido diferente. (vocês lembram na parte 2 que tínhamos 3 cores diferentes)

Vocês podem criar o tile de diversos tamanhos diferentes, eu optei por usar 20×20.

1.passo: vamos desenhar um quadrado 20×20 verde. Em qualquer parte do palco. Selecione–o e aperte F8 aparecerá essa tela.

Caso esteja aparecendo uma tela com menos opões clique no botão advanced. Coloque o nome do movieclip como “Tile” marque como movieclip. Em identifier coloque “Tile” marque as opções igual a imagem. Com essas opções poderemos criar um arquivo via actionscript puxando diretamente da biblioteca. Delete o quadrado do palco agora porque não iremos precisar dele ai só usaremos a da biblioteca

2.passo: Pressione F11 para aparecer a sua biblioteca.

De um duplo clique no tile para ele ser visualizado sozinho na tela. Crie mais 2 Keyframes. No segundo frame pinte o quadrado de branco e no terceiro frame pinte o quadrado de azul.

Crie um novo layer (ainda no movieclip Tile) nomeie como action. Pressione F9 para aparecer a caixa de Actions e digite:

stop();

Com isso sua tela deve ficar mais ou menos assim.

ActionScript da Parte 2

Observe a imagem acima a existência de um botão chamado Scene 1 clique nele para poder ir para o palco principal. No palco principal clique no primeiro frame e pressione F9 para abrir a janela de actions. Insira o código que aprendemos no tutorial anterior (esse código é referente ao posicionamento dos blocos).

stop();
arrayField = [
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
];

Funões actionScripts.

Para prosseguirmos vamos da uma pincelada rápida em 2 funções actionscripts que usaremos.

createEmpytClip(Nome,Deph); Essa função cria um movie clip vazio com o nome e índice que você definir.

_root.createEmptyMovieClip("Field", 1);

attachMovie(Link,nome, Deph);Essa função copia um movieclip da biblioteca para o palco, você se lembra quando agente criou o nosso movieclip Tile que nós definimos um nome para a propriedade Linkage, esse é o nome que usamos para o link. Resumindo se agente for chamar aquele nosso tile da biblioteca usamos assim:

_root.attachMovie("Tile","NovoTile",2);

gotoAndStop(posiçao): Envia animaçao para posição indicada. No nosso exemplo estamos enviando animçao para o frame 3

_root.gotoAndStop(3);

Loop

Vamos criar a estrutura do loop que irá gerar dinamicamente os movieclips em suas devidas posições. Recapitulando a estrutura da visualização da matriz:

arrayField[Linha][Coluna];

Então teremos que criar um loop que percorra cada linha e dentro desse loop montar um loop que percorra todas as colunas.

Loop percorrendo linha
.     loop percorrendo todas as colunas
.     .    Cria o movieclip
.     .    Posiciona o movie clip
.     .    Posiciona o frame na posição correta.
.     .
.     .fim do loop de colunas
.
.fim do loop de linhas

Essa é a nossa estrutura agora vamos converter para código Completo. (Todo código abaixo deve ser inserido no primeiro frame)

stop();
arrayField = [
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
];
_root.createEmptyMovieClip("Field", 1);
for (i = 0; i < arrayField.length; i++) {
    //percorre um loop de colunas
    for (j = 0; j < arrayField.length; j++) {
        newName = "Tile_" + j + "_" + i;
        _root["Field"].attachMovie("Tile", newName, i * 100 + j * 2);
        _root["Field"][newName]._x = j * 20;
        _root["Field"][newName]._y = i * 20;
        _root["Field"][newName].gotoAndStop(arrayField[i][j]+1);
    }
}

Recapitulando o funcionamento do código.

Definimos uma Matriz para podermos criar o cenário, Criamos um movieclip vazio para inserirmos nele os moviesclips tile que está na biblioteca, Fizemos um loop para criar 1 Tile para cada posicionamento da matriz, criamos uma variável chamada “newName” para podermos manipular melhor o nome de cada objeto novo criado. Usamos uma equação para definir o dephs (indice de posicionamento de layer) de cada objeto criado i * 100 + j * 2″ com isso todo objeto criado não corre o risco de ter o mesm dephs. E por ultimo jogamos o frame de cada objeto criado para o numero da matriz +1 (não existe frame 0 né^^).

No proximo tutorial nós aprenderemos a validadar quais locais o personagem poderá andar ou não, e vamos criar também nosso personagem no cenário.

Bem pessoal espero que estejam gostando do tutorial, como eu disse no anterior qualquer duvida postem ou me procurem no msn, eu ajudarei na boa. até a proxima pessal, CYA.また見てね.

Tile System – Tutorial [Part 2][Matriz Cenário]

maio 24, 2008

今日は皆-さん Dando continuidade ao nosso tutorial do Tile System. Nesse tutorial vamos finalmente por a mão na massa e entender como criamos um cenário tile system baseando em uma matriz.

Esse será o nosso cenário de estudo

Mas antes vamos entender como funciona uma matriz 2×2 para isso vamos montar uma matriz letras x números.

A = [A1, A2, A3];
B = [B1, B2, B3];
C = [C1, C2, C3];

Com isso nois temos as 3 vetores diferentes cada um representando uma linha diferente agora se agruparmos eles dessa forma:

Field = [A,B,C];

Eu prefiro desenhar a matriz desse jeito:

Field = [
[A1, A2, A3],
[B1, B2, B3],
[C1, C2, C3]
];

Para acessarmos cada valor do vetor acima devemos usar os index da seguinte forma:

Field[Linha][Coluna];

Analogamente para acessarmos cada valor da matriz faremos assim^^

Field[0][0] = A1
Field[0][1] = A2
Field[0][2] = A3
Field[1][0] = B1
Field[1][1] = B2
Field[1][2] = B3
Field[2][0] = C1
Field[2][1] = C2
Field[3][2] = C3

Bem isso é algo meio complexo de se entender de começo mas logo logo você pega o jeito. Agora vem a pergunta pra que eu tive que entender isso? o que isso vai ser útil para criar o cenário. Bem muito simples por que o código abaixo será o nosso cenário^^

arrayField = [
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 1, 1, 1, 1, 0, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 1, 0, 0, 0, 0, 1, 0, 2],
[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
];

Se vocês prestarem atenção com calma nos números 1 espalhado pela matriz forma exatamente um R. ohhhhh agora vocês lembram que o nosso cenário tem um R branco exatamente aonde esta os 1 e uma borda azul que esta exatamente aonde você esta vendo o numero 2 e analogamente aonde o 0 esta verde nosso cenário. Para ficar mais claro vamos rever a figura do nosso cenário com a matriz por cima

Bem pessoal vou dar um tempo para vocês assimilarem o novo conhecimento adquirido com esse post e no próximo post nois finalizamos o nosso cenário com o desenvolvimento do actionsctipt que gerará o nosso cenário. Mas se vocês quiserem ir se adiantando vou dar a dica do que faremos no próximo post.

Próximo post:

• Criemos um movieclip aonde cada frame vai representar um quadrado de cor diferente.
• Faremos um loop que percorrera nossa matriz e no lugar de cada numero criará um movieclip diferente
• Depois mandaremos nossos movieclip exibirem a imagem correta baseado nos números da matriz

Espero que esteja sendo claro, pois eu nunca tinha escrevido nada antes para ensinar alguém^^ qualquer duvida postem aqui ou podem me procurar no msn (esta do lado direito junto o meu auto retrato^^) nos veremos no próximo post pessoal. Até mais, CYA, また見てね.