[英]AS3-Having a mouse click affect object in an array's timeline
我為此感到瘋狂。 我在舞台上有幾只熊,並以陣列的形式列出了它們。 我希望他們在單擊時更改其動畫框架,只要它們不在“向下”動畫框架上即可。 下面是代碼。 問題在///檢查是否擊中線下方。
//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");
}
}
}
currentFrame返回一個整數,而不是字符串。 如果要使用字符串,則必須使用currentFrameLabel或currentLabel 。
編輯: http : //help.adobe.com/zh_CN/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");
}
}
我通過用鼠標檢查一次hittest而不是僅僅檢查單擊來使其工作。 出於某種原因,這行得通。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.