Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Работа с цифровой клавиатурой (http://www.flasher.ru/forum/showthread.php?t=113648)

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);

что скажеш?

etc 04.07.2008 23:51

ptornoltik, отредактируйте свой пост и оформите код тегами [code][/code].

aksios 05.07.2008 00:23

Для цифровой клавы будет как то так:
Код:

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 07.07.2008 13:44

Цитата:

Сообщение от crazyone (Сообщение 750553)
aksios, это ты так Key.isDown() пытаешься заменить? Зачем это?

Мне так больше нравиться.:)
Ваще то я привел работающий код, отвечающей решению задачи. Если ты можешь написать по другому, это будет короче и лучше - пиши.

ptornoltik 07.07.2008 14:01

Пробую ваши варианты!
СПАСИБО!!!!
не ожидал такого внимания к моему вопросу!
СПАСИБО ЕЩЕ РАЗ!!!

ptornoltik 07.07.2008 15:48

попробовал, немного не понял, еще тупой!) а если такой вариант:
при нажатии клавиши один раз загружаться клип ("...",1) при нажатии на эту же клавишу второй раз клип выгружаеться и так со всеми кнопками. Просто насколько я знаю в клаве микроконтроллер если нажать болше 3х клавиш блокируется. А мне надо чтобы было задействована вся цифровая клава. (к ней подключим внешние датчики через микроконтроллер а он в свою очередь будет посылать однократный импульс при включении датчика, и однократный импульс при выключении датчика)
просто програмно не могу решить задачу - нажал-отпустил, нажал-отпустил одну и туже клавишу.
помогите если можете!

aksios 07.07.2008 16:55

Не, больше 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);
        }
};


etc 07.07.2008 19:59

ptornoltik, а что такое switch или Array вы знаете? А зачем вам какие-то левые объекты для прослушивания событий клавиатуры?

aksios 07.07.2008 20:56

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

я же говорю я еще тупой! Помогите люди добрые! подкорректируйте, направьте на путь истины! Пажалуста!!!


Часовой пояс GMT +4, время: 23:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.