我正在尝试创建一个脚本,为数组中的每个对象添加一个事件侦听器,并在该事件侦听器触发时,我希望它添加与该键相关联的字母以输入到标签上。但是当我运行程序时没有任何反应?我可以添加一些虚拟代码,如lblInput.text =“cats”;它运行正常,所以程序肯定在运行脚本。
编辑:事实证明按钮点击实际上并不起作用,为什么我看不出它有什么问题而且没有错误?
这是我的代码:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Main extends MovieClip {
public function Main() {
this.addEventListener('enterFrame',function() {
var buttons:Array = new Array(["Q",btnQ],
["W",btnW],
["E",btnE],
["R",btnR],
["T",btnT],
["U",btnY],
["U",btnU],
["I",btnI],
["O",btnO],
["P",btnP],
["A",btnA],
["S",btnS],
["D",btnD],
["F",btnF],
["G",btnG],
["H",btnH],
["J",btnJ],
["K",btnK],
["L",btnL],
["Z",btnZ],
["X",btnX],
["C",btnC],
["V",btnV],
["B",btnB],
["N",btnN],
["M",btnM]);
for(var i:int = 0; i < buttons.length; i++)
{
buttons[i][1].addEventListener(MouseEvent.CLICK,function(){
if(lblInput.text == "Type something to begin..")
lblInput.text = buttons[i][0];
else
lblInput.appendText(buttons[i][0]);
});
}
});
}
}
}
答案 0 :(得分:0)
如putvande所述,i
变量的值不是您在事件处理程序中所期望的值。因此,最简单的方法是将变量作为按钮的属性,然后可以从处理程序中的事件对象中检索该属性。你说你的按钮是动画片段,因此它们可以很好地工作,因为它们是对象的扩展。
但是看到你想要一个字符范围,你可以没有数组,只需指定一个范围。特别是因为你给了所有按钮一个通用名称加上所需的字符。
在Main
函数中:
// 65 = capital A in Unicode
// 90 = capital Z in Unicode
var characterRange:Object = {begin:65, end:90};
var character:String;
var button:MovieClip;
for ( var i:int = 0; i < characterRange.end-characterRange.begin; ++i ) {
// use String.fromCharCode to get "A" from 65 etc.
character = String.fromCharCode(i + characterRange.begin);
// get the button based on the character
button = MovieClip(this.getChildByName("btn"+character));
// add the character as a property of the button
button.character = character;
// attach an click handler
button.addEventListener(MouseEvent.CLICK, buttonClick);
}
作为事件处理函数:
function buttonClick(e:MouseEvent):void {
// get the character/letter from the currently clicked button
var letter:String = MovieClip(e.currentTarget).character;
if ( lblInput.text == "Type something to begin..") {
lblInput.text = letter;
} else {
lblInput.appendText(letter);
}
}
字符代码示例:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7efe.html