我在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();
}
}
答案 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));
}
你只需要两个检查两个标签组合,因为消除过程,如果它们都是真的,那么最后一个组合也必须匹配。