Форум 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=115777)

Prinz 10.09.2008 11:42

Как сделать, что бы выполнялось действие при наборе "кодового слова"
 
Подскажите, пожалуйста, как мне реализовать такое...

on (press, keyPress "1") {this.play();} - когда нажимаю клавишу "1" происходит выполнение действия

А как мне сделать так, что бы при вводе, скажем, слова "medved" происходил переход на заданный кадр?

crazyone 10.09.2008 12:44

Код:

//кодовое слово
var word="medved";
//переменная для хранения набранного текста
var typed="";
onKeyDown=function(){
        // преобразовываем код нажатой кнопки в букву и добавляем к переменной
        // способ приводит к тому, что слово не чуствительно к расскладке
        typed+=String.fromCharCode(Key.getAscii());
        // Обрезаем лишнее, чтобы не хранить все в памяти
        typed=typed.substr(-word.length);
        // проверяем, набрали ли нужное слово
        if(typed.indexOf(word)!=-1){
                trace("You had typed \"medved\"!");
        }
}
Key.addListener(this);

// вообще можно было бы обрезать по таймеру, или еще как-нибудь, но общий принцип понятен


qazwsx 10.09.2008 12:56

или по onChanged

Prinz 10.09.2008 14:10

Цитата:

Сообщение от crazyone (Сообщение 763476)
Код:

//кодовое слово
var word="medved";
//переменная для хранения набранного текста
var typed="";
onKeyDown=function(){
        // преобразовываем код нажатой кнопки в букву и добавляем к переменной
        // способ приводит к тому, что слово не чуствительно к расскладке
        typed+=String.fromCharCode(Key.getAscii());
        // Обрезаем лишнее, чтобы не хранить все в памяти
        typed=typed.substr(-word.length);
        // проверяем, набрали ли нужное слово
        if(typed.indexOf(word)!=-1){
                trace("You had typed \"medved\"!");
        }
}
Key.addListener(this);

// вообще можно было бы обрезать по таймеру, или еще как-нибудь, но общий принцип понятен


Сделал, но не получается... :wacko:

lexa2000lexa 10.09.2008 20:02

Не работает так как вы смотрите это в IDE есле же смотреть стандартным плеером то все работает, либо можно при просмотре в IDE поставить галку Disable Keybord Shortcuts в меню control.

crazyone 10.09.2008 20:11

Цитата:

или по onChanged
Это же не при вводе в поле, а куда угодно.

Цитата:

Сделал, но не получается...
Что вы сделали? Вставили этот код в кадр, запустили флешку и при наборе слова medved вам не трейсится "You had typed \"medved\"!"?

Не верю.

Prinz 10.09.2008 23:32

Цитата:

Сообщение от lexa2000lexa (Сообщение 763583)
Не работает так как вы смотрите это в IDE есле же смотреть стандартным плеером то все работает, либо можно при просмотре в IDE поставить галку Disable Keybord Shortcuts в меню control.


Если всталаяю вместо слова "medved" 123 всё прекрасно работает, а в случаи с буквами - нет...

Disable Keybord Shortcuts в меню control...облазил всё... не нашёл..
(у меня adobe flash cs3) :umnik2:

Wolsh 11.09.2008 00:17

Цитата:

Disable Keybord Shortcuts в меню control...облазил всё... не нашёл..
Это не в меню Флэш, а в меню плеера, который открывается при тестировании ролика)

Prinz 11.09.2008 16:10

А подскажите, пожалуйста, как можно обрезать по таймеру?
скажем в течении 5 сек, а иначе придётся набирать с начала.

Division 11.09.2008 17:36

Допустим завести ещё один массив со временем каждого нажатия. То есть предварительно завести переменную time_array и в onKeyDown дописать что-то вроде
Код:

time_array.push(getTimer());
Потом надо следить чтобы длина time_array не превышала длины секретного слова. Например, можно делать time_array.shift() если длина превысилась. Потом
заменить условие на что-то вроде

Код:

if(typed.indexOf(word)!=-1 && (time_array[time_array.length-1]-time_array[0] <= 5000))
5000 - это пять секунд разницы
Могут быть ошибки, но смысл должен быть понятен


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

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