PDA

Просмотр полной версии : избавляемся от обработчика on


be_tween
15.09.2005, 05:27
доброго времени суток!
вот с какой проблемой столкнулся...
нужно, чтобы некой событие происходило при двух условиях: как при нажатии клавиши с клавиатуры, так и при нажатии нарисованной кнопки.
есои в варианте AS1 все решается очень просто:

on (press, keyPress "<напр. Space>") {
некое событие;
}

то в новом синтаксисе никак не могу это написать...
сначала пробовал просто:

if (Key.isDown(Key.SPACE)) {
_root.mc1.gotoAndPlay(2);
mc2.gotoAndPlay(4);
}

не работает...
порывшись по справочникам, наткнулся на методу addListener, через которую это решается, вот только не соображу, как ее правильно пользовать...
пробовал по образцу:

keyListener = new Object();
keyListener.onKeyDown = function() {
if (Key.getCode() == Key.SPACE) {
_root.mc1.gotoAndPlay(2);
mc2.gotoAndPlay(4);
}
};
глухо...
инстансы в порядке, эти вещи все проверял, заморочка определенно в коде.

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

be_tween
15.09.2005, 05:49
уф, отбой тревоги :)
немного мозгов и серфинга по сети и получаем в итоге:

userKey = new Object();
userKey.onKeyDown = function() {
if (Key.getCode() == Key.SPACE) {
_root.mc1.gotoAndPlay(2);
mc2.gotoAndPlay(4);
}
};
Key.addListener(userKey);


как я понимаю, короче тут не написать?
но все-таки есть в AS2 своя красивая логика...))