Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Function ActionScript 3单击七个按钮后转到下一场景_Function_Actionscript 3_Button - Fatal编程技术网

Function ActionScript 3单击七个按钮后转到下一场景

Function ActionScript 3单击七个按钮后转到下一场景,function,actionscript-3,button,Function,Actionscript 3,Button,我有七个按钮(btn_1,btn_2,btn_3,…),当所有按钮都被单击时(不是一行,只是随机),我想转到下一个场景中的第一帧。我的代码应该是什么样子 谢谢大家! const buttons:Array = [btn_one, btn_two, btn_three, btn_four, btn_five, btn_six, btn_seven]; // dictionary to keep clicks state const clicked:Dictionary = new Dictio

我有七个按钮(btn_1,btn_2,btn_3,…),当所有按钮都被单击时(不是一行,只是随机),我想转到下一个场景中的第一帧。我的代码应该是什么样子

谢谢大家!

const buttons:Array = [btn_one, btn_two, btn_three, btn_four, btn_five,  btn_six, btn_seven];

// dictionary to keep clicks state
const clicked:Dictionary = new Dictionary();

function buttonClickHandler(event:Event):void {
    // record specific button's click to a dictionary
    clicked[event.currentTarget] = true;

    // true, if all the dict keys have true values
    const allButtonsClicked:Boolean = buttons.every(
        function(button:Object, ...rest):Boolean {
            return clicked[button];
        });

    if (allButtonsClicked) {
        // remove all listeners
        for each (var button:DisplayObject in buttons) {
            button.removeEventListener(MouseEvent.CLICK, buttonClickHandler);
        }

        //do whatever action you need. For example:
        gotoAndStop(/*neededFrame*/);
    }
}

// initialize dictionary values, and add listeners
for each (var button:DisplayObject in buttons) {
    clicked[button] = false;
    button.addEventListener(MouseEvent.CLICK, buttonClickHandler);
}
还没有测试,但应该可以工作。无论如何,这个计划应该是有效的

stop();

const buttons:Array = [btn_one, btn_two, btn_three, btn_four, btn_five,  btn_six, btn_seven];

// dictionary to keep clicks state
const clicked:Dictionary = new Dictionary();

function buttonClickHandler(event:Event):void {
    // record specific button's click to a dictionary
    clicked[event.currentTarget] = true;

    // true, if all the dict keys have true values
    const allButtonsClicked:Boolean = buttons.every(
        function(button:Object, ...rest):Boolean {
            return clicked[button];
        });

    if (allButtonsClicked) {
        // remove all listeners
        for each (var button:DisplayObject in buttons) {
            button.removeEventListener(MouseEvent.CLICK, buttonClickHandler);
        }

        //do whatever action you need. For example:
        gotoAndStop(2);
    }
}

// initialize dictionary values, and add listeners
for (var button:DisplayObject in buttons) {
    clicked[button] = false;
    btn_one.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_two.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_three.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_four.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_five.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_six.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    btn_seven.addEventListener(MouseEvent.CLICK, buttonClickHandler);
}

我测试了leetwinski的代码,并为我的按钮添加了eventlisteners,但它不起作用。我得到了错误“1067:将Class类型的值隐式强制到一个不相关的flash.display:DisplayObject类型”我做错了什么?

到目前为止你有什么问题?不仅仅是每个按钮的eventlistener和btn_one的第一个函数(gotoAndPlay(1,“Scene2”)。我不知道该如何开始。直到现在我才做了简单的函数。;-)非常感谢你,leetwinski。如果按钮是MovieClips(动态),你可以在其上设置一个动态属性(单击)并放弃字典。如果我知道该做什么,我就不必问了。你是如何创建这些按钮的?看起来这些btn_一个,。。。是类名。您应该在代码中使用实例名称。应该为舞台上的每个按钮设置实例名称。对不起。我忘了告诉你我使用了MovieClips而不是按钮,因为这样我可以在单击这些“按钮”时更改颜色或形状-->在frame1中开始;单击ShowFrame2。很抱歉。是否可以使用您的代码并使用“单击时-->显示第2帧”扩展按钮ClickHandler,例如按钮“MovieClip(btn_one)。gotoAndPlay(2)”?在该区域的“…rest”中我必须输入什么?[…]const allButtonsClicked:Boolean=buttons.every(函数(按钮:对象,…rest):Boolean[…]顺便说一句,感谢您的耐心。不必关心这个
…rest
的事情。它是as3中函数签名变体的一部分。