我快被这玩意搞疯了。我在舞台上有几只熊,并将它们列在一个数组中。我希望它们在单击时更改其动画帧,只要它们一开始就不在“向下”的动画帧上。下面是代码。问题发生在//检查它们是否被命中的下面。
//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");
}
}
}发布于 2014-04-03 07:13:07
currentFrame返回整数,而不是字符串。如果你想使用字符串,你必须使用currentFrameLabel或currentLabel。
编辑:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html#currentLabel
如果你只想控制一只熊,记住你不需要遍历它们(实际上这是没有意义的,因为你会检查每一个熊)。更好的(也是正确的)方法应该是:
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");
}
}发布于 2014-04-04 01:39:13
我用鼠标检查命中测试,而不仅仅是检查点击,从而使其正常工作。这是出于某种原因而起作用的。
https://stackoverflow.com/questions/22824861
复制相似问题