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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Дедушка Кнут в третьем томе очень много и пространно говорил о разделении интерфейса и реализации. К сожалению, когда мы привязываем какой-бы то ни было код к мувиклипу, о разделении реализации и интерфейса - и речи быть не может. Это раз. Еще болше и пространнее дедушка Дональд Кнут говорил об инкапсуляции событий. Я не спорю, когда ты помещаешь код внутрь мувиклипа, ты его инкапсулируешь, но в этом случае ты привязываешь код к конкретному ЭКЗЕМПЛЯРУ класса а не к классу в целом. Какая-то кривоватенькая инкапсуляция получается, не находишь? И третье, что нам говорил дедушка Кнут - об экономии ячеек памяти. Но и тут выясняется, что обработчик событий onClipEvent привязан прототипированием к классу MovieClip, а значит, он создаёт внутри этого класса статический неименованный объект (аналог Listener). И получается, что для каждого экземпляра MovieClip при введении обработчика onClipEvent создаётся статический объект внутри класса. И где же тут экономия? В случае с Listener все события валятся на один объект, являющийся экземляром класса Listener, а следовательно в любой момент могут быть удалены сборщиком мусора без особых потерь в производительности (простой финализацией экземпляра Listener). В случае же с onClipEvent сборщику мусора приходится чистить статические объекты внутри класса, а если учесть, что в Java, например, это возможно только при явной финализации класса в целом, то во флэше - это не происходит никогда - ибо для этого придётся финализировать класс MovieClip, а это, как вы понимаете, невозможно. (Чёрт возьми, как всё таки механизмы работы виртуальной машины во Flash Player 7 и в SunJVM похожи - до безобразия).

Вот так. Коротенько. Минут на сорок...
__________________
судью - на мыло, из игроков - вить веревки.


Последний раз редактировалось Dindin; 09.07.2004 в 02:12.
Старый 09.07.2004, 08:43
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да кто же против, удобнее хранить обработчик в отдельном объекте (к слову сказать, что и в этом случае ' ты привязываешь код к конкретному ЭКЗЕМПЛЯРУ класса а не к классу в целом') и пожалуста
я-то имел ввиду Key.addListener(сам мувик) ну и соответсвенно Key.removeListener(),если уж пойдет борьба за экономию
хотя, согласен, что с объектом работать удобнее

Старый 09.07.2004, 08:54
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 13  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Цитата:
Оригинал написал(а) silin
(к слову сказать, что и в этом случае ' ты привязываешь код к конкретному ЭКЗЕМПЛЯРУ класса а не к классу в целом')
э, не-е-ет. В этом случае я привязываю один ОБЪЕКТ (экземпляр Listener) к другому (экземпляр Object), а никак не КОД (который объектом не является) к экземпляру MovieClip, который в условиях среды разработки является библиотечным символом, а никак не экземпляром класса.
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 13:44
nadyas вне форума Посмотреть профиль Отправить личное сообщение для nadyas Найти все сообщения от nadyas
  № 14  
nadyas

Регистрация: Jun 2003
Адрес: Москва
Сообщений: 168
По умолчанию Елё

спасибо, уже получается с вашим кодом
можно объяснить что это: _root.spacepressed

я просто вставила код на мувике и вроде как получилось
но никаких флагов нигде не ставлю, ни в самом муве, ни на руте, а все равно рука работает как надо, то есть не поднимается при долгом нажатии на пробел

странное поведение, вообще spacepressed это пользовательское, или зарезервированное (хотя оно не подсвечивается синим в окне программы)

в любом случае спасибо

но это не все, если все время жать быстро быстро на пробел, отпуская и нажимая, то рука дергается (в муве tween на 5 фреймов, соответственно зацикливается)

что можно сделать?

Старый 09.07.2004, 18:33
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 15  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
перед gotoAndPlay(2); проверь на каком фрейме находится твой мувик
если он в процессе проигрывания "руки" то gotoAndPlay не вызывай

spacepressed можешь заменить на что угодно
(только все spacepressed на один и тот же кейворд ;-) )
это просто флаг, который после нажатия на клавишу сигнализирует о том что клавиша в нажатом положении (мы сами выставляем там true, посмотри первый if.
Как только пользователь отпускает клавишу мы ставим в нем false - и при мледующем нажатии один раз вызовется "рука"

не уверен что стало понятнее правда....

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

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

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


 


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


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