Novidades React v3.3.0

O React já disponibilizou a versão v3.3.0, que é uma versão que inclui recursos como modelos customizados e suporte para alguns novos operadores opcionais de encadeamento e coalescência nula.

Modelos personalizados:

Agora, você pode criar um aplicativo novo utilizando modelos personalizados. Alguns modelos existentes como cra-template e cra-template-typescript. Utilize esse comando para criar um novo aplicativo tendo como base um modelo personalizado:

npx create-react-app my-app --template typescript

Você pode omitir o prefixo cra-template ao especificar o modelo desejado.

Operadores de encadeamento e coalescência nula:

// encadeamento opcional
a?.(); // undefined se a `a` é null/undefined
b?.c; // undefined se a `b` é null/undefined

// coalescência nula
undefined ?? 'algum outro padrão'; // resulta em: 'algum outro padrão'
null ?? 'algum outro padrão'; // resulta em: 'algum outro padrão'
'' ?? 'algum outro padrão'; // resulta em: ''
0 ?? 300; // resulta em: 0
false ?? true; // resulta em: false
Importante:

Para utilizar os novos operadores, atualize o seu TypeScript para a versão 3.7.0. Caso utilize o VS Code 1.4 ou anterior, configure o editor para que ele entenda os novos operadores.

Continue lendo “Novidades React v3.3.0”

Phaser.js #4 – Criando jogo Parte 3

Nosso jogo já está tomando forma, pessoal! Para continuarmos, recomendo a leitura da Parte 2 desta série de artigos!

Adicionando o jogador:

Já temos nossas plataformas, mas ninguém para percorrê-las. Temos que resolver isso neste momento.

Criaremos uma variável chamada player e adicionaremos o seguinte código à função create().

player = this.physics.add.sprite(100, 450, 'dude');

player.setBounce(0.2);
player.setCollideWorldBounds(true);

this.anims.create({
    key: 'left',
    frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
    frameRate: 10,
    repeat: -1
});

this.anims.create({
    key: 'turn',
    frames: [ { key: 'dude', frame: 4 } ],
    frameRate: 20
});

this.anims.create({
    key: 'right',
    frames: this.anims.generateFrameNumbers('dude', { start: 5, end: 8 }),
    frameRate: 10,
    repeat: -1
});

Você pode conferir isso no seu arquivo part5.html.

Há duas coisas acontecendo neste código: a criação de um Sprite de física e a criação das animações que ele irá usar.

Physics Sprite:

A primeira parte do código cria o sprite:

player = this.physics.add.sprite(100, 450, 'dude');

player.setBounce(0.2);
player.setCollideWorldBounds(true);

Isso cria um novo sprite chamado player, posicionado a 100×450 pixels da parte inferior do jogo. O sprite foi criado através da Physics Game Object Factory, ou seja, ele é um corpo de Física Dinâmica por padrão.

Depois de criar o sprite, ele recebe um valor de rejeição de 0,2. Mas o que isso significa?

Isso significa que, quando ele aterrissar de um salto, ele saltará levemente. O sprite é definido para colidir com os limites do jogo. Os limites, por padrão, estão do lado de fora da dimensão do jogo. Como o jogo foi definido em 800×600, o jogador não poderá avançar para fora desta área, impedindo o player de correr pelas bordas da tela ou pular pela parte superior.

Animando:

Se você olhar para a função preload, verá que o “dude” foi carregado como uma folha de sprites, não como uma imagem. Isso acontece porque ele possui vários quadros de animação.

Existem 9 quadros de animação dentro desta página de sprites: 4 para a esquerda, uma para a frente e 4 para a direita. O Phaser suporta sprites invertidos, para econimizar quadros de animação.

Definimos duas animações, “left” e “right”. Aqui está a animação “left”:

this.anims.create({
    key: 'left',: 'left',
    frames: this.anims.generateFrameNumbers('dude', {
        start: 0,
        end: 3
    }),
    frameRate: 10,
    repeat: -1
});

A animação “left” usa os frames 0, 1, 2 e 3 e é executada a 10 frames por segundo. O valor “repeat -1” informa que há repetição de animação.

Esse é o nosso ciclo de execução padrão e o repetimos para correr na direção oposta, usando a tecla “right” e a final para “turn”.

Velocidade do player:

O Phaser tem suporte para uma variedade de sistemas de física diferentes, cada um atuando em alguma cena do Phaser. Quando um Sprite de Física é criado, ele recebe uma propriedade body, que é uma referência ao seu corpo. Isso representa o sprite como um corpo físico no mecanismo de física do Phaser Arcade. O objeto body tem muitas propriedades e métodos. Por exemplo, para simular os efeitos da gravidade de um sprite, podemos adicionar o seguinte:

player.body.setGravityY(300);

Isso tornará o objeto mais pesado e mais rapidamente ele cairá. Verifique isso no seu código executando o part5.html, e verá que o player irá cair sem parar, ignorando completamente o terreno criado anteriormente:

Isso acontece pois ainda não estamos testando colisões entre o solo e o player. O Phaser já sabe que nosso solo e plataformas são corpos estáticos. Se tivéssemos os criado de forma dinâmica, o jogador entraria em contato com elas, pararia por um momento e o jogo colapsaria. Um sprite de solo dinâmico é um objeto físico em movimento e, quando o jogador o atinge, a força resultante da colisão também é aplicada ao solo, levando os dois corpos a trocarem suas velocidades, fazendo o solo começar a cair também. Para permitir a colisão com as plataformas, podemos criar um objeto Collider. Este objeto monitora dois objetos de física (que podem incluir grupos) e verifica as colisões ou sobreposições entre eles:

this.physics.add.collider(player, platforms);

Veja a mágica acontecer:

O Collider testa a colisão e realiza a separação entre dois objetos. Estamos fornecendo um sprite do player e o grupo de plataformar. Precisamos ter colisões com todas as plataformas, então precisamos fazer esta colisão com o grupo da plataforma. O resultado disso é uma plataforma firme que não entra em colapso.

Está gostando do jogo? Curtindo os seus resultados? Comente abaixo e aguarde o próximo artigo 🙂

[Post rápido]Novidades do TypeScript

É isso mesmo pessoal, a alguns dias saiu uma nova versão do TypeScript, e como em algumas das versões anteriores, eu não podia deixar de escrever algo rápido sobre 🙂

Eu irei dividir esse post em algumas partes para tentar explicar cada uma das novidades dessa nova versão, nesse primeira eu irei abordar: Optional Chaining e Nullish Coalescing.

O primeiro passo será verificar a sua versão. Para isso, abra um terminal no seu computador e execute o comando tsc–version. Abaixo você tem uma imagem demonstrando a minha versão.

Agora, caso você esteja com uma versão menor que a 3.7, execute o comando abaixo para atualizar a sua versão:

npm i -g typescript@latest

Com o ambiente atualizado, vamos as novidades 🙂

Optional Chaining

Essa funcionalidade nos permite validar se uma expressão tem um valor null ou undefined, sem a necessidade de utilização de um if. Para ficar mais claro, vamos a dois exemplos práticos:

Imagine que você tem o retorno de uma API e precisa validar ele antes de passar esse valor para uma variável.

A forma mais simples seria utilizando um operador ternário como no exemplo abaixo:

let t = (video === null || video === undefined) ? 
undefined :video.media.thumb();

Agora com essa nova funcionalidade nós podemos passar o operador ? para validar esse valor antes de passar ele para variável t:

let t = video?.media.thumb();

Bem mais elegante né?

Nullish Coalescing

Essa funcionalidade utiliza o operador ?? para validar uma expressão, caso o valor da esquerda seja null, ele retorna o valor default, caso não, ele retorna o valor que está sendo validado.

Em cenários como esse também é muito comum a utilização de um ternário:

let numbers = null;
let code = (numbers !== null && numbers !== undefined) ? 
numbers : 10;
console.log(code);

Agora nessa nova versão nós podemos utilizar o operador ?? para validar a nossa expressão e em caso de um valor null ou undefined, ele ira pegar o valor default. Esse operador pode substituir a utilização dos ||.

let numbers = null;
let code= numbers ?? 10;
console.log(code);

Bom, a ideia desse post era ser algo rápido demonstrando duas das novidades dessa nova versão do TS.

Espero que tenham gostado e até o próximo post pessoal 😉

Confira a publicação original em: https://medium.com/xp-inc/post-r%C3%A1pido-novidades-do-typescript-98970a46d591

Gostou dessa publicação? Comente abaixo!

Conheça Drop.js, uma biblioteca JavaScript

Drop.js é uma biblioteca JavaScript e CSS para criação de menus dropdowns e outros pop-ups. A biblioteca utiliza o Tether.js para posicionar seus elementos com eficiência.

Conheça alguns recursos:

Como o Drop é construído em cima do Tether.js, você consegue usufruir dos benefícios de posicionamento eficientemente.

  • Drops podem ser alinhados dentro de outros drops;
  • O Drop usa acelração da GPU para se manter em 60fps ao utilizar o scrolling;
  • Você pode utilizar toda a potência do Tether para posicionar o seu Drop em qualquer lugar;
  • Eles podem ser configurados para abrir quando o usuário clica, passa o mouse ou focaliza um elemento;
  • Os Drops são reposicionados automaticamente quando o usuário utiliza o scroll na tela, reorientando para permanecer na exibição;
  • O Drop é mantido pelos desenvolvedores do HubSpot que se preocupam em fazer tudo o que você precisa.

Inicialização:

Para criar um Drop, crie uma instância drop:

let dropInstance = new Drop({
  target: document.querySelector('.drop-target'),
  content: 'Welcome to the future',
  classes: 'drop-theme-arrows',
  position: 'bottom left',
  openOn: 'click'
})

Métodos:

Você pode chamar alguns métodos na sua instância drop:

open()

Abre o drop. Adiciona o drop-open e outras classes ao drop;

close()

Fecha o drop. Remove o drop-open e outras classes do drop. Drops fechados ainda permanecem no DOM;

remove()

Remove o drop do DOM. Pode ser usado como uma alternativa para o close();

toggle()

Fecha o drop se estiver aberto, e abre o drop se estiver fechado;

isOpened()

Retorna true se o drop estiver aberto;

position()

Reposiciona o drop. Utilize-o se você alterar o conteúdo do drop ou a posição do elemento;

destroy()

Remove o drop junto com todos os seus eventos.

Continue lendo “Conheça Drop.js, uma biblioteca JavaScript”

Phaser.js #3 – Criando jogo Parte 2

Olá pessoal! Dando sequência ao tutorial de Phaser.js na prática, hoje iremos abordar a inserção de assets no nosso jogo. Recomendo fortemente uma leitura da nossa Parte 1 para seguirmos adiante.

Continuando…

Bom, já temos o nosso céu criado. Podemos usar o setOrigin para alterar a exibição da imagem. Veja como fazer isso:

this.add.image(0, 0, 'sky').setOrigin(0, 0);

Isso redefiniria a posição do nosso desenho (céu) no canto superior esquerdo da tela. No Phaser 3 existem as propriedades originX e originY.

A ordem de exibição dos objetos do jogo corresponde à ordem que você os cria. Agora, iremos colocar um sprite de estrelas que ficará acima do nosso plano de fundo, ou seja, precisamos garantir que ele seja adicionado depois da imagem do céu.

function create() {
    this.add.image(400, 300, 'sky');
    this.add.image(400, 300, 'star');
}

A sua saída deve ser assim:

Se a imagem da estrela for inserida antes, a imagem do céu a encobrirá.

Por baixo dos panos, this.add.image cria um objeto de jogo de imagem e o adiciona a lista de exibição das cenas. Essa lista é onde ficam os objetos do seu jogo. Cuidado para não adicionar as imagens fora da tela. Você não as verá visualmente, mas ainda existirão.

A cena em si não possui tamanho fixo e se estende em todas as direções, mas a câmera controla sua visualização na cena. Agora, criaremos elementos da cena, adicionando uma imagem de fundo e também, algumas plataformas, utilizando a função create:

var platforms;

function create ()
{
    this.add.image(400, 300, 'sky');

    platforms = this.physics.add.staticGroup();

    platforms.create(400, 568, 'ground').setScale(2).refreshBody();

    platforms.create(600, 400, 'ground');
    platforms.create(50, 250, 'ground');
    platforms.create(750, 220, 'ground');
}

Olhando o código, você deve ter percebido uma chamada this.physics. Estamos utilizando o sistema Arcade Physics do Phaser. Precisamos adicioná-lo ao Game Config para informar ao Phaser. Aqui está a configuração:

var config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 300 },
            debug: false
        }
    },
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

A sua saída deve ficar algo parecido com isso:

Observação:

Comente a inserção da estrela no seu código.

Você pode verificar o seu código olhando o arquivo part4.html.

Ok, já temos um cenário e algumas plataformas. Mas como essas plataformas funcionam?

platforms = this.physics.add.staticGroup();

Criamos um grupo de física e atribuímos à variável platforms. Na Arcade Physics existem dois tipos de corpos físicos: Dinâmico e Estático. O corpo dinâmico pode se mover através de aceleração ou velocidade, podendo saltar e colidir com outros objetos. Um corpo estático simplesmente possui posição e tamanho. Quando algo colide com ele, ele não se move. É perfeito para solo e plataformas.

O que é um grupo?

São maneiras de agrupar objetos e controlá-los como uma única unidade. Você pode verificar colisões entre grupos e objetos de jogo. Eles são capazes de criar seus próprios objetos de jogo por meio de funções auxiliares úteis. Em um grupo criado para a física, os filhos automaticamente herdarão as habilidades de física, poupando trabalho.

platforms.create(400, 568, 'ground').setScale(2).refreshBody();

platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');

Este código cria uma imagem “ground”: um retângulo verde simples, que servirá de plataforma.

Para fazer a plataforma abranger toda a largura do nosso jogo, utilizamos a função setScale(2), que dobrará em x2 o tamanho original. A chamada refreshBody() é necessária pois escalamos um corpo estático, portanto, precisamos fazer alterações na física do jogo.

O processo de criação das outras plataformas é exatamente o mesmo, apenas não precisamos escalar a imagem.

Você pode ler o artigo original em inglês neste link: http://phaser.io/tutorials/making-your-first-phaser-3-game/part2

Está gostando desta sequência? Comente abaixo!

JavaScript completa 24 anos de idade

No dia 4 de dezembro de 2019, o JavaScript comemora seus 24 anos de existência. Neste mesmo dia, em 1995, a NetScape e a Sun Microsystems anunciaram o JavaScript, uma linguagem de script de plataforma aberta, para a criação e personalização de aplicativos em redes corporativas e Internet.

É uma linguagem de script fácil de usar, projetada para criar webapps que vinculam objetos e recursos em clientes e servidores. Foi projetada para ser usado por desenvolvedores web para que criassem scripts dinâmicos em execução no cliente ou servidor.

Com o JavaScript, podemos ter um formulário inteligente que executa cálculos de pagamento de empréstimos ou de câmbio diretamente no cliente em resposta à entrada do usuário. Uma página pode conter scripts JavaScript executados no cliente e servidor. No servidor, os scritps podem compor e formatar dinamicamente o conteúdo HTML com base nas preferências do usuário armazenadas em um banco de dados e no cliente.

“A natureza do JavaScript cliente-servidor, multi-fornecedor e multiplataforma é uma adaptação natural ao sistema de autoria da Web Vermeer FrontPage. O rastreamento de tecnologias da Web inovadoras e ativadoras é uma prioridade importante para a Vermeer, e estamos nos movendo rapidamente para incorporar o JavaScript na primeira página em produtos futuros.”

John R. Mandle

CEO da Vermeer Technologies

 

Basicamente, essas foram as palavras utilizadas pelos criadores do artigo original, publicado no lançamento do JavaScript, em 04 de dezembro de 1995.

Você pode ler o artigo original em:

https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html

Atualmente, a linguagem evoluiu muito em relação à quando foi lançada. Foram criados diversos frameworks e bibliotecas que auxiliam no desenvolvimento front-end, trazendo agilidade e uma rápida curva de aprendizado para os desenvolvedores. Podemos utilizar JavaScript no lado do servidor com Nodejs e utilizar diversos frameworks e bibliotecas como as atuais React, Angular e Vue, e também o jQuery para a apresentação no front.

Gostou dessa notícia? Comente abaixo!

Exercício fácil: DOM – Escrita

Neste exercício, iremos utilizar os conceitos de escrita no DOM para realizar a alteração de classes em elementos HTML. Será necessário conhecimento básico em leitura do DOM, HTML e CSS.

Exercício:

No arquivo HTML, temos itens com a classe azul e itens com a classe vermelho.

Faça o seguinte:

– inverta as classes (itens com azul terão a classe vermelho e vermelho terão a classe azul).

Utilize o HTML disponível a seguir para realizar o seu exercício:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .azul{
            color: blue;
        }

        .vermelho{
            color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li class="azul">Item</li>
        <li class="vermelho">Item</li>
        <li class="azul">Item</li>
        <li class="vermelho">Item</li>
        <li class="azul">Item</li>
        <li class="vermelho">Item</li>
    </ul>
</body>
</html>

Dica:

  • Use o document.querySelectorAll() para obter uma lista de elementos;
  • Você precisará percorrer os elementos utilizando um laço de repetição;
  • Utilizando uma estrutura de condicionais, verifique as classes;
  • O uso do classList será útil;
  • Realize o seu exercício em um arquivo separado scripts.js e chame-o no seu index.html.
Resolução:
let listaElementos = document.querySelectorAll("li");
        
for (let elemento of listaElementos){
    if(elemento.classList == "azul"){
        elemento.classList.remove("azul");
        elemento.classList.add("vermelho");
    }else {
        elemento.classList.remove("vermelho");
        elemento.classList.add("azul");
    }
}

Gostou deste exercício? Achou fácil ou difícil? Resolveu de outra maneira? Conte para a gente!

Phaser.js #2 – Criando jogo Parte 1

Olá pessoal, nesta sequência de artigos, iremos criar um jogo utilizando a Phaser.js. É necessário que você conheça os procedimentos de instalação de servidores web e instalação do Phaser. Recomendo a leitura desta postagem, que é a primeira postagem da série Phaser.js. Você pode acessá-lo clicando aqui.

Vamos começar?

Primeiro, se faz necessário o download deste arquivo zip, que contém tudo o que você necessita para criar o jogo.

[download id=”3357″]

Passo 1:

Abra o arquivo part1.html no seu editor de código favorito. Você deverá ver um código parecido com este:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8" />
    <title>Making your first Phaser 3 Game - Part 1</title>
    <script src="//cdn.jsdelivr.net/npm/phaser@3.11.0/dist/phaser.js"></script>
    <style type="text/css">
        body {
            margin: 0;
        }
    </style>
</head>
<body>

<script type="text/javascript">

    var config = {
        type: Phaser.AUTO,
        width: 800,
        height: 600,
        scene: {
            preload: preload,
            create: create,
            update: update
        }
    };

    var game = new Phaser.Game(config);

    function preload ()
    {
    }

    function create ()
    {
    }

    function update ()
    {
    }

</script>

</body>
</html>

Este é a nossa configuração inicial. Muitas coisas serão inseridas nessa configuração, a medida que o nosso conhecimento em Phaser é expandido. Agora, nós definiremos o renderizador, as dimensões e uma cena padrão.

Uma instância de um objeto Phaser.Game é atribuída a uma variável local chamada game e o objeto de configuração é passado para ela. Isso inicia o processo de dar vida ao seu jogo em Phaser!

Renderização:

A propriedade type pode ser Phaser.CANVAS, Phaser.WEBGL ou Phaser.AUTO. Este é o contexto de renderização que você deseja usar no seu jogo. O valor recomendado é o Phaser.AUTO, que usa automaticamente o WebGL, mas se não houver suporte do navegador, ele usará o Canvas. O elemento criado será anexado ao documento no momento que o script for chamado.

Dimensões:

As propriedades width e height definem a largura e altura do seu elemento tela, respectivamente. Usaremos 800 x 600 pixels.

Cena:

Vamos carregar os assets que precisamos para o nosso jogo. Faremos isso criando chamadas para o Phaser dentro de uma função chamada preload. O Phaser procurará automaticamente essa função quando carregar a tela e carregará qualquer coisa que esteja definida dentro dela.

Insira o seguinte código dentro de sua função preload vazia:

function preload ()
{
    this.load.image('sky', 'assets/sky.png');
    this.load.image('ground', 'assets/platform.png');
    this.load.image('star', 'assets/star.png');
    this.load.image('bomb', 'assets/bomb.png');
    this.load.spritesheet('dude', 
        'assets/dude.png',
        { frameWidth: 32, frameHeight: 48 }
    );
}

Isso irá carregar 5 assets: 4 imagens e uma folha de sprites. O Primeiro parâmetro, chamado de asset key (por exemplo, “sky”, “bomb”), é uma sequência que é um link para o material carregado, e é o que você usará no seu código ao criar objetos do jogo.

Exibindo o background:

Para exibir o background do seu jogo, colocaremos o seguinte código dentro da função create:

this.add.image(400, 300, 'sky');

Isso irá carregar um background de um céu azul. Você pode encontrar isso feito no seu arquivo part3.html.

Sua saída deve ser assim:

Você pode ler o artigo original em inglês neste link: http://phaser.io/tutorials/making-your-first-phaser-3-game/part1

Está gostando destes artigos sobre Phaser? Siga acompanhando e comente abaixo!

Phaser.js #1 – Intro

Nesta série de artigos iremos abordar o desenvolvimento de jogos utilizando o Phaser.js, uma ferramenta para criação de jogos JavaScript. Abordaremos um ambiente para que você crie seus jogos. Nisto, se inclui a execução de um servidor Web local e obtenção da versão mais recente do Phaser.

Por que utilizar um servidor web local?

Quando você solicita algo na web, você usa o protocolo http, que garante que você acesse apenas os arquivos aos quais está destinado. Se você utiliza o file:// para arquivos locais, não há segurança a nível de servidor.

O seu jogo precisará carregar alguns recursos, como imagens, arquivos de áudio, JSON e alguns arquivos JavaScript. Ele precisa ter a segurança necessária para ficar livre de possíveis ataques. Por isso utilizaremos o servidor web, que disponibiliza o http://

Recomendo o uso do XAMPP, que possui uma configuração fácil.

Qual editor de código usar?

Realmente, fica a seu critério. Utilize o seu editor de texto favorito. Particularmente, eu prefiro o Visual Studio Code.

Fazendo o download do Phaser:

Você pode fazer o download diretamente da página de downloads.

npm:
npm install phaser@3.21.0
cdn:
<script src="//cdn.jsdelivr.net/npm/phaser@3.21.0/dist/phaser.js"></script>
<script src="//cdn.jsdelivr.net/npm/phaser@3.21.0/dist/phaser.min.js"></script>

Instalados o servidor, editor de texto e baixado o Phaser? Então vamos começar!

Criando um Olá Mundo!

Chegou a hora de criarmos algo e verificarmos se tudo está funcionando perfeitamente. Certifique-se de descobrir o webroot do seu servidor e crie um arquivo index.html dentro dele. Insira o seguinte código:

<! DOCTYPE html>
<html>
<head>
    <script src = "https://cdn.jsdelivr.net/npm/phaser@3.15.1/dist/phaser-arcade-physics.min.js"> </script>
</head>
<body>

    <script>
    var config = {
        tipo: Phaser.AUTO,
        largura: 800,
        altura: 600,
        física: {
            padrão: 'arcade',
            videogames: {
                gravidade: {y: 200}
            }
        }
        cena: {
            preload: preload,
            criar: criar
        }
    };

    var game = novo Phaser.Game (config);

    função preload ()
    {
        this.load.setBaseURL ('http://labs.phaser.io');

        this.load.image ('céu', 'ativos / céu / espaço3.png');
        this.load.image ('logo', 'assets / sprites / phaser3-logo.png');
        this.load.image ('vermelho', 'ativos / partículas / red.png');
    }

    função create ()
    {
        this.add.image (400, 300, 'céu');

        partículas de var = this.add.particles ('red');

        var emissor = particulas.createEmitter ({
            velocidade: 100,
            escala: {início: 1, final: 0},
            blendMode: 'ADD'
        });

        var logo = this.physics.add.image (400, 100, 'logo');

        logo.setVelocity (100, 200);
        logo.setBounce (1, 1);
        logo.setCollideWorldBounds (true);

        emitter.startFollow (logo);
    }
    </script>

</body>
</html>

Inicialize o seu servidor, e acesse o endereço 127.0.0.1/index.html.

Você deve ver uma saída parecida com isso:

Detalhe: é uma animação xD

Se ocorreu algum erro, ou a animação não está sendo visualizada, abra as suas opções de desenvolvedor do navegador e verifique o que o console está logando.

Onde consigo mais exemplos?

Você pode verificar os exemplos em Phaser aqui. Você encontrará um editor de código ativo, para modificar o código e executá-lo em tempo real para ver as alterações imediatamente.

Você também pode fazer o download de todos os exemplos no repositório do github. Você encontrará todos os recursos para uso em seus próprios jogos.

Você pode ler o artigo original em inglês neste link: https://phaser.io/tutorials/getting-started-phaser3/index

Gostou deste artigo? Fique atento à sequência que logo será lançada 😀

Exemplo Prático: Node.js

Neste tutorial, irei demonstrar como criar a sua primeira aplicação Olá Mundo em node.js. Para instalar o node.js na sua máquina, confira o link a seguir: https://nodejs.org/en/

Vamos começar!

Você pode realizar este tutorial utilizando Windows, Linux ou Mac. Você precisará:

  • Criar uma pasta chamada projects dentro do seu diretório de usuário. Você pode fazer isso utilizando os seguintes comandos no Windows:
> mkdir %USERPROFILE%\projects
> cd %USERPROFILE%\projects
  • No Linux e Mac:
$ mkdir ~/projects
$ cd ~/projects

Agora, acesse a pasta e crie um arquivo chamado ola-mundo.js dentro da sua pasta projects. O próximo passo é inserir este código dentro do seu arquivo olamundo.js. Use o seu editor de texto favorito para tal ação.

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Ola Mundo!\nBem vindo ao nodejs');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

O que fazer agora?

Você já tem tudo preparado para sua primeira aplicação simples em node. O próximo passo é:

  • Com o seu terminal aberto, e na pasta projects, escreva o seguinte comando para executar o seu servidor node:
$ node ola-mundo.js

Observação:

Não utilize o “&” e “<” nos seus comandos, eles são apenas um indicativo de início de comando. Eles estão lá apenas para replicar como apareceria no seu terminal.

Feito isto, a sua saída no terminal deve ser algo parecido com isso:

Server running at http://127.0.0.1:3000/

Isso significa que o seu servidor está rodando no endereço 127.0.0.1:3000.

Para acessá-lo, abra o seu navegador e, na url, digite este endereço: http://127.0.0.1:3000/

O seu navegador deve estar mostrando em tela algo como isso:

Se o seu navegador mostrar a frase “Ola Mundo! Bem vindo ao node.js”, significa que o seu servidor está funcionando.

Parabéns, a sua primeira aplicação Node.js já está funcionando!

Para adquirir mais conhecimentos, recomendo que leia a documentação, disponível em: Documentação Node.js

Gostou deste artigo? Comente abaixo!