2011-02-18 3 views
0

Je réalise un projet dans AS3. C'est une simple "machine à sous". Lorsque le bouton est cliqué, il y a trois MovieClips qui jouent à partir de cadres aléatoires et quand ils sont cliqués à nouveau, ils s'arrêtent sur une image aléatoire.Utilisation de la propriété currentLabel

Maintenant, la partie qui me pose problème: j'ai besoin d'AS pour évaluer les trois trames (en utilisant currentLabel) et si elles correspondent, lancer une fonction appelée playWin. Si elles ne correspondent pas, rien ne se passera.

J'ai essayé une instruction "if" standard mais la propriété currentLabel me fait trébucher. Je ne sais pas non plus comment comparer trois déclarations. Je n'ai eu que de la pratique en comparant deux.

Toute aide serait appréciée!

package com.chandelle { 
import flash.display.MovieClip; 
import flash.display.FrameLabel; 

import flash.events.MouseEvent; 

public class Main extends MovieClip { 
    var _spinner1:Spinner = new Spinner(); 
    var _spinner2:Spinner = new Spinner(); 
    var _spinner3:Spinner = new Spinner(); 
    var _lights:Lights = new Lights(); 

    public function Main() { 


     var machine:Machine = new Machine(); 
     this.addChild(machine); 
     machine.x = stage.stageWidth/2; 
     machine.y = stage.stageHeight/2; 


     machine.addChild(_lights); 
     _lights.x = 14; 
     _lights.y = -212; 
     _lights.stop(); 

     var handle:Handle = new Handle(); 
     machine.addChild(handle); 
     handle.x = 257; 
     handle.y = -70; 
     handle.addEventListener(MouseEvent.CLICK, spinSpinner); 


     machine.addChild(_spinner1); 
     _spinner1.x = 140; 
     _spinner1.stop(); 
     _spinner1.addEventListener(MouseEvent.CLICK, stopSpinner); 


     machine.addChild(_spinner2); 
     _spinner2.x = 8; 
     _spinner2.stop(); 
     _spinner2.addEventListener(MouseEvent.CLICK, stopSpinner); 


     machine.addChild(_spinner3); 
     _spinner3.x = -123; 
     _spinner3.stop(); 
     _spinner3.addEventListener(MouseEvent.CLICK, stopSpinner); 
    } 
    private function spinSpinner(evt:MouseEvent):void { 
     var num1:Number = Math.round(1+ Math.random() * 10); 
     var num2:Number = Math.round(1+ Math.random() * 10); 
     var num3:Number = Math.round(1+ Math.random() * 10); 
     _spinner1.gotoAndPlay(num1); 
     _spinner2.gotoAndPlay(num2); 
     _spinner3.gotoAndPlay(num3); 
    } 
    private function stopSpinner(evt:MouseEvent):void{ 
     var num1:Number = Math.round(1+ Math.random() * 10); 
     var num2:Number = Math.round(1+ Math.random() * 10); 
     var num3:Number = Math.round(1+ Math.random() * 10); 
     _spinner1.gotoAndStop(num1); 
     _spinner2.gotoAndStop(num2); 
     _spinner3.gotoAndStop(num3); 
    } 



    } 


    //private function playWin():void{ 
     //_lights.play(); 
    } 

} 

Répondre

0

Dans votre méthode stopSpinner, vous devez vérifier si les trois filets framelabel correspondent.

Peut-être créer une nouvelle méthode appelée checkSpinners, qui renvoie true si tous correspondent, et false si ce n'est pas le cas. Utilisez-le ensuite à la fin de votre méthode stopSpinner.

private function stopSpinner(evt:MouseEvent):void 
{ 
    var num1:Number = Math.round(Math.random() * 10) + 1; 
    var num2:Number = Math.round(Math.random() * 10) + 1; 
    var num3:Number = Math.round(Math.random() * 10) + 1; 
    _spinner1.gotoAndStop(num1); 
    _spinner2.gotoAndStop(num2); 
    _spinner3.gotoAndStop(num3); 

    if (checkSpinners()) 
    { 
     playWin(); 
    } 
} 

private function checkSpinners():Boolean 
{ 
    var label1:String = _spinner1.currentLabel; 
    var label2:String = _spinner2.currentLabel; 
    var label3:String = _spinner3.currentLabel; 

    return ((label1 == label2) && (label1 == label3)); 
} 

Vous avez seulement besoin de deux contrôles deux combinaisons des étiquettes avec l'autre, en raison du processus d'élimination, si les deux sont vraies, alors la dernière combinaison doit correspondre aussi.

Questions connexes