![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Про функцию в функции разобрались, при использовании её отписываюсь от события, а переход по ссылке для примера привёл. Так создаю метод и передаю туда кастомизированное событие, если, например, ссылок много.
Что по остальному? Может кто поделится кодом "правильного" простенького сайта? Давайте подискутируем, думаю, многим полезна будет эта тема. Опытные, подскажите пожалуйста, лучше с примерами. А то надоело делать неправильно. |
|
|||||
|
Регистрация: Jun 2008
Адрес: Tomsk
Сообщений: 88
|
Цитата:
![]() Если серьёзно, организованный метод Destroy() в базовом классе, наследуемом от Sprite( и другие ) отписывает всех зарегистрированных в нем слушателей( override addEventListener ), удаляет со сцены всех чайлдов и делает их null ( override addChild ). обожаю такие штуки Последний раз редактировалось F1esk; 12.03.2010 в 12:00. |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 54
|
a1. А ты gaia пользовал? очень прикольная штука, предназначена специально для создания сайтов.
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Цитата:
1. Структура страниц и модулей сайта, дизайн 2. Весь ли сайт будет на flash 3. Сколько в сайте графики, анимации или же много текста 4. Как часто будет обновляться сайт 5. Будет ли использоваться swfaddress |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Вообще плохо что адобовцы не сделали метод removeAllListeners нативно.
Делал реализацию эвентов на as2 - там этот метод сразу заложил.. Всего-лишь зануляет массив для листенеров и всё - а вот для создания removeAllListeners в AS3 надо перекрывать addEventListener, создавать список зарегистрированных листенеров, удалять из списка при removeEventListener (опять же переопределять) в общем много лишнего.. что-то вроде: package { import flash.display.Sprite; /** * Расширенный класс спрайта с удалением листенеров * @author k0t0vich */ public class XSprite extends Sprite { private var listenersList:Array = []; public function XSprite() { super(); } override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { listenersList.push( { listener:listener, type:type } ); super.addEventListener(type, listener, useCapture, priority, useWeakReference); } override public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { var len:uint = listenersList.length-1; for (var i:uint = len; i>=0; i--) { if (listenersList[i]["listener"] == listener && listenersList[i]["type"] == type) listenersList.splice(i,1); } super.removeEventListener(type, listener, useCapture); } public function removeAllListeners() { for (var i:uint = len; i>=0; i--) { super.removeEventListener(listenersList[i]["type"],listenersList[i]["listener"]) } listenersList = []; } } }
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Цитата:
К стати - рекомендую при создании объектов спланировать их создание таким образом, чтобы не было нужды их удалять и создавать снова, а просто хайдить и отхайдивать когда нужно, поскольку, лично я жестоко ип...ся когда пытался сделать создание/удаление объектов как в as2, например при создании flv проигрывателя, мало того что его удаление - это уже проблема сама по себе, дк предствьте сколько нужно предусмотреть его состояний, например при загрузке или буференге видео, чтобы "понятно" объяснить сборщику, что этот объект больше не нужен, и то что он там завис при загрузке видео - это его (flvPlayback) личные проблемы и в любом случае его надо снести, как только этот объект станет адекватным. Поэтому, например при создании сложного объекта, у которого много разных состояний и пр. лабуды, при котором сборщик "считает" что этот объект жизненно необходим вашей програмее, поскольку он лучше знает что для вас нужно на вашем сайте, не смотря на то, что вы уверенно написали - поэтому для таких обектов лучше создавайте один экземпляр, и меняйте его параметры, и хайдите, когда это требуется. Последний раз редактировалось AlexDesinger; 12.03.2010 в 15:45. |
|
|||||
|
AlexDesinger, вы говорите страшные глупости. Со сброщиком в этом смысле всё в полном порядке.
И это не универсальный совет. Представьте, что какие-нибудь галереи с большими картинками не удаляются из памяти, а просто скрываются — этак можно всю память забить, особенно важно с приходом всяких нетбуков и мобильных устройств. Нужно решать как лучше поступить в данном конкретном случая. Если раздел ("объект", про который идёт речь) планируется часто скрываться/показываться и он не очень "тяжёлый", то да, можно его не убивать-создавать постоянно. |
|
|||||
|
Alex имеет ввиду, что есть на экране одновременно может отображаться 5 картинок, то нет нужды скрывать одну и добавлять одну - можно просто изменить одну.
F1esk, ну в целом можно, только не вижу в этом ничего хорошего. А addChild зачем переписывать?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Цитата:
Ну вообще сбощик работает хорошо, я не спорю, просто сама идея такого подхода, лично меня абсолютно не устраивает, то ли дело метод removeMovieClip - просто прекрасно был реализован, но эт ладна. Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|