我認爲問題可能是您正在嘗試使用MovieClip
而不是按鈕(Button
或SimpleButton
)。
我在我的圖書館創建一個按鈕,而不是影片剪輯做了一個簡單的測試,這和預期一樣:
// I have 4 buttons (button1, button2, etc) on the stage
for(var i:int = 1; i <= 4; i++)
{
var mc = getChildByName("button" + (i+1));
mc.tabIndex = i;
mc.addEventListener(MouseEvent.CLICK, onClicked);
}
function onClicked(e:MouseEvent):void
{
trace(e.currentTarget + " clicked");
}
stage.focus = stage;
我最初運行該測試MovieClip
情況下,雖然他們會表明選項卡是工作(黃色邊框出現),MouseEvent.CLICK
從未開火。一旦我切換到實際按鈕(在這種情況下爲SimpleButton
),它同時使用Enter鍵和Space鍵。
編輯:
要回答在評論中提出的問題,這是一個快速和骯髒的方式「轉換」影片剪輯到SimpleButtons在運行時:
// I have 4 MovieClips (button1, button2, etc) on the stage
for(var i:int = 1; i <= 4; i++)
{
var mc:MovieClip = getChildByName("button" + i) as MovieClip;
var button:SimpleButton = convertMovieClipToButton(mc);
button.tabIndex = i;
button.addEventListener(MouseEvent.CLICK, onClicked);
}
function convertMovieClipToButton(mc:MovieClip):SimpleButton
{
var className:Class = getDefinitionByName(getQualifiedClassName(mc)) as Class;
var button:SimpleButton = new SimpleButton(new className(), new className(), new className(), new className());
button.name = mc.name;
button.x = mc.x;
button.y = mc.y;
mc.parent.addChildAt(button, getChildIndex(mc));
mc.parent.removeChild(mc);
return button;
}
好極了,謝謝!有沒有辦法在運行時將MovieClip更改爲Buttons/SimpleButtons? – Tom