3
我想通過flash + actionscript製作一個簡單的卡片匹配遊戲,並且在分配事件偵聽器和名稱時遇到了很大的麻煩。我已經獲得了所有卡片生成語句,並且它們都繪製在我的舞臺上,但即使我將它們的實例名稱分配給了newCard.name,但在跟蹤點擊時獲得的名稱始終是每個單一按鈕上的「root1」我不知道爲什麼。
在點擊處理程序中訪問.name屬性
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public dynamic class cardGameMain extends MovieClip {
public function cardGameMain() {
addCards();
}
public function addCards() {
var lastCard:int;
for (var i = 1; i < 17; i++) {
var newCard:MovieClip;
newCard = new cardBackSymbol();
newCard.name = "card" + i;
addChild(newCard);
newCard.addEventListener(MouseEvent.MOUSE_UP, decideCard);
if (i == 1 || i == 5 || i == 9 || i == 13) {
newCard.x = 20;
if (i == 1) {
newCard.y = 20;
}
else if (i == 5) {
newCard.y = 240;
}
else if (i == 9) {
newCard.y = 460;
}
else if (i == 13) {
newCard.y = 680;
}
lastCard = 20;
} else if (i > 1 && i < 5) {
newCard.x = lastCard + 145;
newCard.y = 20;
lastCard = lastCard + 145;
} else if (i > 5 && i < 9) {
newCard.x = lastCard + 145;
newCard.y = 240;
lastCard = lastCard + 145;
} else if (i > 9 && i < 13) {
newCard.x = lastCard + 145;
newCard.y = 460;
lastCard = lastCard + 145;
} else {
newCard.x = lastCard + 145;
newCard.y = 680;
lastCard = lastCard + 145;
}
trace(newCard.name + " position is " + newCard.x + ", " + newCard.y);
}
}
public function decideCard(e:MouseEvent):void {
trace(this.name)
}
}
}
對此事的任何幫助深表appretiated!
@倫敦藥房,mediaservices太謝謝你了!我不得不稍微改變它,並用MovieClip替換DisplayObject,它完美的工作!
只是一個簡短的問題,而我在這裏,最終在decisionCard函數內,我將使用該名稱從數組中調用某些東西。如果我這樣做,將以同樣的方式工作? (例如if(MovieClip(e.currentTarget).name == card1)) – user1801301
@ user1801301 - 奇怪的是,name屬性是從DisplayObject繼承的,所以它應該可以工作,但無論如何...在判斷函數中回答你的問題該行會起作用(假設你在引號中使用「card1」,因爲它是你評估的字符串) – BadFeelingAboutThis
@ londondrugs-mediaservices真棒,非常感謝! – user1801301