Wiiflash + VirtualMouse = Wiimouse

Hum, ok, donc je vais faire comme si de rien n’était, comme si ça ne se voyait pas que j’ai pas écrit un seul billet depuis l’ouverture du site cet été ;-).
C’est pas forcement l’envie qui me manquait mais j’attendais d’avoir un truc un peu pertinent à poster.

Bref, je joue depuis quelques temps déja avec le fameux serveur Wiiflash (je posterai quelques expérimentations d’ici peu) qui permet comme son nom l’indique de connecter des wiimotes à Flash… mais aussi les nunchuks, les manettes classiques et dernièrement le balanceboard et peut-être bientôt d’autres controleur (la guitare ?).

Pour autant, quand on utilise la wiimote dans Flash, ça ne remplace pas automatiquement la souris de l’ordinateur. On pourrait utiliser glovepie pour ça) mais là le but du jeu est de pouvoir interagir entre les wiimotes et des programmes Flash.

Donc en gros le principe consiste à masquer la souris, créer un curseur maison, coller le déplacement de la Wiimote sur le curseur créé et enfin analyser en permanence les objets qui se trouvent sous le point que l’on déplace, puis déclencher sur ces objets les évenements de controle souris habituels (down, up, click, over, out).

Hors il se trouve que le célébre Senocular mets à disposition dans sa librairie AS3 une classe VirtualMouse qui gére parfaitement l’analyse des objets sous un point. Il ne restait donc plus qu’à associer cette classe avec la classe wiimote de Wiiflash et le tour est joué.

J’ai par ailleurs modifié la classe VirtualMouse pour qu’elle prenne en compte aussi les champs de texte de saisie.

Voila une petite vidéo pour voir ce que ça donne :


Wiimouse from fidoman on Vimeo.

Vous pourrez trouver la classe VirtualMouse chez Senocular ici : VirtualMouse

Voici ma classe WiiMouse : WiiMouse.as

Et un petit exemple de l’usage :

import org.wiiflash.events.ButtonEvent;
import org.wiiflash.events.WiimoteEvent;
import org.wiiflash.Wiimote;

import com.freddufau.wii.WiiMouse;

import flash.utils.getDefinitionByName;

var _wiimote = new Wiimote();
_wiimote.addEventListener(Event.CONNECT, onWiimoteConnect);
_wiimote.connect();

var _wiimote2 = new Wiimote();
_wiimote2.addEventListener(Event.CONNECT, onWiimoteConnect);
_wiimote2.connect();

function onWiimoteConnect( pEvent:Event ):void
{
var wiiM:Wiimote = pEvent.target as Wiimote;

wiiM.rumble = true;
wiiM.rumbleTimeout = 500;

var theclass:Class = getDefinitionByName( “Pointer” + (wiiM.id + 1) ) as Class;
var pointer:MovieClip = new theclass() as MovieClip;

var wiiMouse:WiiMouse = new WiiMouse( wiiM, pointer );
addChild( wiiMouse );
}

Le gros intérêt de cette solution est que l’on a plus besoin de coder des gestionnaires d’évenement à chaque ajout d’un nouveau bouton dans un projet Wiiflash..

A bientôt les amis !

 

Il y a 2 commentaires

  1. Lucifer dit

    Ah tu le source de ce dont tu parles.

  2. admin dit

    Salut, bah elle y est là , non ?

 

Laisser un commentaire