Форум 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)
-   -   ни как не могу отловить нажатие клавиши через addEventListener... (http://www.flasher.ru/forum/showthread.php?t=101589)

_bioscorpio_ 22.09.2007 16:51

ни как не могу отловить нажатие клавиши через addEventListener...
 
Всем привет!

Хочу отловить нажитие клавиш и чтоб оно отображалось в trace. В хелпе вичитал вот такую штуку
Код:

var my_ti:mx.controls.TextInput;
// Create listener object.
var tiListener:Object = new Object();
tiListener.handleEvent = function(evt_obj:Object) {
        if (evt_obj.type == "Enter") {
                if (my_ti.length<8) {
                        trace("You must enter at least 8 characters");
                } else {
                        trace("Thanks");
                }
        }
};
// Add listener.
my_ti.addEventListener("Enter", tiListener);

но она работает по нажатию клавиши Enter тока..., а как сделать так чтоб она отлаливала нажитие клавиш...

Код:

var tiListener:Object = new Object();
tiListener.handleEvent = function(evt_obj:Object) {
        if (evt_obj.type == что сюда нужно вписать?!) {
                trace(my_ti)
        }
};
// Add listener.
my_ti.addEventListener(что сюда нужно вписать?!, tiListener);


divinus 22.09.2007 16:57

попробуй вот так:
Код:

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
    trace("DOWN -> Code: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()));
};
keyListener.onKeyUp = function() {
    trace("UP -> Code: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()));
};
Key.addListener(keyListener);


etc 22.09.2007 17:24

http://livedocs.adobe.com/flash/9.0/main/00003532.html

_bioscorpio_ 22.09.2007 20:09

2 divinus, да работает. спасибо. Ток я дундук и описал не то что хотел узнать ))) как это поймать в инпут текст? наверно проще объяснить чего я хочу в интоге.

есть флешка, в ней инпут текст(asd) другой динамик(dsa). так вот, в asd я ввожу букву, "А" и хочу чтоб она отображалась в dsa тексте "А"... и так дальше, т.е. в одной воожу, в другой появляется вот =) но при этом и в asd и в dsa текст одинаковый =) блин )))))) запутался... надеюсь хоть как-то бъяснил )))

2 __ect, у меня не открывает страницу... =) может просто скинушь от туда информацию?

etc 22.09.2007 20:15

В хелпе эта информация есть.

_bioscorpio_ 22.09.2007 20:24

Код:

var tiListener:Object = new Object();
tiListener.onKeyDown = function() {
        trace(my_ti);
};
// Add listener.
Key.addListener(tiListener);

2 divinus, спасибо! все прекрасно работает, туплю! =)))

etc 22.09.2007 23:30

Все-таки упорно у нас нежелают читать хелп.

Wolsh 23.09.2007 00:31

Да уж, следить за клавиатурой, чтобы узнать, какой текст ввели в инпут...
Нафига же тогда инпут, для красоты, чтоли...
Код:

asd.onChanged = function(){
        dsa.text = asd.text
}

Фантастика, правда?

etc 23.09.2007 11:47

Открою секрет из хелпа: помимо события enter есть ещё change.

Mr. Fixit 23.09.2007 18:33

лол...
2 афтор: поиском пользоваться не пробовали?
недавно подобная тема открывалась..

divinus 24.09.2007 11:32

__etc, у нас ведь документацию только "ламеры" читают ;)

Sanitarium_MX 25.12.2008 15:28

Добрый день, я прочитал пару тем, пользовался поиском, но не наешл то что нужно... в принципе, что то с кодом
Код AS1/AS2:

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
    trace("DOWN -> Code: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()));
};
keyListener.onKeyUp = function() {
    trace("UP -> Code: "+Key.getCode()+"\tASCII: "+Key.getAscii()+"\tKey: "+chr(Key.getAscii()));
};
Key.addListener(keyListener);

Но мне надо код вставить в страничку на которой есть поле ввода, и чтобы при наборе с клавиатуры флешка реагировала на нажатие клавиш звуком (как у печатной машинки) это реально сделать? помогите пожалуйста

dimarik 25.12.2008 18:08

Код AS1/AS2:

var textField        :TextField;
var sound        :Sound = new Sound();
// where "typewritter" is library's linkage name of sound
sound.attachSound("typewritter");
 
textField.onChanged = function(value:TextField):Void {
        sound.stop();
        sound.start();
}


Sanitarium_MX 25.12.2008 18:43

Продолжаем допрос =)

После редактирования у меня получился такой код:
Код AS1/AS2:

var textField        :TextField;
var sound        :Sound = new Sound();
// where "typewritter" is library's linkage name of sound
sound.attachSound("http://мой сайт/папка_со_звуками/звук.mp3");
 
textField.onChanged = function(value : TextField):Void {
        sound.stop();
        sound.start();
}

Далее, создал для тестирования html страничку с полем ввода:
Код:

<body>
<input type="text" name="textfield" id="textfield" />
</body>

Вставил в страничку получившийся файл со скриптом:
Код:

<body>
<input type="text" name="textfield" id="textfield" />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="47" height="23">
  <param name="movie" value="file:///C|/Documents and Settings/Роман.AMD/Рабочий стол/1.swf" />
  <param name="quality" value="high" />
  <embed src="file:///C|/Documents and Settings/Роман.AMD/Рабочий стол/1.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="47" height="23"></embed>
</object>
</body>

И... и ничего не сработало ((( Где я ошибся?
textfield в скрипте и в html страничке совпадают...
Не понимаю я...

народ, ответьте пожалуйста что же делать мне!!! жду, жду.... а никто не отвечает ((

Wolsh 29.12.2008 00:28

Цитата:

а никто не отвечает ((
Видите ли, Ваш вопрос не имеет никакого отношения к ловле нажатий клавиш во флэше. Соответственно люди, зашедшие сюда "по теме", в недоумении уходят. Вам стоило создать новую тему.
Скажите, а какую связь Вы вообразили между текстфилдом во флэшке и полем ввода хтмл-формы на странице? Что Вы подразумеваете под "совпадают"? И какова всё-же конечная цель этих экспериментов - чтобы при вводе символа в поле хтмл-формы на хтмл-странице пикала флэшка? Вы знаете, что такое "фокус"? Почему, когда Вы пишите другу сообщение в аське, у Вас этот же текст не печатается в открытом Ворде? Невозможно, чтобы флэшка ловила нажатия ВМЕСТЕ с полем ввода хтмл-формы. Уж или одно, или другое. Но я думаю, с помощью джаваскрипта можно ловить изменения текста в хтмл-поле и вызывать функцию во флэшке, проигрывающую звук.

Zik. 29.12.2008 00:38

В нашем мире люди не хотят сами вникать и понимать, им надо, чтобы другие разжевали....

Sanitarium_MX 29.12.2008 01:05

Цитата:

Сообщение от Wolsh (Сообщение 787075)
Скажите, а какую связь Вы вообразили между текстфилдом во флэшке и полем ввода хтмл-формы на странице? Что Вы подразумеваете под "совпадают"?

Совпадают - значит что имя переменной во флешке совпадает с именем поля в хтмл странице, я же не знал что тот код который мне дали не тот, который мне нужен.
Цитата:

Сообщение от Wolsh (Сообщение 787075)
конечная цель этих экспериментов - чтобы при вводе символа в поле хтмл-формы на хтмл-странице пикала флэшка?

именно так.
Цитата:

Сообщение от Wolsh (Сообщение 787075)
Вы знаете, что такое "фокус"?

В actionscript'е не знаю, разъясните, если не сложно
Цитата:

Сообщение от Wolsh (Сообщение 787075)
Почему, когда Вы пишите другу сообщение в аське, у Вас этот же текст не печатается в открытом Ворде?

Потому что мне это пока не нужно, а если будет нужно, я напишу прогу на паскале, который я знаю, в отличии от явы, экшнскрипта и прочих...
Цитата:

Сообщение от Wolsh (Сообщение 787075)
Невозможно, чтобы флэшка ловила нажатия ВМЕСТЕ с полем ввода хтмл-формы. Уж или одно, или другое. Но я думаю, с помощью джаваскрипта можно ловить изменения текста в хтмл-поле и вызывать функцию во флэшке, проигрывающую звук.

Вот то что мне нужно было знать, спасибо, буду искать в яве...

Добавлено через 3 минуты
Цитата:

Сообщение от ZIK68 (Сообщение 787077)
В нашем мире люди не хотят сами вникать и понимать, им надо, чтобы другие разжевали....

Опираясь на суть вашего ответа, нужно закрыть все форумы, потому что они в принципе не нужны т.к. никто тебе все равно "разжевывать" не станет то что ты не понимаешь. Давайте перестанем делиться знаниями, и будет только понтовать и кидаться своими рангами вместо того чтобы просто объяснить.


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

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