2011-02-18 6 views
0

私はAS3でプロジェクトをやっています。それは簡単な「スロットマシン」です。ハンドルをクリックすると、ランダムなフレームから再生する3つのムービークリップがあり、再度クリックするとランダムなフレームで停止します。currentLabelプロパティの使用

ここで私は問題を抱えています:3つのフレーム(currentLabelを使用)を評価するためにASが必要で、それらがplayWinという関数を起動するのと一致する場合はASが必要です。一致しない場合は何も起こりません。

私は標準の "if"ステートメントを試しましたが、currentLabelプロパティが私を引き上げています。私はまた、3つのステートメントを比較する方法も知らない。私は練習が2回しかなかった。

助けていただけたら幸いです!

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(); 
    } 

} 

答えて

0

stopSpinnerメソッドでは、3つのスピンフレームのフレームラベル文字列がすべて一致するかどうかを確認する必要があります。

checkSpinnersという新しいメソッドを作成し、すべて一致する場合はtrueを返し、そうでない場合はfalseを返すことがあります。次に、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)); 
} 

彼らの両方に該当する場合、消去法で、最後の組み合わせがあまりにも一致しなければならないので、あなただけ、お互いにラベルの2つのチェック2の組み合わせを必要としています。

関連する問題