Composant "joypad"pour flashcs3

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

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.