Просмотр полной версии : Работа с цифровой клавиатурой
ptornoltik
04.07.2008, 18:07
ситуация такая: пишу приложение которое работает с цифровой клавиатурой(там где Num Lock), возникла такая проблема - при нажатии на клавишу открывается определенный слайд с одной картинкой, это я разобрался! А вот если одновременно зажато две клавиши и более надо чтобы высвечивался слайд на котором две картинки и более. Как это сделать?
DimensionB
04.07.2008, 18:17
У тебя проблема с тем чтобы ввобще две любые нажатые клавиши отловить или только две на цифровой клавиатуре?
ptornoltik
04.07.2008, 18:37
две любые, с цифровой мне кажеться будет аналогично!
crazyone
04.07.2008, 19:48
Проще всего, я думаю, будет использовать isDown (Key.isDown method) в каком-нибудь обработчике. Если нажата - показывать, если не нажата - не показывать.
ptornoltik
04.07.2008, 19:52
Вариант! А если две нажатые?
crazyone
04.07.2008, 19:55
Для каждой кнопки проверять, я имел ввиду.
В таком духе:
clips=new Array();
clips[61]=first_mc;
clips[52]=second_mc;
onEnterFrame=function(){
for(var i in clips){
if(Key.isDown(i)){
clips[i]._visible=true;
}else{
clips[i]._visible=false;
}
}
}
ptornoltik
04.07.2008, 20:00
а этот вариант?
var o = {};
o.onKeyDown = function(){
if(Key.isDown(17)){
if(Key.isDown(32)){
trace("Вы нажали Ctrl + Spacebar");
}
}
}
Key.addListener(o);
что скажеш?
ptornoltik, отредактируйте свой пост и оформите код тегами .
Для цифровой клавы будет как то так:
var key,pushed:Number;
var ekey:String;
var keys:Array = Array();
var keyListener:Object = new Object();
for (var i = 0; i<10; i++) {
keys[i]=0;}
keyListener.onKeyDown = function()
{
key=Key.getCode();
keys[key-48]=key;
}
keyListener.onKeyUp = function()
{
key=Key.getCode();
keys[key-48]=0;
}
Key.addListener(keyListener);
function update():Void {
ekey=keys.join();
if (ekey<>"0,0,0,0,0,0,0,0,0,0"){
trace (ekey);//Тут код для всех возможных сочетаний кнопок (ну которые зарезервированы)
for (var i = 0; i<10; i++) {
keys[i]=0;}
}}
var intervalID:Number = setInterval(update, 100);
- Сложность в том, что кнопки могут нажиматься по одной и парами и даже по несколько штук, могут опускаться в любой последовательности... поентому такой кодик.
crazyone
07.07.2008, 13:33
а этот вариант?
var o = {};
o.onKeyDown = function(){
if(Key.isDown(17)){
if(Key.isDown(32)){
trace("Вы нажали Ctrl + Spacebar");
}
}
}
Key.addListener(o);
что скажеш?
Он нормальный, но ведь не под твою задачу.
aksios, это ты так Key.isDown() пытаешься заменить? Зачем это?
aksios, это ты так Key.isDown() пытаешься заменить? Зачем это?
Мне так больше нравиться.:)
Ваще то я привел работающий код, отвечающей решению задачи. Если ты можешь написать по другому, это будет короче и лучше - пиши.
ptornoltik
07.07.2008, 14:01
Пробую ваши варианты!
СПАСИБО!!!!
не ожидал такого внимания к моему вопросу!
СПАСИБО ЕЩЕ РАЗ!!!
ptornoltik
07.07.2008, 15:48
попробовал, немного не понял, еще тупой!) а если такой вариант:
при нажатии клавиши один раз загружаться клип ("...",1) при нажатии на эту же клавишу второй раз клип выгружаеться и так со всеми кнопками. Просто насколько я знаю в клаве микроконтроллер если нажать болше 3х клавиш блокируется. А мне надо чтобы было задействована вся цифровая клава. (к ней подключим внешние датчики через микроконтроллер а он в свою очередь будет посылать однократный импульс при включении датчика, и однократный импульс при выключении датчика)
просто програмно не могу решить задачу - нажал-отпустил, нажал-отпустил одну и туже клавишу.
помогите если можете!
Не, больше 3х кнопок одновременно не пройдет. Не больше 3х нажатых одновременно - это железо так работает.
ЗЫ: Если кто не понял, в мой пример для маковской клавы, для ПиСи нужно вместо 48 поставить 96.
ptornoltik
07.07.2008, 19:54
вот чтото накалякал, вроде работает, правда не совсем коректно. Если можите подкоректируйте!!!
stop();
var o = {};
o.onKeyDown = function() {
if (Key.isDown(96)) {
loadMovie("bak.swf", 1);
}
};
Key.addListener(o);
o.onKeyUp = function():Void {
if (Key.isToggled(96)) {
unloadMovieNum(1);
}
};
var b = {};
b.onKeyDown = function() {
if (Key.isDown(97)) {
loadMovie("water.swf", 2);
}
};
Key.addListener(b);
b.onKeyUp = function():Void {
if (Key.isToggled(97)) {
unloadMovieNum(2);
}
};
var c = {};
c.onKeyDown = function() {
if (Key.isDown(98)) {
loadMovie("bat.swf", 3);
}
};
Key.addListener(c);
c.onKeyUp = function():Void {
if (Key.isToggled(98)) {
unloadMovieNum(3);
}
};
var d = {};
d.onKeyDown = function() {
if (Key.isDown(99)) {
loadMovie("oil.swf", 4);
}
};
Key.addListener(d);
d.onKeyUp = function():Void {
if (Key.isToggled(99)) {
unloadMovieNum(4);
}
};
var e = {};
e.onKeyDown = function() {
if (Key.isDown(100)) {
loadMovie("parking.swf", 5);
}
};
Key.addListener(e);
e.onKeyUp = function():Void {
if (Key.isToggled(100)) {
unloadMovieNum(5);
}
};
var f = {};
f.onKeyDown = function() {
if (Key.isDown(101)) {
loadMovie("stop.swf", 6);
}
};
Key.addListener(f);
f.onKeyUp = function():Void {
if (Key.isToggled(101)) {
unloadMovieNum(6);
}
};
var g = {};
g.onKeyDown = function() {
if (Key.isDown(102)) {
loadMovie("avar.swf", 7);
}
};
Key.addListener(g);
g.onKeyUp = function():Void {
if (Key.isToggled(102)) {
unloadMovieNum(7);
}
};
var h = {};
h.onKeyDown = function() {
if (Key.isDown(103)) {
loadMovie("gabar.swf", 8);
}
};
Key.addListener(h);
h.onKeyUp = function():Void {
if (Key.isToggled(103)) {
unloadMovieNum(8);
}
};
var j = {};
j.onKeyDown = function() {
if (Key.isDown(104)) {
loadMovie("povorot.swf", 9);
}
};
Key.addListener(j);
j.onKeyUp = function():Void {
if (Key.isToggled(104)) {
unloadMovieNum(9);
}
};
var k = {};
k.onKeyDown = function() {
if (Key.isDown(105)) {
loadMovie("svet.swf", 10);
}
};
Key.addListener(k);
k.onKeyUp = function():Void {
if (Key.isToggled(105)) {
unloadMovieNum(10);
}
};
var l = {};
l.onKeyDown = function() {
if (Key.isDown(106)) {
loadMovie("zad.swf", 11);
}
};
Key.addListener(l);
l.onKeyUp = function():Void {
if (Key.isToggled(106)) {
unloadMovieNum(11);
}
};
var m = {};
m.onKeyDown = function() {
if (Key.isDown(107)) {
loadMovie("podsos.swf", 12);
}
};
Key.addListener(m);
m.onKeyUp = function():Void {
if (Key.isToggled(107)) {
unloadMovieNum(12);
}
};
var n = {};
n.onKeyDown = function() {
if (Key.isDown(109)) {
loadMovie("galogen.swf", 13);
}
};
Key.addListener(n);
n.onKeyUp = function():Void {
if (Key.isToggled(109)) {
unloadMovieNum(13);
}
};
var p = {};
p.onKeyDown = function() {
if (Key.isDown(110)) {
loadMovie("dal.swf", 14);
}
};
Key.addListener(p);
p.onKeyUp = function():Void {
if (Key.isToggled(110)) {
unloadMovieNum(14);
}
};
ptornoltik, а что такое switch или Array вы знаете? А зачем вам какие-то левые объекты для прослушивания событий клавиатуры?
ptornoltik, я конешно не знаю логику, под которую вы написали...
Без коментов, это генератор шума. Не ну может так и надо согласно условиям задачи? Просто если нажать одну кнопку, будет удалено 3 клипа, которых еще и нету. Вот трейс чего выводит:
загруз 101
загруз 100
загруз 101
выгруз 100
выгруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 100
выгруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 100
выгруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 102
выгруз 104
загруз 101
загруз 100
загруз 101
выгруз 100
выгруз 101
выгруз 102
выгруз 104
загруз 103
выгруз 100
выгруз 101
выгруз 102
выгруз 103
выгруз 104
загруз 104
выгруз 100
выгруз 101
выгруз 102
выгруз 103
загруз 105
выгруз 100
выгруз 101
выгруз 102
выгруз 103
выгруз 105
загруз 100
выгруз 101
выгруз 102
выгруз 103
выгруз 105
загруз 101
выгруз 102
выгруз 103
выгруз 105
загруз 102
выгруз 103
выгруз 105
загруз 103
выгруз 105
загруз 104
выгруз 104
выгруз 105
загруз 105
выгруз 104
- Загруз обозначает load... выгруз unload из вашего кода.
ptornoltik
08.07.2008, 13:45
я же говорю я еще тупой! Помогите люди добрые! подкорректируйте, направьте на путь истины! Пажалуста!!!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.