Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.08.2009, 09:39
mamtn вне форума Посмотреть профиль Отправить личное сообщение для mamtn Найти все сообщения от mamtn
  № 1  
Ответить с цитированием
mamtn

Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
По умолчанию событие смены кадров

Наверное для многих это просто, а мне вот не понятно.
В игре нужно управлять клипом с помощью клавиш.
В AS2 это было сделано так:
Код:
 
var scor:Number=3;
_root.onEnterFrame=function(){// Внутри этой функции основной код игры 

//------- Управление клипом Kl с помощью клавиатуры----------------------
		if (Key.isDown(Key.RIGHT)) {
		Kl._x += scor;
		
		} 
		if (Key.isDown(Key.UP)) {
				Kl._y -= scor;
		} 
	    if (Key.isDown(Key.DOWN)) {
			   Kl._y +=scor ;
	    }
	    if (Key.isDown(Key.LEFT)) {
			  Kl._x -=scor;
	    }

}
.
А в AS3 я это пытаюсь сделать так:
Код:
 
var scor:Number=3;
import flash.display.MovieClip;
	import flash.events.*;
stage.addEventListener(KeyboardEvent.KEY_DOWN,dvMovie);

function dvMovie(event:KeyboardEvent):void
{
	if (event.keyCode == Keyboard.RIGHT) 
    { 
       Kl.x+=scor;
    } 
 if (event.keyCode == Keyboard.LEFT) 
    { 
       Kl.x-=scor;
    } 
 if (event.keyCode == Keyboard.UP) 
    { 
       Kl.y-=scor;
    } 
  if (event.keyCode == Keyboard.DOWN) 
    { 
       Kl.y+=scor;
    } 
}
.

В общем-то оно и работает. Но тормозит- нажмешь клавишу а клип еще думает, двигаться или нет
Потом двигается – при нажатой клавише.
Я так понимаю, что надо еще как-то enterFrame подключить, но как?

Старый 05.08.2009, 09:50
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Событие нажатие клавиши генерируется не один раз, а с учётом автоповтора - сначала в момент нажатия, потом через паузу повторяется с определённой частотой.

Вам надо stage.addEventListener(Event.ENTER_FRAME,вызываемая функция);

Старый 07.08.2009, 18:16
mamtn вне форума Посмотреть профиль Отправить личное сообщение для mamtn Найти все сообщения от mamtn
  № 3  
Ответить с цитированием
mamtn

Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
По умолчанию продолжаю спрашивать

Спасибо за ответ.
Но вот в чем сложность – я совершенно не представляю, как это все собрать в кучку.
Если я правильно понимаю, событию смены кадров надо назначить функцию,
а внутри этой функции надо организовать прослушивание нажатия клавиш, и при наступлении события нажатия клавиш вызывать другую функцию, которая и будет двигать клип.
Попробовала так, клип скачет, как ненормальный…

Код:
 
  var scor:Number=3;
import flash.display.MovieClip;
import flash.events.*;
stage.addEventListener(Event.ENTER_FRAME,nagKlavish);

function nagKlavish(event:Event):void {// Не уверена, что правильно написать: event:Event
		stage.addEventListener(KeyboardEvent.KEY_DOWN,dvMovie);
		function dvMovie(event:KeyboardEvent):void {
		if (event.keyCode == Keyboard.RIGHT) {
			Kl.x+=scor;
		}
		if (event.keyCode == Keyboard.LEFT) {
			Kl.x-=scor;
		}
		if (event.keyCode == Keyboard.UP) {
			Kl.y-=scor;
		}
		if (event.keyCode == Keyboard.DOWN) {
			Kl.y+=scor;
		}
	}
		
}
.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:57.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.