![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Проблема в следующем:
в переменную записываю выражение, но при попытке проверить условие, заданное этим выражением, проверяется наличие переменной (см. код). Как поступить? kk_=new Array(Key.CONTROL,Key.ENTER,Key.SHIFT)//например
if(kk_[2]){usl="Key.isDown("+kk_[0]+")&& Key.isDown("+kk_[1]+")&&Key.isDown("+kk_[2]+")";)
}
else if(kk_[1])usl="Key.isDown("+kk_[0]*1+")&&Key.isDown("+kk_[1]*1+")";
else usl="Key.isDown("+kk_[0]*1+")";
Key.addListener(ls={});
ls.onKeyDown = function() {
//*****************
if(usl)trace(usl) // Проверяет наличие переменной, но не отрабатывает usl
//*******************
if (Key.isDown(Key.CONTROL)&&Key.isDown(Key.ENTER)&&Key.isDown(Key.SHIFT)){trace("123")} // срабатывает
//*******************
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Перепишите код так, чтобы он был понятен.
И вообще, я не понимаю, чем не угодило: isDown = Key.isDown(keyArray[0]) && Key.isDown(keyArray[1]) && … Более того, данное решение нерационально. Хотя бы потому что длина массива должна быть фиксирована. Резюме: переписать. Последний раз редактировалось etc; 21.09.2006 в 13:14. |
|
|||||
kk_=new Array(Key.CONTROL,Key.ENTER,Key.SHIFT) //массив в котором хранятся названия клавиш
if(kk_[2]){usl="Key.isDown("+kk_[0]+")&& Key.isDown("+kk_[1]+")&&Key.isDown("+kk_[2]+")"; //если в массиве 3 элемента создаем выражение для обработки 3-х клавиш и присваиваем переменной usl
}
else if(kk_[1])usl="Key.isDown("+kk_[0]*1+")&&Key.isDown("+kk_[1]*1+")"; //если в массиве 2 элемента создаем выражение для обработки 2-х клавиш и присваиваем переменной usl
else usl="Key.isDown("+kk_[0]*1+")";//если в массиве 1 элемент создаем выражение для обработки 1-ой клавиши и присваиваем переменной usl
Key.addListener(ls={}); //инициализируем листнер
ls.onKeyDown = function() {//функция при нажатии клавиши
if(usl)trace(usl) // необходимо чтобы работало, в реале проверяет наличие переменной usl и при нажатии любой клавиши выводит содержимое этой переменной
if (Key.isDown(Key.CONTROL)&&Key.isDown(Key.ENTER)&&Key.isDown(Key.SHIFT)){trace("123") //собственно работает как надо
}
}
![]() Как этого добиться? |
|
|||||
|
вроде то же, что и у меня, только короче
массив, который я привел - элемент другого массива, элементы которого хранят от 1 до 3 клавиш. Я для простоты не стал приводить весь код. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Твоё «usl» является обычной строкой, а не булевым выражением. Смотри в сторону eval, но лучше вообще переписать нормально. |
|
|||||
|
а разве isDown является булевым выражением?
вроде без Key - это то же что и моя usl |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
тем не менее вопрос остался открытым. А хелп я читал. И выражение, которое Вы написали работает не лучше моего с usl
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Всё. Дальше разбирайтесь сами. |
|
|||||
|
ок. Спасибо.
Последний раз редактировалось admGT; 21.09.2006 в 15:27. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|