Movimentos simulando Wii da Nintendo

Beleza pessoal? a um tempo atrás acessando alguns sites, achei muito boa a ideia o game Wario Land para o console Wii da Nintendo!

http://www.wariolandshakeit.com/launch/index.html

Hoje criei uma pequena classe simulando a aplicação gerada no menu do site! bem simples!

Usaremos uma estrutura simples para a aplicação imports, variaveis, construtor e listeners para detectar o movimento.

Usaremos a classe Tweener para fazer movimentos e o link para download da classe esta abaixo:

http://code.google.com/p/tweener/

Agora vamos ao código:

package {

/**
* …
* Danillo Castilho
* PressMove Class – use this class for simulate a wii interactions
*/

// IMPORTS —————————————————————————–

import caurina.transitions.*;

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class PressMove extends Sprite {

// VARIABLES ———————————————————————-
// variaveis da classe

var container:                    Sprite = new Sprite();
var containerView:                Sprite = new Sprite();
var actualMouseX:                Number = 0;
var directionX:                    Number = 0;
var directionType:                String; // TYPES = RIGHT AND LEFT
var moviments:                    int = 0;
var intensive:                    int = 100;
var counterTimer:                Timer;
var pctAlpha:                    Number = 0;

// CONSTRUCTOR ——————————————————————–

public function PressMove() {
createContainer(); // cria os objetos principais
startTimer(); // cria o timer para verificação se o objeto esta sendo movimentado
}

// CREATE OBJECTS —————————————————————–
// cria os containers principais para os testes da aplicação

private function createContainer() {
container.graphics.beginFill(0×000000, 1);
container.graphics.lineStyle(1, 0×000000, 1);
container.graphics.moveTo(0, 0);
container.graphics.drawCircle(10, 10, 40);
container.graphics.endFill();

container.x = 200;
container.y = 200;

container.buttonMode = true;
container.addEventListener(MouseEvent.MOUSE_DOWN, downMouse);
container.addEventListener(MouseEvent.MOUSE_UP, upMouse);

addChild(container);

containerView.graphics.beginFill(0×000000, 1);
containerView.graphics.lineStyle(1, 0×000000, 1);
containerView.graphics.moveTo(0, 0);
containerView.graphics.drawCircle(10, 10, 40);
containerView.graphics.endFill();

containerView.x = 30;
containerView.y = 30;
containerView.alpha = 0;

addChild(containerView);
}

// CREATE TIMER —————————————————————–
// cria o timer para principal que irá verificar se o objeto esta sendo movimentado

private function startTimer() {
counterTimer = new Timer(intensive);
counterTimer.addEventListener(TimerEvent.TIMER, downMovimentValue);
counterTimer.start();
}

// LISTENERS ——————————————————————–
// listeners da aplicação

// listener usado quando o objeto segura o click do mouse
private function downMouse(evt:MouseEvent) {
container.addEventListener(MouseEvent.MOUSE_MOVE, moveMouse);
}

// listener usado quando o objeto solta o click do mouse
private function upMouse(evt:MouseEvent) {
container.removeEventListener(MouseEvent.MOUSE_MOVE, moveMouse);
Tweener.addTween(container, { x: 200, time: 0.2 } );
}

// listener usado quando segura o click e movimenta o mouse
private function moveMouse(evt:MouseEvent) {
var mouseMoviment:Number = stage.mouseX;

pctAlpha = moviments / 100; // porcentagem usada para criar o alpha do objeto que verifica o movimento

// verifica a posição do mouse antigo e atual para acionar uma direcao e acrescentar valores caso o mouse recebe movimentos continuos de direira e esquerda
if (actualMouseX < mouseMoviment) {
if (directionType == “RIGHT”) {
moviments++;
}
Tweener.addTween(container, { x: 210, time: 0.2 } );
directionType = “LEFT”;
} else if (actualMouseX > mouseMoviment) {
if (directionType == “LEFT”) {
moviments++;
}
Tweener.addTween(container, { x: 190, time: 0.2 } );
directionType = “RIGHT”;
}
Tweener.addTween(containerView, { alpha: pctAlpha, time: 0.2 } );
actualMouseX = stage.mouseX;
}

// verifica o movimento do objeto caso não esteje ativo o valor alpha será diminuido constantemente..!
private function downMovimentValue(evt:TimerEvent) {
if (moviments <= 0) {
moviments = 0;

Tweener.addTween(containerView, { alpha: 0, time: 0.2 } );
} else {
moviments–;

pctAlpha = moviments / 100;
Tweener.addTween(containerView, { alpha: pctAlpha, time: 0.2 } );
}
}

}

}

Pronto..! agora é só usar.. e pensar em coisas criativar para usar a aplicação!! já pensei algumas malucas.. e logo mais faço o post do código! valhew!!

Ainda sem comentários

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.