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

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

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Реализуйте оба (как выше говорил Psycho Tiger).
Конечно, будет оба.
Цитата:
Я про вообще, а не про пример КорДума, он плох.
Почему же плох?
Цитата:
Если удобен - делай первый, конечно. Только мне кажется через 2-3 года он тебе станет неудобен
Я делаю сейчас нужные параметры в конструкторе, остальное сеттерами. Это разве плохо?
__________________
тут я

Старый 08.11.2010, 17:53
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 52  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Почему же плох?
Создается стиль, в котором описываются все нужные вариации и передается одним параметром. Кэлбек задавать в конструкторе визуального объекта тоже не здравая мысль.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.11.2010, 18:38
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 53  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
iNils, вы имеете в виду, что вот так делать не есть хорошо?
Код AS3:
var tf:TextFormat = new TextFormat();
addChild(new MyClass(tf));
Добавлено через 6 минут
А, ну да, сохраняется же ссылка на tf...
__________________
тут я


Последний раз редактировалось КорДум; 08.11.2010 в 18:41.
Старый 08.11.2010, 18:55
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 54  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Нет. Вы спокойно можете так сделать. Но речь шла о нескольких TextFormat. Для этого лучше создать отдельные класс Style и указать все TextFormat там. А в MyClass передать style.

Что касается ссылки на tf, то можно сделать хитрый ход. Так как TextFormat не имеет метода clone, то при задании tf задать его для текстового поля, а только потом с этого же поля и записать TextFormat в переменную, которая будет хранить его для данного состояния, при условии, что начальное значение _tf равно null.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Что касается ссылки на tf, то можно сделать хитрый ход. Так как TextFormat не имеет метода clone, то при задании tf задать его для текстового поля, а только потом с этого же поля и записать TextFormat в переменную, которая будет хранить его для данного состояния, при условии, что начальное значение _tf равно null.
Если честно не понял )
От себя - написать свой clone не сложно - я если надо для себя сделаю прослойку-патч TextFormat, или функцию cloneTextFormat.
Цитата:
Я делаю сейчас нужные параметры в конструкторе, остальное сеттерами. Это разве плохо?
Это как раз как надо.

@iNils: alatar прав, можно долго рассуждать кто что использует, а кто что нет. Опытные разработчики используют компоненты, а если что-то используется без компонента, но ему нужен инвалидатор - он пишется с нуля. Вообще реализация инвалидатора скрыта от того, кто использует этот класс/компонент, а речь идёт сейчас об интерфейсе - как удобней передавать.
Короче, спорить можно долго

Старый 08.11.2010, 19:44
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 56  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Если честно не понял )
Накидал пример.
Код AS3:
package {
	/*    IMPORT             *///{ /
	import flash.text.TextFormat;
	import flash.display.Sprite;
	import flash.text.TextField;
	//}
	public class Label extends Sprite {
		/*  - VAR PRIVATE        *///{ /
		private var _fmt:TextFormat = null;
		private var _tf:TextField = new TextField ();
		//}
		/*  * CONSTRUCTOR *      *///{ /
		public function Label (fmt:TextFormat) {
			_tf.defaultTextFormat = fmt;
			addChild (_tf);
			_fmt = _tf.defaultTextFormat;
		}
		//}
	}
}
Обрати внимание на конструктор, передаваемый формат fmt используется для форматирования созданного текстового поля лишь единожды, затем используется везде _fmt, который является клоном fmt созданного самим текстовым полем.

Цитата:
Опытные разработчики используют компоненты
Я не использую, значит я не опытный?
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 08.11.2010 в 19:47.
Старый 08.11.2010, 19:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 57  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Я не использую, значит я не опытный?
Используются когда они нужны, конечно. Когда тебе нужен скроллпейн, например, ты ведь берешь какие-то заготовки (свои, чужие) и кастомизируешь под себя? Вот тебе и компонент.
Ну и обратное не всегда верно. Это как если ты хороший повар и ты любишь делать салаты. Но если ты не любишь делать салаты - это не значит что ты плохой повар

По поводу кода - я правильно понимаю что где-то в недрах TextField`а при установке defaultTextFormat происходит клонирование TextFormat? Спасибо, не знал )

Старый 08.11.2010, 20:13
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 58  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>затем используется везде _fmt, который является клоном fmt созданного самим текстовым полем.

выходит, что _fmt не нужен вовсе:
Код AS3:
public function get textFormat ():TextFormat {
	return _tf.defaultTextFormat;
}
public function set textFormat (value:TextFormat):void {
 
	_tf.defaultTextFormat = value;
	_tf.setTextFormat (value);
}

Старый 08.11.2010, 20:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 59  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Не при установке, а когда забираешь. Иначе бы можно было просто менять сам TextFormat, и его изменения должны сразу же отображается, а этого не происходит без переназначения его текстовому полю.

Добавлено через 5 минут
silin, это зависит от задумки. Если ты будешь брать TextFormat несколько раз подряд, то каждый раз будет происходить копирования. Я хотя и не измерял, но думаю, что это будет более трудозатратно, чем хранить уже готовую копию.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Не при установке, а когда забираешь. Иначе бы можно было просто менять сам TextFormat, и его изменения должны сразу же отображается, а этого не происходит без переназначения его текстовому полю.
Хм.
Вообще мои рассуждения такие: TextFormat не наследуется от EventDispatcher`а, а значит путей что-то сказать TextFormat`у TextField`у нету. Поэтому изменяя поля TextFormat `а изменения в TextField`е не могут происходить. Поэтому обновление отображения текста в текстовом поле происходит в сеттере defaultTextFormat (ну и в setTextFormat).
Однако твоё утверждение что defaultTextFormat клонируется когда забираешь тоже верно:
Код AS3:
trace(textField.defaultTextFormat === textField.defaultTextFormat); //false
Однако:
Код AS3:
var textFormat:TextFormat = new TextFormat(null, 15, 0x51B5F7);
var textField:TextField = new TextField();
textField.defaultTextFormat = textFormat;
textField.text = "Hello ";
textFormat.color = 0xF751DA;
textField.appendText("world");
Но Hello world выводится монотонным цветом. Тут стоило бы сказать что значит клонирование происходит и в сеттере, но следующий тест ввёл меня в ступор:

Код AS3:
var textFormat:TextFormat = new TextFormat(null, 15, 0x51B5F7);
var textField:TextField = new TextField();
textField.defaultTextFormat = textFormat;
textField.text = "Hello ";
//поменяли цвет на другой
var textFormat2:TextFormat = textField.defaultTextFormat;
textFormat2.color = 0x54F364;
textField.defaultTextFormat = textFormat2;
 
textField.appendText("world");
И снова Hello world выводится монотонным. Похоже я ничего не понимаю в текстформатах. Объясните, пожалуйста.


Последний раз редактировалось iNils; 08.11.2010 в 20:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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