Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何使3个按钮按特定顺序点击到特定帧?闪光AS3_Actionscript 3_Flash_Button_Sequence - Fatal编程技术网

Actionscript 3 如何使3个按钮按特定顺序点击到特定帧?闪光AS3

Actionscript 3 如何使3个按钮按特定顺序点击到特定帧?闪光AS3,actionscript-3,flash,button,sequence,Actionscript 3,Flash,Button,Sequence,我正在努力使3个按钮能够进入一个框架时,按一定顺序点击按钮。例如,按钮被标记为 按钮1 按钮2 按钮3 他们需要点击的顺序是按钮3,按钮1,按钮2,这样他们才能进入下一帧,我怎样才能做到这一点 这就是我目前所拥有的 var clicked = MouseEvent.CLICK var buttons = new Array(YellowButton, BlueButton, RedButton); for (var a=0; a<buttons.lenght; a++) {

我正在努力使3个按钮能够进入一个框架时,按一定顺序点击按钮。例如,按钮被标记为
按钮1
按钮2
按钮3

他们需要点击的顺序是按钮3,按钮1,按钮2,这样他们才能进入下一帧,我怎样才能做到这一点

这就是我目前所拥有的

 var clicked = MouseEvent.CLICK 
 var buttons = new Array(YellowButton, BlueButton, RedButton); 
 for (var a=0; a<buttons.lenght; a++) 
 { 
   buttons[a].buttonMode=true 
   buttons[a].addEventListener(clicked,RedYellowBlue); 
 } 

 function RedYellowBlue(event:MouseEvent):void { gotoAndStop(20); }
var clicked=MouseEvent.CLICK
var按钮=新阵列(黄色按钮、蓝色按钮、红色按钮);

对于(var a=0;a我建议创建一个字符串对象,该对象将通过单击按钮进行组装,然后与您设置的特定序列进行比较。其美妙之处在于,您可以使其适用于任何长度的序列

这里最大的问题是,您不希望所有三个按钮上都有相同的事件侦听器。您希望它们的操作是唯一的,否则,单击其中一个按钮与单击所有其他按钮相同(这是您当前代码的问题)


这应该足以让您开始。如果您需要其他帮助,请随时评论我的答案。

要整合@JasonMc92的答案,您可以使用目标的名称作为
检查字符串
字母,因此您只需为所有按钮调用一个函数

yellowButton.addEventListener(MouseEvent.CLICK, redYellowBlue);
redButton.addEventListener(MouseEvent.CLICK, redYellowBlue);
blueButton.addEventListener(MouseEvent.CLICK, redYellowBlue);

function redYellowBlue(e:MouseEvent){
  checkString += e.currentTarget.name.substr(0,1);
  check();
}
//... continue on with Jason's functions
或者,由于已在数组中设置了按钮,因此也可以使用按钮的索引作为检查顺序。类似于:

function redYellowBlue(e:MouseEvent){
  checkString += String(buttons.indexOf(e.currentTarget));
  check();
}

function check(){
  if (checkString == '201') {
    // ... handle correct sequence
  }
}
此外,还有一个最佳实践提示:

类的名称只能使用前导大写。实例名和函数名应以小写开头。(前导大写不会破坏任何内容,但这是标准做法)

//下面是代码

var buttons:Array = new Array(YellowButton, BlueButton, RedButton);



for(var i:int=0;i< buttons.length;i++) 
{
  buttons[a].buttonMode=true 
  buttons[a].addEventListener(MouseEvent.CLICK,buttonsClickHandler); 
} 

function buttonsClickHandler(event:MouseEvent):void { 

    var button:MovieClip = MovieClip(event.target);

    switch(button.name)
    {
        case "YellowButton":
        case "BlueButton":
        gotoAndStop(2);
        break;
        case "RedButton":
        gotoAndStop(3);
        break;
    }
}
var按钮:数组=新数组(黄色按钮、蓝色按钮、红色按钮);
for(变量i:int=0;i
欢迎来到StackOverflow!若要在此处获得积极响应,请展示您的尝试。我已将您的代码编辑到帖子中。您也可以自己进行编辑。希望这将帮助您获得一些有用的答案。祝您好运!非常感谢Jason,这正是我想要的!再次感谢Ollie好的建议!不过,设置t字符串应该是:
checkString+=“r”
(而不是
=+
)如果这个答案是有用的,别忘了接受它(可能还有向上投票).你好,Jason我有一个问题,希望你能帮我。我如何编写代码,使任何不正确的按钮点击顺序都会进入某一帧?再次感谢你的帮助我编辑了答案,这样你就可以看到了。:D(查看check()函数)[感谢编辑,Scrimothy]谢谢你,这是非常有用的!谢谢汉克斯·斯特拉非常有用
var buttons:Array = new Array(YellowButton, BlueButton, RedButton);



for(var i:int=0;i< buttons.length;i++) 
{
  buttons[a].buttonMode=true 
  buttons[a].addEventListener(MouseEvent.CLICK,buttonsClickHandler); 
} 

function buttonsClickHandler(event:MouseEvent):void { 

    var button:MovieClip = MovieClip(event.target);

    switch(button.name)
    {
        case "YellowButton":
        case "BlueButton":
        gotoAndStop(2);
        break;
        case "RedButton":
        gotoAndStop(3);
        break;
    }
}