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 :

1120 encore et toujours


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut 1120 encore et toujours
    Bonjour à tous,
    J'espère que vous pourrez m'aider car je suis en train de devenir fou^^ Je suis bloqué sur un truc depuis quelques heures et c'est tellement débile que ça m'énerve d'autant plus.

    En fait, je suis nouveau en AS3 et j'ai suivi un tutoriel pour faire un jeu de casse brique. J'ai tout compris et suivi à la lettre. J'en arrive au moment de mettre du son, tout se passe bien. Et puis, je veux régler par programmation le volume d'un son, et là bim, c'est le drame. J'ai pourtant suivi ce que disait le bouquin à ce sujet.

    Voici mon code (je suis sous Flash CS5) :

    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
    36
    package {
    	
    	import flash.display.*;
    	import flash.events.*;
    	import flash.media.*;
    
    	
    	public class brique extends MovieClip{
    		
    		var piste1:SoundChannel=new SoundChannel();
    		var son1:bruitage_collision=new bruitage_collision();
    		var controleson:SoundTransform=new SoundTransform();
    		controleson.volume=0.1;
    		piste1.soundTransform=controleson;
    		
    		public function brique(){
    			this.addEventListener(Event.ADDED_TO_STAGE, initialiser);
    		}		
    		
    		public function initialiser(e:Event){
    			this.removeEventListener(Event.ADDED_TO_STAGE, initialiser);
    			this.addEventListener(Event.ENTER_FRAME,tester_balle);				
    		}		
    		
    		private function tester_balle(e:Event){		
    			if (this.hitTestObject(this.parent.getChildByName("ma_balle"))){
    				this.visible=false;
    				stage.dispatchEvent(new Event("Rebondir_horizontalement"));
    				this.removeEventListener(Event.ENTER_FRAME,tester_balle);				
    				stage.dispatchEvent(new Event("Une_brique_supprimée"));
    				piste1=son1.play();
    			}
    		}
    	}	
    	
    }
    Je reçois une erreur 1120: Access of undefined property pour "controleson" et "piste1". Je vous ai mis en rouge les lignes en questions. Qu'est-ce que je fais de travers ?
    Si l'un d'entre vous à une réponse, ce serait super^^

    Merci d'avance !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 40
    Par défaut
    Bonjour,

    Avez-vous essayé de placer les lignes en rouge dans le constructeur de la classe ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Alors, au risque de paraître plus noob que je ne le suis, qu'entendez-vous par constructeur de la classe ?
    Ce code est intégré dans un fichier .as, présent dans le même dossier que le .fla, et qui comporte toutes les données relatives à l'objet "brique" du jeu.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 40
    Par défaut
    Le constructeur de la classe est la méthode appelée lorsqu'une instance de la classe est créée via le mot-clé new. En AS3 cette méthode porte le même nom que la classe dans laquelle elle est définie.

    Dans le code que vous donnez le constructeur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function brique(){
        this.addEventListener(Event.ADDED_TO_STAGE, initialiser);
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    J'ai suivi votre conseil et effectivement cela fonctionne !
    C'était donc tout bête.

    Donc si je comprends bien, mon erreur était de mettre ces deux lignes de code avec mes déclarations de variables, donc en quelques sortes dans "le vide", alors qu'il fallait les placer dans une fonction pour qu'elles soient pris en compte ?

    Ah, je remarque cependant, en testant l'animation, que malgré que je ne reçois plus de message d'erreur, le volume ne change pas quelle que soit la valeur...

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 40
    Par défaut
    Donc si je comprends bien, mon erreur était de mettre ces deux lignes de code avec mes déclarations de variables, donc en quelques sortes dans "le vide", alors qu'il fallait les placer dans une fonction pour qu'elles soient pris en compte ?
    Exactement. Vous ne pouvez pas agir sur les propriétés d'une variable membre de la classe avant que le constructeur soit appelé (sinon la variable membre n'est pas encore créée et vous obtenez un "Access of undefined property").

    Ah, je remarque cependant, en testant l'animation, que malgré que je ne reçois plus de message d'erreur, le volume ne change pas quelle que soit la valeur...
    Ça c'est un autre problème. Que souhaitez-vous faire exactement ?

Discussions similaires

  1. Clic droit encore et toujours
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 22/05/2006, 00h26
  2. IE/Firefox... encore et toujours...
    Par maniaco_jazz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 19/02/2006, 23h17
  3. nodes, child et compatibilité... encore et toujours
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 14h26
  4. stencil buffer, encore et toujours
    Par JAimeBienCoderBourre dans le forum OpenGL
    Réponses: 4
    Dernier message: 08/04/2005, 11h16

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