Sol@rweb weblog

lundi 9 avril 2007

Flash (et flex) sur la wii avec le projet wiiflash

logo wiiflashUn premier post technologique depuis bien longtemps avec un projet qui me tiens à coeur depuis que je suis au courant de son existance.

Il s'agit du projet "WiiFlash", qui a pour objectif de prendre en charge les contrôles de la wiimote et du nunchuk pour le flash, ce qui offre donc de grandes possibilités pour créer des jeux flash pour la wii.

Voici l'adresse officielle du projet : http://www.wiiflash.org

Le projet a été ouvert en open-source le samedi 7 avril et est donc utilisable par tout un chacun pour une somme correct, voici un calcul rapide :

  • Un adaptateur bluetooth : 15 euros
  • Une wiimote : 40 euros (le plus cher)
  • Un nunchuk : 20 euros (pas obligatoire)

Il faut donc débourser 75 euros environ pour pouvoir faire du flash pour la wii

J'en profite aussi pour vous conseiller le logiciel "BlueSoleil" qui m'a permis de prendre en charge la détection des wiimotes sur mon pc, les drivers génériques de windows n'ayant pas fonctionnés.

Il faut aussi noter que malheureusement, le serveur (qui interprète les signaux des wiimotes) ne semble fonctionner qu'avec des wiimotes connectées au pc pour le moment, donc pas encore de prise en charge sur la wii directement.

J'en viens donc au but du post, qui est une petite vidéo de présentation de mes premiers tests, principalements axés sur l'utilisation du stick du nunchuk, on peut aussi y voir un affichage dans la console lors de la détection de l'appui sur une touche, connexion et déconnexion du nunchuk etc... Ce que vous ne pourrez pas voir dans la vidéo : vibration de la wiimote comme on le souhaite, allumage des leds des wiimote comme on le souhaite...

Il y a par ailleurs une première partie avec une seule wiimote et la suite est avec 2 wiimotes.

Et pour finir, le logiciel de capture que j'ai utilisé limitait à 4 images par secondes, ce n'est donc pas aussi fluide qu'en réalité.

Voici le lien vers la vidéo !

vendredi 25 août 2006

Moi je stop, sur mon flex 2...

logo flexEt voici un premier billet depuis bien longtemps avec la découverte d'une application récente de chez Adobe nommée "Flex".

C'est en écoutant les commentaires élogieux de mes collègue du côté flash de la communauté mediabox que j'ai compris que c'était une technologie importante, utilisant le langage Actionscript troisième du nom, plus strict, plus beau, plus puissant et mieux structuré il fallait absolument le tester !

Qu'est-ce que flex ?

Flex est une technologie alliant un format XML propriétaire nommé le MXML pour décrire les éléments, les composants, etc. Mais aussi l'actionscript afin de pouvoir développer des évenements à côté.

C'est donc assez proche du XUL de ce côté-ci qui utilise lui aussi un format XML propriétaire et du javascript pour la gestion des évenements.

Le framework de Flex est 2 est complètement gratuit et l'on peut donc utiliser cette technologie "à la main" mais Adobe a sorti avec cette nouvelle version un outil nommé "Flex Builder" basé sur eclipse et qui offre un très grand confort d'utilisation de la même manière qu'un visual studio du côté de Microsoft.

On pourra dire malheureusement, mais c'est assez compréhensible, Flex Builder n'est pas gratuit et il faudra débourser minimum 537 euros pour acquérir cette première version en anglais.

Un dernier point assez important à noter tout de même est que pour lire les application développée en flex 2 il faut disposer du flash player 9.

capture flex builder
Cliquez sur l'image pour voir une capture

Découverte du langage

Application sans actionscript

Pour bien commencer j'ai suivi une première leçon qui consiste à réaliser une petite interface pour lire un flux RSS.

Extremement simple, il y a juste une utilisation de quelques composants et même pas d'actionscript puisqu'un objet défini dans le MXML permet d'automatiser cette requete.

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="feedRequest.send();">
	<mx:HTTPService 
	    id="feedRequest" 
	    url="http://www.wtg-fansubs.com/flux-20-dernieres-sorties.rss"
	    useProxy="false"/>
	<mx:Panel x="10" y="10" width="400" height="400" layout="absolute" title="{feedRequest.lastResult.rss.channel.title}" id="pnl_main">
		<mx:DataGrid x="39" y="50" id="dgr_rss" dataProvider="{feedRequest.lastResult.rss.channel.item}" width="302">
			<mx:columns>
				<mx:DataGridColumn headerText="Posts" dataField="title"/>
				<mx:DataGridColumn headerText="Date" dataField="pubDate"/>
			</mx:columns>
		</mx:DataGrid>
		<mx:TextArea x="39" y="209" width="302" height="45" id="txt_desc" editable="false" htmlText="{dgr_rss.selectedItem.description}" />
		<mx:LinkButton x="39" y="258" label="Lecture !" id="btn_read" click="navigateToURL(new URLRequest(dgr_rss.selectedItem.link));" />
	</mx:Panel>
</mx:Application>

Ci-dessus on remarque l'utilisation du HTTPService qui va récupérer les données du flux sur l'évenement : creationComplete="feedRequest.send();"

L'affichage est ensuite simplifié en utilisant seulement ce type de données : {feedRequest.lastResult.rss.channel.title}

Utilisation de l'actionscript

Après ce tutoriel je me suis même demandé comment utiliser l'actionscript, heureusement la suite s'avérait plus intéressante, me basant sur une idée donnée dans les leçons je me suis donc lancé à tatons dans la création d'un convertisseur monétaire qui nécessite un évenement développé à la main.

La première chose à faire est donc de lier un fichier actionscript à notre application et pas à écrire le code dans le XML comme ils le font dans les leçons...

On utilise alors :

<mx:Script source="monfichier.as" />

La solution la plus adaptée pour joindre un évenement a un bouton est d'utiliser un ecouteur grâce à une partie MXML : creationComplete="createListener();"

On défini alors l'évenement sur notre bouton :

<mx:Button x="205" y="20" label="Convertir" width="68" id="btn_convert" />

public function createListener():void
{
    btn_convert.addEventListener(MouseEvent.CLICK, convert);
}

On peut finir par la création de notre petite fonction de convertion :

public function convert(e:Event):void
{
	var val:Number;
	var euro:Number = 6.55957;
	
	if (txt_toConvert.text == "")
	{
		Alert.show("Vous devez entrer une valeur");
	} else {
		val = parseInt(txt_toConvert.text);
		if (cmb_devises.selectedItem.data == "F")
		{
			txt_res.text = Math.round(val/euro).toString()+" €";
		} else if (cmb_devises.selectedItem.data == "E") {
			txt_res.text = Math.round(val*euro).toString()+" FF";
		}
	}
}

Conclusion

Flex semble offrir un outil très puissant pour le développement d'application avec une interface web. Au même niveau que le XUL on pourra imaginer de nombreuses utilisations mais flex builder parait être un atout important pour cette technologie.

Vous pouvez consulter mon test dans mon labo et regarder un exemple d'utilisation chez adobe sans oublier qu'il vous faut absolument le flash player 9 !