2010-03-13 13 views
0

C'est la première fois que j'essaie d'utiliser des classes de document dans AS3 et que je suis en difficulté. J'essaye d'ajouter des écouteurs d'événement à un clip profond de 2 niveaux, attendant un clic cependant j'obtiens l'erreur suivante.Flash AS3 propriété non définie MouseEvent dans la classe de document

ERROR: Access of undefined property MouseEvent 

package 
{ 
import flash.display.MovieClip; 
import flash.media.Sound; 
     import flash.media.SoundChannel; 

public class game extends MovieClip 
{ 
    public var snd_state = true; 

    public function game() 
    { 
    ui_setup(); 
    } 

    public function ui_setup() 
    { 
    ui_mc.toggleMute_mc.addEventListener(MouseEvent.CLICK, snd_toggle); 
    } 

    public function snd_toggle(MouseEvent) 
    { 
    // 0 = No Sound, 1 = Full Sound 
    trace("Toggle"); 
    } 
} 
} 

Répondre

1

Si vous allez utiliser une classe, vous avez besoin pour l'importer. Le compilateur vous indique que vous avez référencé la classe MouseEvent mais que vous ne l'avez pas incluse dans votre code. Je l'ai nettoyé un peu pour vous:

package 
{ 
import flash.display.MovieClip; 
import flash.events.MouseEvent; // <-- import MouseEvent Class 
import flash.media.Sound; 
import flash.media.SoundChannel; 

public class game extends MovieClip 
{ 
    public var snd_state:Boolean = true; // -- snd_state is type Boolean 

    public function game() 
    { 
    ui_setup(); 
    } 

    public function ui_setup():void 
    { 
    ui_mc.toggleMute_mc.addEventListener(MouseEvent.CLICK, snd_toggle); 
    } 

    private function snd_toggle(event:MouseEvent):void 
    { 
    // 0 = No Sound, 1 = Full Sound 
    trace("Toggle"); 
    } 
} 
} 

Vous remarquerez que j'ai ajouté :void à la fin de vos méthodes. Cela indique le type de variable à retourner. Par exemple, si votre méthode renvoie une chaîne, elle sera :String. Ajout d'un paramètre à votre gestionnaire snd_toggle. Le paramètre est appelé "événement" et il s'agit d'une instance de la classe MouseEvent (event:MouseEvent).

+0

Merci les changements travaillé un régal et je comprends où je me trompais .. Je pense que j'ai ce concept totalement faux maintenant, je me demandais si cela vous dérangerait de l'expliquer .. Je supposais que la classe ci-dessus serait être instancié dans la première image de la première scène. J'ai également supposé que lors du changement de scène, les écouteurs d'événements, etc., fonctionnaient toujours. Scène 1: J'ai un mc nommé ui_mc, qui a un bouton pour couper le son. Scène 2: J'ai le même clip vidéo avec le même bouton. Maintenant, l'eventListener le récupère dans la première scène, mais pas dans la seconde: S? – Lee

+0

J'essaye d'utiliser le même clip pour jouer le rôle d'une superposition d'IU dans différentes scènes .. Si chacune des UI a le même nom d'istance, les eventListeners ne les verront-elles pas indépendamment de la scène? Je suis sûr d'avoir tort quelque part .. – Lee

+0

Avez-vous défini la classe comme votre classe de document pour le FLA? – typeoneerror

0

Vous devez importer l'événement: import flash.events.MouseEvent

Le paramètre de fonction doit aussi un nom: public function snd_toggle(bblabla:MouseEvent) { ...