Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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

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 AS3中If语句中的事件侦听器_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 AS3中If语句中的事件侦听器

Actionscript 3 AS3中If语句中的事件侦听器,actionscript-3,flash,Actionscript 3,Flash,我有一个(也许很奇怪)问题要问你,有经验的ActionScript大师: 从逻辑上讲,我可能遗漏了一些东西,但情况如下:我在MovieClip的不同帧上嵌套了按钮,在MovieClip的附加类上,我有一个if语句,为嵌套在适当帧上的按钮添加事件侦听器;然而,当我运行代码时,无论运行所述代码的条件是否为真,flash似乎都在按顺序执行代码。我只是好奇是否有一种特殊的方法可以更好地处理这种情况 public function Die1() { // constructor code trac

我有一个(也许很奇怪)问题要问你,有经验的ActionScript大师: 从逻辑上讲,我可能遗漏了一些东西,但情况如下:我在MovieClip的不同帧上嵌套了按钮,在MovieClip的附加类上,我有一个if语句,为嵌套在适当帧上的按钮添加事件侦听器;然而,当我运行代码时,无论运行所述代码的条件是否为真,flash似乎都在按顺序执行代码。我只是好奇是否有一种特殊的方法可以更好地处理这种情况

public function Die1() {
    // constructor code
trace("Roll 1 D1 is:", MainGame.valueRoll1);

if (MainGame.valueRoll1 == 1){
    gotoAndStop(1);
    die1Sd1_btn.addEventListener(MouseEvent.CLICK, Side1process);
}

if (MainGame.valueRoll1 == 2){
    gotoAndStop(2);
    die1Sd2_btn.addEventListener(MouseEvent.CLICK, Side2process);
}

if (MainGame.valueRoll1 == 3){
    gotoAndStop(3);
    die1Sd3_btn.addEventListener(MouseEvent.CLICK, Side3process);
}

if (MainGame.valueRoll1 == 4){
    gotoAndStop(4);
    die1Sd4_btn.addEventListener(MouseEvent.CLICK, Side4process);
}

if (MainGame.valueRoll1 == 5){
    gotoAndStop(5);
    die1Sd5_btn.addEventListener(MouseEvent.CLICK, Side5process);
}

if (MainGame.valueRoll1 == 6){
    gotoAndStop(6);
    die1Sd6_btn.addEventListener(MouseEvent.CLICK, Side6process);
}
}

提前感谢所有回复这篇文章的人,我想世界上所有的语法知识都不能帮助程序逻辑…

你最好在整个骰子上使用一个事件监听器,而不是使用大量依赖骰子当前帧的监听器。像这样:

function Die() {
    this.addEventListener(MouseEvent.CLICK,processDie);
}
// instead of that entire 'if'! 
// Also, this approach will allow you making more dies without spawning classes
function processDie(e:MouseEvent):void {
    switch (currentFrame) {
        case 1: side1Process(); break;
        case 2: side2Process(); break;
        case 3: side3Process(); break;
        case 4: side4Process(); break;
        case 5: side5Process(); break;
        case 6: side6Process(); break;
    }
}
在你的
main游戏中
你会这样做:

var dice:Array=[];
public function MainGame {
    for (var i:int=0;i<maxDice;i++) {
        var die:Die=new Die();
// make a new die. It'll automatically have an event listener attached
        die.x=i*50;
        die.y=20; // place somewhere
        addChild(die);
        dice.push(die);
    }
    // rest of code follows
}
for (var i:int=0;i<dice.length;i++) 
    if (mayIRollTheDie(i)) // provide a correct condition here
        dice[i].gotoAndStop(1+Math.floor(Math.random()*6));
var-dice:Array=[];
公共职能博弈{

对于(var i:int=0;暂不说-你不能像那样直接引用给定帧上的对象-你必须先等待帧被构建。谢谢!我会研究一下,谷歌不是很方便吗?!哇,我从来没有想过要这么做,这很有意义!在我的情况下,我正在制作一种“扑克牌骰子”游戏,我很好奇将每个骰子放入一个数组是否会更复杂。但这确实给了我一个极好的跳转点!非常感谢您的洞察力!~干杯!