Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 16h17   #1
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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 :
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 !
BlackDonuts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 22h21   #2
Membre du Club
 
Homme
Développeur informatique
Inscription : 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
Points : 66
Points : 66
Bonjour,

Avez-vous essayé de placer les lignes en rouge dans le constructeur de la classe ?
Pourcentage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h43   #3
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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.
BlackDonuts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 16h08   #4
Membre du Club
 
Homme
Développeur informatique
Inscription : 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
Points : 66
Points : 66
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 :
1
2
3
public function brique(){
    this.addEventListener(Event.ADDED_TO_STAGE, initialiser);
}
Pourcentage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h18   #5
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
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...
BlackDonuts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 23h23   #6
Membre du Club
 
Homme
Développeur informatique
Inscription : 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
Points : 66
Points : 66
Citation:
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").

Citation:
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 ?
Pourcentage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h24   #7
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
Le but était de baisser le volume du "son1" car trop fort. Le livre dans lequel j'ai suivi le tutoriel expliquait qu'il fallait passer par la méthode SoundTransform pour appliquer une modification de volume ou de balance au son.
BlackDonuts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h54   #8
Membre du Club
 
Homme
Développeur informatique
Inscription : 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
Points : 66
Points : 66
Et en ajoutant
Code :
controleson=piste1.soundTransform;
au-dessus de
Code :
controleson.volume=0.1;
Je ne suis pas sûr que ça va fonctionner donc pouvez-vous aussi donner le code que vous avez (s'il est différent de celui du premier post).
Pourcentage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 20h02   #9
Invité de passage
 
Homme
Étudiant
Inscription : 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
Points : 0
Points : 0
Désolé cela fait un moment que je n'ai plus eu le temps de revenir sur ce problème, travaillant sur un autre projet.

Je vous remercie pour toutes vos réponses ! Mais même avec votre dernier conseil ça ne fonctionne pas. Mon code n'a pas changé à mon souvenir.
Ce n'est pas grave, comme dit, actuellement je suis sur autre chose donc j'y reviendrai peut-être plus tard.

Encore une fois merci pour votre aide !
BlackDonuts est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h37.


 
 
 
 
Partenaires

Hébergement Web