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

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

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

Регистрация: Sep 2004
Сообщений: 42
Отправить сообщение для a1. с помощью ICQ
Про функцию в функции разобрались, при использовании её отписываюсь от события, а переход по ссылке для примера привёл. Так создаю метод и передаю туда кастомизированное событие, если, например, ссылок много.

Что по остальному? Может кто поделится кодом "правильного" простенького сайта?
Давайте подискутируем, думаю, многим полезна будет эта тема.
Опытные, подскажите пожалуйста, лучше с примерами. А то надоело делать неправильно.

Старый 12.03.2010, 11:55
F1esk вне форума Посмотреть профиль Отправить личное сообщение для F1esk Найти все сообщения от F1esk
  № 12  
Ответить с цитированием
F1esk
 
Аватар для F1esk

Регистрация: Jun 2008
Адрес: Tomsk
Сообщений: 88
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Создавая такую анонимную функцию как в вашем случае вы никогда от неё не отпишитесь и она навсегда останется в памяти.
И будет приходить во сне

Если серьёзно, организованный метод Destroy() в базовом классе, наследуемом от Sprite( и другие ) отписывает всех зарегистрированных в нем слушателей( override addEventListener ), удаляет со сцены всех чайлдов и делает их null ( override addChild ).

обожаю такие штуки
Код AS3:
child.addEventListener( "event" , function( e: event ) { trace( "Destroy меня убьет ;(" ); } );


Последний раз редактировалось F1esk; 12.03.2010 в 12:00.
Старый 12.03.2010, 12:27
lelka вне форума Посмотреть профиль Отправить личное сообщение для lelka Найти все сообщения от lelka
  № 13  
Ответить с цитированием
lelka
 
Аватар для lelka

Регистрация: Aug 2009
Сообщений: 54
a1. А ты gaia пользовал? очень прикольная штука, предназначена специально для создания сайтов.

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от lelka Посмотреть сообщение
a1. А ты gaia пользовал? очень прикольная штука, предназначена специально для создания сайтов.
Для домохозяек ;D

Старый 12.03.2010, 13:14
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 15  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Цитата:
Что по остальному? Может кто поделится кодом "правильного" простенького сайта?
Это навряд ли кто сделает, потому что структура может сильно меняться в зависимости от составляющих.
1. Структура страниц и модулей сайта, дизайн
2. Весь ли сайт будет на flash
3. Сколько в сайте графики, анимации или же много текста
4. Как часто будет обновляться сайт
5. Будет ли использоваться swfaddress

Старый 12.03.2010, 14:11
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 16  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Вообще плохо что адобовцы не сделали метод removeAllListeners нативно.
Делал реализацию эвентов на as2 - там этот метод сразу заложил.. Всего-лишь зануляет массив для листенеров и всё - а вот для создания removeAllListeners в AS3 надо перекрывать addEventListener, создавать список зарегистрированных листенеров, удалять из списка при removeEventListener (опять же переопределять) в общем много лишнего..
что-то вроде:
Код AS3:
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 = [];
		}
 
	}
 
}
__________________
Отряд Котовскага

Старый 12.03.2010, 15:43
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 17  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Цитата:
Делал реализацию эвентов на as2 - там этот метод сразу заложил..
Да эт еще ладно, а вот как они реализовали удаление объектов в as3 - эт ваще пипелац без гравицапы, Сборщик мусора - эт ваще отстой, в этом плане as2 просто мега язык.

К стати - рекомендую при создании объектов спланировать их создание таким образом, чтобы не было нужды их удалять и создавать снова, а просто хайдить и отхайдивать когда нужно, поскольку, лично я жестоко ип...ся когда пытался сделать создание/удаление объектов как в as2, например при создании flv проигрывателя, мало того что его удаление - это уже проблема сама по себе, дк предствьте сколько нужно предусмотреть его состояний, например при загрузке или буференге видео, чтобы "понятно" объяснить сборщику, что этот объект больше не нужен, и то что он там завис при загрузке видео - это его (flvPlayback) личные проблемы и в любом случае его надо снести, как только этот объект станет адекватным. Поэтому, например при создании сложного объекта, у которого много разных состояний и пр. лабуды, при котором сборщик "считает" что этот объект жизненно необходим вашей програмее, поскольку он лучше знает что для вас нужно на вашем сайте, не смотря на то, что вы уверенно написали -
Код AS3:
removeChild(myObj);
myObj = null;
поэтому для таких обектов лучше создавайте один экземпляр, и меняйте его параметры, и хайдите, когда это требуется.


Последний раз редактировалось AlexDesinger; 12.03.2010 в 15:45.
Старый 12.03.2010, 16:35
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 18  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
AlexDesinger, вы говорите страшные глупости. Со сброщиком в этом смысле всё в полном порядке.

Цитата:
Сообщение от AlexDesinger Посмотреть сообщение
К стати - рекомендую при создании объектов спланировать их создание таким образом, чтобы не было нужды их удалять и создавать снова,
И это не универсальный совет. Представьте, что какие-нибудь галереи с большими картинками не удаляются из памяти, а просто скрываются — этак можно всю память забить, особенно важно с приходом всяких нетбуков и мобильных устройств. Нужно решать как лучше поступить в данном конкретном случая. Если раздел ("объект", про который идёт речь) планируется часто скрываться/показываться и он не очень "тяжёлый", то да, можно его не убивать-создавать постоянно.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Alex имеет ввиду, что есть на экране одновременно может отображаться 5 картинок, то нет нужды скрывать одну и добавлять одну - можно просто изменить одну.
F1esk, ну в целом можно, только не вижу в этом ничего хорошего.
А addChild зачем переписывать?

Старый 12.03.2010, 18:04
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 20  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Цитата:
Со сброщиком в этом смысле всё в полном порядке.
а вот и нет, с удалением flvPlayback есть такая проблема - я удаляю все ссылки на него, удаляю все слушатели, удаляю вообще что с ним связано, но если это происходит в момент подгрузки видео, то после того, как оно догрузиться, оно вполне себе спокойненько начинает воспроизводиться дальше как нивчем не бывало - знаете, нет его не видно, зато его прекрасно слышно не пойми откуда.
Ну вообще сбощик работает хорошо, я не спорю, просто сама идея такого подхода, лично меня абсолютно не устраивает, то ли дело метод removeMovieClip - просто прекрасно был реализован, но эт ладна.

Цитата:
И это не универсальный совет. Представьте, что какие-нибудь галереи с большими картинками не удаляются из памяти, а просто скрываются — этак можно всю память забить, особенно важно с приходом всяких нетбуков и мобильных устройств. Нужно решать как лучше поступить в данном конкретном случая. Если раздел ("объект", про который идёт речь) планируется часто скрываться/показываться и он не очень "тяжёлый", то да, можно его не убивать-создавать постоянно.
ну с этим я соглашусь, именно это я и имел ввиду, даже скорее я имел ввиду не все объекты, разумеется, а именно сложные объекты - я писал об этом выше или модули у которых много состояний, которые в связи с этим испытывают проблемы с удалением, а вы мне про картинки - конечно их можно сносить, если они забивают память, поскольку, во-первых они часто кэшируются, а во-вторых не имеют сложнстей при удалении, а так, да, конечно исходя из конкретного случая.

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

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

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


 


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


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