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

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

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
По умолчанию Не срабатывает addEventListener

всем хеллоу!

Есть у меня класс Craft :
Код AS3:
package classes
{
 
	import flash.display.MovieClip;
	import flash.events.*;
	import classes.assisted.keyPressed;
 
	public class Craft extends MovieClip
	{
		var kp = new keyPressed();
 
		public function Craft():void
		{
			trace("class craft called");	
			addEventListener(Event.ENTER_FRAME, ef);						
		}
 
		public function ef(e:Event)
		{			
		    kp.keyP(this);		
		}
	}
}
и есть у меня другой класс keyPressed

Код AS3:
package classes.assisted
{
	import flash.events.*;
 
	public class keyPressed
	{		
		public function keyPressed():void
		{
			trace("class keyPressed called");				
		}
 
		public function keyP(obj):void
		{
			obj.addEventListener(KeyboardEvent.KEY_DOWN, kd);	
			obj.y-=1;
		}
 
		public function kd(event:KeyboardEvent)
		{
			trace("^_^");
			//trace(event.keyCode);
		}
	}
}
и после компиляции компилятор пишет "class keyPressed called", а как бы я по клавишам не стучал, то "^_^" некак не хочет написаться, хотя объект я явно передал классу, тк он медленно но верно ползет вверх
Почему такая несправедливость в мире?
Неужто мне прийдеться передовать не только сам объект, но и коды нажатых клавишь?

Старый 16.01.2010, 17:14
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
1. Названия классов с прописной.
2. super() первой строчкой в конструкторе.
3. Вы каждый кадр вызываете addEventListener() - зачем?
4. переменные, аргументы и возвращаемый тип функций должны быть типизированы.
5. визуальные объекты диспатчат события клавиатуры только когда они в фокусе (например, если вы нажали клавишу Tab чтобы на них перевести фокус), иначе события клавиатуре диспатчатся из stage.
6. Не пишите звездочки в импортах - используйте нормальный редактор кода, где импорты подставляются сами.
__________________
Hell is the possibility of sanity

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
Цитата:
Сообщение от wvxvw Посмотреть сообщение
2. super() первой строчкой в конструкторе.
если чесно не очень понял зачем это, мой класс вдеь нечего не расширяет

Цитата:
Сообщение от wvxvw Посмотреть сообщение
3. Вы каждый кадр вызываете addEventListener() - зачем?
исправил, действительно глупо

Цитата:
Сообщение от wvxvw Посмотреть сообщение
4. переменные, аргументы и возвращаемый тип функций должны быть типизированы.
ну это я потом все сделаю, когда основную кость доделаю =)

Цитата:
Сообщение от wvxvw Посмотреть сообщение
5. визуальные объекты диспатчат события клавиатуры только когда они в фокусе (например, если вы нажали клавишу Tab чтобы на них перевести фокус), иначе события клавиатуре диспатчатся из stage.
когда я в классе keyPressed пишу в конструкторе "stage.addEventListener(KeyboardEvent.KEY_DOWN, kd);", то компилятор мне выдает:
"1120: Обращение несуществующего свойства stage."

что же делать-то?!

Старый 16.01.2010, 18:41
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 4  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
А у вот тоже вопрос, уже очень давнишний, но он в тему, поэтому решил не делать новый тред..)
При запуске выскакивает варнинг : Warning: 1090: Ошибка миграции: Flash Player не запускает обработчик событий onMouseDown автоматически во время выполнения в ActionScript 3.0. Сначала нужно зарегистрировать этот обработчик для события, используя addEventListener ("mouseDown", callback_handler).

Привязка(addEventListener) происходит после объявления Sprite, и добавления его на stage

при этом не срабатывает первый щелчок на моем спрайте, все последующие работают..о0

в чем может быть проблема..? 0о

Старый 16.01.2010, 19:52
dixlofos вне форума Посмотреть профиль Отправить личное сообщение для dixlofos Найти все сообщения от dixlofos
  № 5  
Ответить с цитированием
dixlofos
 
Аватар для dixlofos

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
dex157
не очень ты тут в тему, но вот - держи:
http://help.adobe.com/ru_RU/AS3LCR/F...imeErrors.html
иши там свое 1090

Старый 16.01.2010, 20:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
>> если чесно не очень понял зачем это, мой класс вдеь нечего не расширяет
Классов, которые ничего не расширяют в AS3 не бывает.

что же делать-то?!
>> Дождаться когда стейдж станет доступным, например после события Event.ADDED_TO_STAGE

dex157:
Это дурацкое предупреждение, просто вам говорят о том, что onMouseDown - это неудачное название для функции потому что такое использовалось в AS2.
__________________
Hell is the possibility of sanity

Старый 16.01.2010, 20:26
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 7  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
wvxvw
Спасибо большое..)

Старый 16.01.2010, 20:33
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Классов, которые ничего не расширяют в AS3 не бывает.
Постой постой, класс
Код AS3:
class Hello{
 
}
получается расширяет Object? Хотя, не совсем понимаю зачем вызывать суперкласс Object`а )

Старый 16.01.2010, 22:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Для порядка. Хуже вы точно этим не сделаете.
__________________
Hell is the possibility of sanity

Старый 17.01.2010, 21:27
dixlofos вне форума Посмотреть профиль Отправить личное сообщение для dixlofos Найти все сообщения от dixlofos
  № 10  
Ответить с цитированием
dixlofos
 
Аватар для dixlofos

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
Цитата:
Сообщение от wvxvw Посмотреть сообщение
что же делать-то?!
>> Дождаться когда стейдж станет доступным, например после события Event.ADDED_TO_STAGE
вся беда в том, что объект уже на сцене, и почему я не могу задействовать stage. я не понимаю.
Объясните пажалуйста..

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

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

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


 


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


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