PDA

Просмотр полной версии : набор слога на клаве


lukish
25.10.2007, 19:50
Здравствуйте уважаемые флешеры.
Мне необходимо выполнить следующую задачу:
В ходе проигрования клипа на клавиатуре необходимо набрать слог (допустим) "ВА", после этого происходят следующие действия.
Я написал следующий конструктор:
onClipEvent (enterFrame) {
if (Key.isDown(68)) {
if (Key.isDown(70)) {
trace(1);
}
}
}
Он работает не так как надо:
Срабатывает когда нажата первая и паралельно нажата вторая.
А как сделать чтобы при последовательном нажатии происходило действие?

ALiEN_
25.10.2007, 20:17
Ну сделай массив из двух элементов, в который ты будешь заносить нажатые клавиши, и проверять на то что тебе необходимо. =)

lukish
25.10.2007, 21:12
А можо по подробнее, я не совсем понял.

_ViPeR_
25.10.2007, 21:30
var Arr:Array = new Array();
var i:Number = 0;
var Succes:Boolean = false;
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
i += 1;
if (i>2) {
i = 1;
}
Arr[i] = Key.getCode();
};
Key.addListener(keyListener);
_root.onEnterFrame = function():Void {
if (Arr[1] == 68 && Arr[2] == 70) {
trace("Succes");
}
};

Я думаю труда не составит избавиться от проблемы неправльно нажатого первого символа

ALiEN_
25.10.2007, 22:37
Немного подлатал код _ViPeR_`a:



var arr:Array = new Array ( null, null ); // заполним массив пустыми элементами
var keyListener:Object = new Object ();

keyListener.onKeyDown = function ()
{
arr.shift (); // выкидываем первый элемент массива
arr.push ( Key.getCode () ); // добавляем в конец второй

if (arr [0] == 68 && arr [1] == 70)
{
trace ( "Succes : " + arr );
}

};
Key.addListener(keyListener);

aksios
25.10.2007, 22:54
сделай массив из двух элементов
Пришельцы высосали мой мозг!:wacko:

D12
25.10.2007, 23:57
Можно и так =)
var total:Number = 0;
var Go:Number = 0;
var a:Number = 0;
var b:Number = 0;
///
onEnterFrame = function () {
if (Key.isDown(68)) {
a = 2;
Go = 1;
}
if (Key.isDown(70) && Go == 1) {
b = 4;
}
total = a+b;
if (total == 6) {
Go = 0;
trace(1);
}
};

Всё просто сумма из чисел 2,4,8,16,32,64,128 и т.д неповторяется :) и этим можно воспользоватся =)

udaaff
26.10.2007, 00:59
var s:String = " ";
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
s += String.fromCharCode((Key.getAscii()));
s = s.substr(1, 2);
trace(s);
};
Key.addListener(keyListener);

aksios
26.10.2007, 11:36
2udaaff:victory: