Использование свойства currentLabel - PullRequest
0 голосов
/ 18 февраля 2011

Я делаю проект в AS3. Это простой «игровой автомат». При нажатии на маркер появляются три мувиклипа, которые воспроизводятся, начиная со случайных кадров, и при повторном нажатии они останавливаются в случайном кадре.

Теперь, часть, с которой у меня проблемы: мне нужно, чтобы 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 голосов
/ 18 февраля 2011

В вашем методе stopSpinner вам необходимо проверить, совпадают ли все строки меток каркаса всех трех спиннеров.

Возможно, создайте новый метод с именем 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));
}

Вам нужно всего лишь две проверки двух комбинаций меток друг с другом из-за процесса исключения, если они оба истинны, то последнийкомбинация тоже должна совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...