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!!