Composant "joypad"pour flashcs3

Soyez le premier à donner votre avis sur cette source.

Vue 5 394 fois - Téléchargée 511 fois

Description

Je me suis toujours demandé si je serais capable de créer un composant qui avec le temps pourrait devenir un standart. Mais quel type de composant ? Mais comment partager son travail sans se le faire voler ? C'est impossible... On peut limiter la casse mais rien de plus réellement.

Donc pas grave je prend le risque.

Le composant est livrée avec 3 Fla expliquant sont fonctionnement.
Plus d'infomations au fur et à mesure. Désolé manque de temps...

Source / Exemple :


hope.games.joypad.Joypad
                |_JoypadKey

hope.games.events.JoypadEvent
                |_JoypadKeyEvent
                |_JoypadStickEvent

On va donc essayer d'expliquer comment cela fonctionne :

1/ Joypad est donc un composant AS3 qu'il vous faut posséder dans la bibliothèque du Fla l'utilisant.
2/ Le chemin du package et son contenu étant décris ci-dessus.
3/ L'importation se faisant de faÇon classique : "import hope.games.joypad.Joypad"
4/ Le composant répondant aux appels claviers, il faut donc le connecter à un objet "visuel". J'ai personnelement choisi, dans le cas de ce composant, l'objet "stage".
5/ Une fois "connecter", l'instance Joypad se chargera d'émettre des évents "touche" correspondant.
6/ Chaque touche pouvant mémoriser son "temps de pression" et ainsi indiquer le temps restant avant de revenir à un état "initial".
7/ Les touches "left, up, right and down" étant l'équivalent d'un pad sur un Joypad.
8/ Les touches "console, select et start", ne fonctionnant elles, comme des touches traditionnelles. la seule différence étant que une fois maintenue pressées, elles n'emette plus d¡event "keyDown".. Elle émettront simplement l'event suivant : "keyUp".
9/ L'ensemble des touches (et du Joypad) essayant de rester "adpatable" aux besoins de tout à chacun.

Voici la structure d'une instance "Joypad":

// la vitesse d'émission des évènements. Par default : 25 ms.
var speed :uint ;

// Si est en train d'écouter un objet "stage".
var connected :Boolean ;

// Permet à l'instance de répondre aux entrées clavier.
function connect( stage:Stage ) ;
// Emmet un event "JoypadEvent.CONNECT"

// Arrête l'écoute des évènements clavier,
function disconnect():void ;
// Emmet un event "JoypadEvent.DISCONNECT"

// Indique à l'instance d'appuyez sur une touche.
// Son utilisation étant plus adaptée à la "manipulation" d'une instance  vià une AI.
function press( key:JoypadKey ):void ;
// Emmet un event "JoypadKeyEvent.DOWN"

// Indique à l'instance de relacher une touche.
// Son utilisation étant plus adaptée à la "manipulation" d'une instance  vià un AI.
function release( key:JoypadKey ):void;
// Emmet un event "JoypadKeyEvent.UP"

// Si posséde l'isntance passée
function hasKey( key:JoypadKey ):Boolean ;

// Ajoute un nouvelle touche au "joypad"
function addKey( key:JoypadKey ):Boolean ;

// Retire un touche de l'instance
function removeKey( key:JoypadKey ):Boolean ;

// Si la touche passée est actuellement pressée
function isDown ( key:JoypadKey ):Boolean ;

// Retourne l'instance Joypadkey correspondant au nom passée.
function getKeyName( name:String ):JoypadKey;

// Retourne l'instance Joypadkey correspondant au "keyCode" passée.
function getKeyCode( code:int ):JoypadKey;

// Retourne un evenement "JoypadStickEvent" (de type "infos") correspondant aux
// attributs des touches directionnelles au moment de l'appel de la fonction.
function getStickEvent( type:String='infos' ):JoypadStickEvent ;

Si vous restez appuyez sur une touche d'une instance Joypad, et que la valeur "dispatchEvent"(Boolean) de la tocuhe pressée est sur true, alors le Joypad émettra tout le temps de la pression, un event "JoypadKeyEvent.CHANGE".

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1378
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
Bon, aller, en fin de semaine je balance une source en AS3 qui permet de gérer les rentrées et sorties du pointeur dans une fenêtre SWF.

bali_balo....=]
Messages postés
1378
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
_
Messages postés
1378
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
J'ai pas regardé le composant en détail, mais ça à l'air utile, comme toute tes sources :)
"Mais comment partager son travail sans se le faire voler ?"
C'est pour cela que je n'ose plus poser de source sur le net, en particulier sur ce site :S
Les manques en freelance ou autre se font du profits sur des trucs sont censés être à but non commercial. Moi pour mes swf j'utilise des obfuscateurs.

Bref, sinon pour ceux que ça intéresserait, il existe un logiciel qui s'appelle JoyToKey: "http://www.electracode.com/4/joy2key/JoyToKey%20English%20Version.htm" qui permet d'associer les touches de son Joystick ou de sa manette aux touches de clavier.
C'est génial sur des jeux en Flash :D, moi qui en développe pour ma boite, quand il s'agit de les tester : mode chaise allongée et joystick à la main ^^, enfin pas pour tous :P

Ciao à tous!
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
si j'ai pu t'être utile, j'en suis content ;)

Peg'
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010

OK !!!
Donc je confirme, les évènements du clavier ne sont pas "logiques".
La valeur "keyCode" est DIFFERENTE selon le type du clavier. Choses non normale vue que ce c'est la valeur "charCode" qui devrait "contenir" la différence selon.
Bref, ceci-n'empechant pas le bon fonctionnement du composant, ca gene juste l'utlisation des explications.
En tout cas merci pour l'intervention...
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.