哪个是有效的:切换,如果还是功能?

时间:2010-10-28 14:22:27

标签: flex actionscript-3 actionscript air

我需要处理一个能够在没有高CPU负荷的情况下尽快响应的钢琴键,并在Flex应用程序中重复按键和释放虚拟钢琴。

呼叫功能是否有效或Switch?

示例:

switch(keyNote)
case 'c4': keypress.button=down;
case 'c4': keypress.button=down;
case 'c4': keypress.button=down;
case 'c4': keypress.button=down;
case 'c4': keypress.button=down;
case 'c4': keypress.button=down;

function () {
if (keyNote=='c4'){keypress.button=down}
if (keyNote=='c4'){keypress.button=down}
if (keyNote=='c4'){keypress.button=down}
if (keyNote=='c4'){keypress.button=down}
}

function c4_Key() {
keypress.button=down;
}

我也想知道是否有另一种方法使用dispatchevent按id调用按钮并设置按钮状态为按钮?

2 个答案:

答案 0 :(得分:4)

如果,if,if功能,请不要使用自己的if。编译器不喜欢选项(例如,如果可以是true或false) 我会创建一个字典对象,以便您可以获得如下响应:

var keyMap:Dictinary = new Dictionary()
//Here you would populate the dictionary with the diff. keys and values

//pseudo body of keyDown test funcion
keyMap[keyNote].keypress.down; 

或者您的示例代码试图做的事情:)

答案 1 :(得分:0)

好吧,如果你问一些OOP专家,最好的办法是避免像瘟疫这样的条件。 http://www.as3dp.com/2007/12/21/lets-get-rid-of-conditionals/

这个想法是每个条件都在一个单独的类中,它覆盖/扩展了可以进行切换的函数。

虽然我个人还没有在代码中消除条件的使用,但我确实试图在条件语句中使用这种方法。而且你真的可以用这种方式替换所有(只是约束)条件,有时好处不会超过进入它的工作,特别是如果你知道你不会扩展代码。