首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3-让鼠标单击影响数组时间线中的对象

AS3-让鼠标单击影响数组时间线中的对象
EN

Stack Overflow用户
提问于 2014-04-03 07:11:06
回答 2查看 304关注 0票数 0

我快被这玩意搞疯了。我在舞台上有几只熊,并将它们列在一个数组中。我希望它们在单击时更改其动画帧,只要它们一开始就不在“向下”的动画帧上。下面是代码。问题发生在//检查它们是否被命中的下面。

代码语言:javascript
复制
 //put the bears in an array
var bearsArray: Array = new Array();
for (var i=0; i<numChildren;i++) {
    if (getChildAt (i) is bear_mc) {
        bearsArray.push(getChildAt(i));
    }
}

//move them up and down
addEventListener(Event.ENTER_FRAME,upAndDown);
function upAndDown(event:Event){
    if (Math.random() < 0.02){
        var randomBear = Math.floor(Math.random() * 9);
            bearsArray[randomBear].gotoAndPlay("popup");
    }
}


//check if they get hit 
for (var j:int = 0; j < bearsArray.length; j++){
    bearsArray[j].addEventListener(MouseEvent.CLICK, hitBears);
}

function hitBears(e:MouseEvent){
    for (var k: int=0; k<numChildren; k++){
        if (bearsArray[k].currentFrame != "down"){
            trace("clicked"); 
            bearsArray[k].gotoAndPlay("surprised");
         }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-04-03 07:13:07

currentFrame返回整数,而不是字符串。如果你想使用字符串,你必须使用currentFrameLabel或currentLabel。

编辑:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html#currentLabel

如果你只想控制一只熊,记住你不需要遍历它们(实际上这是没有意义的,因为你会检查每一个熊)。更好的(也是正确的)方法应该是:

代码语言:javascript
复制
function hitBears(e:MouseEvent){
    var bear:MovieClip = e.currentTarget as MovieClip;
    if(bear.currentLabel != "down") { //or currentFrameLabel, depends how your mc is set up
        trace("clicked");
        bear.gotoAndPlay("surprised");
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-04 01:39:13

我用鼠标检查命中测试,而不仅仅是检查点击,从而使其正常工作。这是出于某种原因而起作用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22824861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档