Я очень начинающий, когда дело доходит до программирования; Я делаю флэш-игру для своего класса 2D-игр на Adobe Animator, и у меня возникли сомнения по поводу кода, который мой преподаватель не мог ответить сам. Короче говоря, я хочу, чтобы скорость персонажа увеличивалась в зависимости от того, как долго была нажата клавиша, поэтому я придумал следующее:
spdX = spdX + aclMov*(tempo) - aclFrc*(tempo);
Где переменная темп будет увеличиваться, пока нажата клавиша, и я бы проверил, если это с KeyboardEvent.repeat, как в:
if(heldDown){while(heldDown){tempo += 1}}
else{tempo = 0}
spdX = spdX + aclMov*(tempo) - aclFrc*(tempo);
Однако, когда я пытаюсь это сделать, вывод выдает « Повтор свойства не найден на flash.events.KeyboardEvent, и по умолчанию значение отсутствует». Я предполагаю, что это потому, что KeyboardEvent.repeat не определен в среде, которую я использую. Могу ли я в любом случае воспроизвести тот же эффект KeyboardEvent.repeat, возможно, создав функцию, которая имитирует то, что она сделала бы?
Заранее спасибо.
(правка 1)
Я начинаю извиняться за свою нехватку разъяснений, а также за свое невежество в этой теме, поскольку я едва начинающий, когда дело доходит до as3, и еще не представлен должным образом во многих терминах, которые я прочитал.
Итак, благодаря содержательным комментариям, я уже получил представление о том, какой обходной путь мне нужно будет сделать, чтобы заменить KeyboardEvent.repeat. Есть и другие части кода, имеющие отношение к проблеме, а также:
stage.addEventListener(KeyboardEvent.KEY_DOWN,pressKey)
function pressKey (Event){
(...)
if(Event.keyCode == (Keyboard.A)) {left = true;}
(...)
}
stage.addEventListener(KeyboardEvent.KEY_UP,releaseKey)
function releaseKey (Event){
(...)
if(Event.keyCode == (Keyboard.A)) {left = false;}
(...)
}
Вот как код был предназначен для использования. Было предложено использовать метод getTimer () для записи момента, когда событие KEY_DOWN останавливается, когда вступает в силу KEY_UP . Проблема в том, как я могу увеличить код, чтобы он различал эти два события, а точнее, , как я могу адаптировать событие ENTER_FRAME , чтобы дифференцирование между ними все еще работало с ним? Вот, кстати, самые важные его части:
addEventListener(Event.ENTER_FRAME,walk);
function walk(Event) {
if(left) {
(...)
char.x -= spdX;
(...)
}
Я предполагаю, что код работал до сих пор, потому что, поскольку состояние «left» постоянно переключалось между «true» и «false», условное условие if неоднократно встречалось, что приводило к перемещению символа , Однако, если я попытаюсь сделать так, чтобы условие зависело от того, что «left» остается «true» в течение определенного времени, код становится несовместимым с самим собой.
Короче говоря, это ставит вопрос о том, как адаптировать прослушиватели событий "KEY_ []" и функцию "ходьбы" для работы при использовании метода getTimer () для совместной работы.
Еще раз спасибо заранее.