Вход

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


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
//кодовое слово
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
Не работает так как вы смотрите это в 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 - это пять секунд разницы
Могут быть ошибки, но смысл должен быть понятен

Mnilionic
12.09.2008, 00:15
:)

var keyword = "medved";
var interval:Number;
var my_str:String = "";
function Clear(){
trace("clear")
my_str = "";
clearInterval(interval);
}

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
clearInterval(interval);
interval = setInterval(Clear, 5000);
my_str += String.fromCharCode(Key.getAscii());

if (my_str.lastIndexOf(keyword) == -1) {
trace(my_str);
} else {
trace("success");
Clear();
}
}
Key.addListener(keyListener);

Division
12.09.2008, 00:17
Хотя так наверно даже проще (:

ох не люблю я все эти интервалы (: