Сколько может обнаружить Flash нажатых клавиш? использование as3

Этот супер скрыт, и только иногда полезный;-)

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

var o1 = { foo: 1, bar: 'abc' };
function f() {}
f.prototype = o1;
o2 = new f();
assert( o2.foo === 1 );
assert( o2.bar === 'abc' );
o2.foo = 2;
o2.baz = true;
assert( o2.foo === 2 );
// o1 is unchanged by assignment to o2
assert( o1.foo === 1 );
assert( o2.baz );

Это только покрывает 'простые' значения на o1. Если Вы изменяете массив или другой объект, то прототип больше не 'защищает' исходный объект. Остерегайтесь каждый раз, когда Вы имеете {} или [] в Определении класса / прототип.

5
задан Ricardo 1 December 2009 в 07:29
поделиться

3 ответа

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

4
ответ дан 14 December 2019 в 08:53
поделиться

Я бы порекомендовал использовать библиотеку Keypoll, вы можете найти ее здесь: http://code.google.com/p/bigroom/wiki/KeyPoll .

Что касается того, сколько клавиш вы можете удерживать, я не уверен, но попробуйте использовать ctrl, shift, как обычно, не учитываются в пределе (я не тестировал это во Flash / ActionScript).

1
ответ дан 14 December 2019 в 08:53
поделиться

Я считаю, что проблема также связана с аппаратной клавиатурой. Я сам тестировал код на своей клавиатуре, и я не могу одновременно нажать более 3 клавиш на клавиатуре без USB.

Теперь в вашем примере это не должно быть проблемой, потому что вам никогда не понадобится нажать более 3-х клавиш. Но будьте осторожны! Есть еще одно ограничение, которое, похоже, связано с аппаратной клавиатурой, и оно связано с близостью клавиш, которые вы нажимаете, друг с другом.

Например, при попытке вашего кода казалось, что я не могу получить KEY_UP, когда У меня было два других ключа KEYed_DOWN (то есть постоянно нажатых) рядом с тем, который я KEYing_UP (так что тот, для которого я хочу получить событие key_up). Поэтому я считаю, что ваш код работает только с клавишей со стрелкой влево. Ваши клавиши со стрелками вверх, вниз и вправо, вероятно, каким-то образом

2
ответ дан 14 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: