IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

utilisation clavier dans une classe


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut utilisation clavier dans une classe
    Salut à tous !
    Je cherche à déplacer au clavier un swf externe dans une classe !

    Cela pose plusieurs problèmes :
    Je ne souhaite pas faire de extends Sprite, extends MovieClip etc...
    Je cherche simplement à mettre en nom de paramètre principal, le nom de mon swf chargé de l'extérieur.

    Je vous post ce que j'ai fais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    package {
     
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.display.Stage;
    	import flash.events.KeyboardEvent;
    	import flash.ui.Keyboard;
     
    	public class Player1 {
    		var MC:Object = new Object();
    		public var speed:Number;
    		public var stats:String;
     
    		public function Player1(monSWF:Object) {
    			this.MC = monSWF;
    			this.speed = 0;
    			addEventListener(Event.ADDED_TO_STAGE, stageInit);
    		}
     
     
    		private function stageInit(e:Event = null):void {
    			removeEventListener(Event.ADDED_TO_STAGE, init);
    			stage.addEventListener(KeyboardEvent.KEY_DOWN, cmdChar);
    		}
    		public function cmdChar(event:KeyboardEvent):void {
    			if (event.keyCode == Keyboard.RIGHT) {
    				this.speed = 0.5;
    			}
    			if (event.keyCode == Keyboard.LEFT) {
    				this.speed = -0.5;
    			}
    		}
    	}
    }
    Dans mon fla principal j'ai ça (Je vous passe le chargement de mon swf...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //// chargement de ma class
    var p1:Player1 = new Player1(charP1);
    //////////////////////////////////////////////////////////////////
    addEventListener(Event.ENTER_FRAME,mainAction);
    ///////
    function mainAction(e:Event) {
    	charP1.x+=p1.speed;
    }
    Voila ! donc si vous avez des idées ! je suis preneur !
    Merci de votre aide !

    @+

  2. #2
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Alors si j'ai bien compris le programme a le fonctionnement suivant :

    - charger un swf ( ça c'est ok )
    - bouger le swf au clavier ( pour ceci on passera par une class ) ( sa c'est pas ok )

    L'idée est la suivante :

    - tu charge ton swf ( ou tout autre displayObject et non Object ! )
    - tu file au constructeur de ta class qui disposera d'une function add_keyboard_control ( d:displayObject) : void et qui ajoutera les ecouteurs que tu desires.

    Oublie pas que le display object doit etre ajouter sur le stage et pas à ta class si elle est pas heritiaire de displayobject et donc pas sur le stage.

    En esperant t'avoir aider !

    Ciao

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut
    Salut IP-Fix !

    Merci de bien vouloir m'aider !

    Ce que tu dis à l'air très intéressant, tu as tout de suite compris ce que je voulais faire.
    Je n'ai pas bien compris le à quoi servait le display Object exactement...
    J'ai migré depuis peu en As3, le passage m'est assez pénible et difficile pour le moment.
    Je n'ai encore pas bien assimilé le addChild etc...
    C'est assez rageant sachant que je commençais vraiment à avoir du niveau en as1 & 2.

    Mais je persévère, au vue des développeurs, l'As3 parait quand même beaucoup plus structuré.

    Je ne voudrais pas que tu me mâche le travail, j'essaie toujours de fournir des essaie de ce que j'ai produit etc...
    Mais, si je t'envoie mon .fla et ma class , pourrait tu m'aiguiller ?

    En attendant, je vais de ce pas voir la doc de diplayObject ^^

    Merci pour ton aide !

  4. #4
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    oki,

    Alors pour faire simple l'heritage en informatique permet de faire que les chien et les chat qui on pas mal de caractéristique commune hérite de la class animal ( qui dispose par exemple d'un poid et d'une taille... ) , la class chat aura en plus une fonction qui dit miaow et une gestion amélioré des coups de griffe ... :p

    En as3 DisplayObject qui signifie litéralement objet d'affichage correspond a la class dont tout les autres objet destiné a l'affichage hérite ( car ils ont tous besoin d'un x, y , width , height , et de methode, etc ...

    Voici les class qui hérite de DisplayObject :
    - les Shape : On peut dessiner dedans. On peut pas leur ajouter d'enfant ( voir plus bas )
    - les Sprite : On peut dessiiner comme dans les shapes mais en plus on peu leur ajouter comme enfant n'importe quel displayObject
    - Les movieClip : pareil qu'un sprite mais dispose en plus d'une timeline ( gotoAndplay(3) ) etc ...

    Il y en a d'autre (bitmap , loader , etc ..)

    Tu peux aussi en créer une nouvelle en héritant de displayobject mais généralement on hérite plutot des trois précedemment cité pour pas refaire la roue

    Enfin je parlais d'ajouter des enfant , c'est addChild

    Imagine que le stage est une boite , dedans tu peux mettre d'autre boite avec dedans encore d'autre boite et plusieurs boite contenant plusieurs boite , etc ...

    exemple :

    |Stage
    |---|ImageFond : un shape ou je dessine
    |---|monSWFCharger : un loader
    |------|element1 : un enfant de monSWFCharger qui contiens un chien ^^
    |------|element2
    |-----------|souselement2
    |------|element3
    etc ...

    donc addChild permet d'ajouter un enfant a un objet d'affichage

    J'espere je t'ai éclairer , regarde les exemples et tuto sur le net sa t'aidera puis la doc officiel qui est vraiment cool et ne regrette pas l'as2, l'as3 rox

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut
    Coucou, merci beaucoup pour toutes ces explications, ça m'aide beaucoup !!!
    Ouais, je vais m'accrocher à l'as3 !
    Je vais rien lâcher ^^

    En fait, mon problème viens du fait que je n'arrive pas à accéder à la propriété addEventListener de ma classe.
    En effet, si je n'extends pas ma classe à MovieClip par exemple, la propriété addEventListener n'est pas utilisable...
    à l'inverse, si j'extends ma class, je ne vois pas comment utiliser un swf chargé de l'exterieur !

    Je suis vraiment confus
    Je te joins mon petit fla avec ma classe, j'espère que ça ne te dérange pas de jeter un coup d'œil !

    Merci de m'aider dans mon problème en tout cas !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Utiliser AsyncTask dans une classe de Service ?
    Par bza88 dans le forum Android
    Réponses: 1
    Dernier message: 28/05/2013, 01h15
  2. Réponses: 1
    Dernier message: 13/05/2009, 09h41
  3. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  4. [debutant] Utilisation de l'operateur = dans une classe
    Par Battosaiii dans le forum Débuter
    Réponses: 8
    Dernier message: 10/11/2005, 23h01
  5. utiliser mysql++ dans une classe
    Par Yevetrovitch dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 11/04/2005, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo