Я собираюсь сделать несколько предположений здесь. Из вашего примера, я так понимаю, вы хотите выполнять задачи на основе нажатий клавиш. XML, кажется, содержит какие-то предпочтения, хотите ли вы включить или отключить определенные ключи. У вас есть два определенных ключа, shift и control, и один подстановочный ключ, основанный на коде ключа. Если эти предположения верны, вы сможете сократить время, комбинируя тест предпочтений и фактический ключевой тест в одной строке.
var shiftIsDown:Boolean = x.@shift.length() ? KeyManager.keyIsDown( KeyManager [ x.@shift.toString().toUpperCase() ] ) : false;
var controlIsDown:Boolean = x.@control.length() ? KeyManager.keyIsDown( KeyManager [ x.@control.toString().toUpperCase() ] ) : false;
var customIsDown:Boolean = x.@code.length() ? KeyManager.keyIsDown( KeyManager [ x.@code.toString().toUpperCase() ] ) : false;
Я думаю, что строки KeyManager немного странные. Я не знаю о KeyManager ни в Flex, ни в обычном AS3, так что это за пользовательский код? Если это так, вы можете поместить туда код ключа верхнего регистра, сопоставив его с помощью метода customKeyIsDown()
, вместо того, чтобы делать все это здесь. В любом случае Shift и Control исправлены, поэтому нет необходимости в обратном сопоставлении значения XML, верно?
var shiftIsDown:Boolean = x.@shift.length() ? KeyManager.keyIsDown( KeyManager.SHIFT ) : false;
var controlIsDown:Boolean = x.@control.length() ? KeyManager.keyIsDown( KeyManager.CONTROL ) : false;
var customIsDown:Boolean = x.@code.length() ? KeyManager.customKeyIsDown( x.@code ) : false;
Я думаю, что это уже немного яснее, но опять же, я не знаю, что именно делает KeyManager. После этого у вас все еще есть три переменные, и все они необязательны. Если все они должны быть эксклюзивными, у вас будет 8 возможных результатов.
if ( shiftIsDown && controlIsDown && customIsDown ) {
// 1
} else if ( shiftIsDown && controlIsDown ) {
// 2
} else if ( shiftIsDown && customIsDown ) {
// 3
} else if ( shiftIsDown ) {
// 4
} else if ( controlIsDown && customIsDown ) {
// 5
} else if ( controlIsDown ) {
// 6
} else if ( customIsDown ) {
// 7
} else {
// 8
}
Если то, что вы делаете на основе ключей, не является эксклюзивным, вы можете вернуться к выполнению трех задач на основе ключей
if ( shiftIsDown ) {
// 1
}
if ( controlIsDown ) {
// 2
}
if ( customIsDown ) {
// 3
}
Это помогает?
Ура,
EP.