使用currentLabel属性

时间:2011-02-18 01:25:34

标签: actionscript-3

我在AS3做一个项目。这是一个简单的“老虎机”。单击句柄时,有三个MovieClip以随机帧开始播放,再次单击时会停在随机帧上。

现在,我遇到问题的部分:我需要AS来评估三个帧(使用currentLabel),如果它们匹配,则启动一个名为playWin的函数。如果它们不匹配则不会发生任何事情。

我尝试了一个标准的“if”语句,但currentLabel属性让我感到沮丧。我也不知道如何比较三个陈述。我只练习比较两个。

任何帮助将不胜感激!

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

}  

1 个答案:

答案 0 :(得分:0)

在你的stopSpinner方法中,你需要检查所有三个spinners framelabel字符串是否匹配。

也许创建一个名为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));
}

你只需要两个检查两个标签组合,因为消除过程,如果它们都是真的,那么最后一个组合也必须匹配。