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

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

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
TanaTiX, либо вы не поняли меня, либо я вас. По какому принципу работают твинеры?
Код AS3:
TweenLite.to(mc, 5, {alpha:.4, width:60} );
Вот как пример. Мы передаем Что_будем_изменять, Время и обджект с параметрами. Можно указать ширину, а можно высоту. А можно и высоту, и ширину, и альфу и чего там только нельзя. Вот по такому же принципу и я свое сделал. По умолчанию в классе определены приватные переменные с какими-то значениями. Можно не передавать обджект, тогда создастся экземпляр класса с этими дефолтными параметрами. Но можно передать, скажем, {x: 100} - и все, дефолтное значение меняется на это и координата по иксу уже другая.
Вот полный код, надеюсь, меня не покарают за такие большие листинги:
Код AS3:
package kordum.components {
	import flash.display.Sprite;
	import flash.events.Event;
 
	/** @author KorDum
	  * @param x, y : int
	  * @param width, height : uint
	  * @param color : uint
	  * @param alpha : Number [0, 1]
	  * @param border : uint (0 - border 1px)
	  * @param borderColor : uint
	  * @param borderAlpha : Number [0, 1]
	  * @version 1.1 **/
 
	public class BgSimple extends Sprite {
		private var $x:int = 0;
		private var $y:int = 0;
		private var $width:uint = 550;
		private var $height:uint = 400;
		private var $color:uint = 0xFFFFFF;
		private var $alpha:Number = 1.0;
		private var $border:uint;
		private var $borderColor:uint = 0x000000;
		private var $borderAlpha:Number = 1.0;
 
		public function BgSimple(properties:Object = null) {
			if (properties) {
				if (properties.x !== undefined) $x = properties.x;
				if (properties.y !== undefined) $y = properties.y;
				if (properties.width !== undefined) $width = properties.width;
				if (properties.height !== undefined) $height = properties.height;
				if (properties.color !== undefined) $color = properties.color;
				if (properties.alpha !== undefined) $alpha = properties.alpha;
				if (properties.border !== undefined) $border = properties.border;
				if (properties.borderColor !== undefined) $borderColor = properties.borderColor;
				if (properties.borderAlpha !== undefined) $borderAlpha = properties.borderAlpha;
			}
			this.addEventListener(Event.ADDED_TO_STAGE, ifAdd);
		}
 
		private function ifAdd(e:Event):void {
			this.removeEventListener(Event.ADDED_TO_STAGE, ifAdd);
			this.graphics.lineStyle($border, $borderColor, $borderAlpha);
			this.graphics.beginFill($color, $alpha);
			this.graphics.drawRect(0, 0, $width, $height);
			this.x = $x;
			this.y = $y;
		}
	}
 
}
__________________
тут я

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Символом $ отмечаются финализированные методы по конвенции. Для приватов существует "_".

В твинерах мы не знаем что будем менять. x,y, vasya или petya.

В твоём случае было бы логичней вообще конструктор оставить пустым, а width/height и ко сделать сеттерами.

Старый 07.11.2010, 17:00
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 13  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Я имею в виду следующее:
Вот сейчас мы хотим создавать прямоугольник, завтра круг, а послезавтра улыбающуюся девочку. И если с кругом и прямоугольником все относительно просто, то вариантов настройки девочки гораздо больше - запаримся все описывать.
Вот я и предлагаю в BgSimple передавать не Object, а DisplayObject, уже настроеный как хотим. В результате избавляемся от передачи тучи параметров и их переопределения+гибкость во внешнем отображении. Сравнение с твином ИМХО не очень удачное - там другие задачи, там все параметры у объектов уже есть, а в этом случае все создается нами.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
В твоём случае было бы логичней вообще конструктор оставить пустым, а width/height и ко сделать сеттерами.
Ага, а потом писать кучу строчек-настроек:
Цитата:
var bg:BgSimple = new BgSimple();
bg.width = 100;
bg.height = 200;
...
Цитата:
В твинерах мы не знаем что будем менять. x,y, vasya или petya.
У меня тоже не знаем. Но удобнее же в конструктор сразу же запихать все нужное, верно? Конечно, если это статичный класс, то есть, как фон, который нам менять по рантайму не нужно.
__________________
тут я

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Но удобнее же в конструктор сразу же запихать все нужное, верно?
Странно вот, что например нативный Sprite в конструктор вообще ничего не принимает. А ведь так хочется сразу задавать x,y,widht,height,rotation и тот дисплей обджект, куда его добавить...

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
TanaTiX, класс BgSimple создает только прямоугольники. Он не подразумевает создание 3Д-фона, меняющегося по времени. Все параметры по умолчанию есть. Хочешь - меняй. Не хочешь - не меняй. Или меняй только ширину-высоту. Конечно, если мы делаем, скажем, скроллбар, в него пихаем уже ДисплейОбджекты, уже настроенные визуально. В таком классе реализуется только сборка воедино, позиционирование и функционал.

Если мы будем передавать уже настроенный обджект в класс создания фона, необходимость в классе пропадет, ибо дисплей обджект уже настроен, как надо, разве нет?

Добавлено через 1 минуту
Psycho Tiger, класс фона статичный, он не требует, чтобы его в рантайме переделывали. Так зачем делать сеттеры, если можно сразу указать в конструкторе все, что нужно?

Цитата:
Странно вот, что например нативный Sprite в конструктор вообще ничего не принимает. А ведь так хочется сразу задавать x,y,widht,height,rotation и тот дисплей обджект, куда его добавить...
Напиши такой класс
__________________
тут я


Последний раз редактировалось КорДум; 07.11.2010 в 17:08.
Старый 07.11.2010, 17:19
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 17  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Тогда я перестаю понимать связь кода в 1м сообщении и в 11м.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Чтобы не отходить от темы, переложим нашу дискуссию на эффект со звездами. Тут я уже сомневаюсь. Наверно придется сеттерами делать. Ибо вдруг я захочу через пару секунд звездочки заменить летающими девочками? А тут раз, переопределил - и все, звездочки отживают свое, на их место встают бомбардировщики ИЛ-Девочка-2. А потом бац! - я захотел ускорить их сорость или проредить их толпу. И тут сеттером я изменяю все это. Это да, тут сеттеры хороши.
Но в случае с фоном, имхо, удобнее написать
Код AS3:
addChild(new BgSimple({x:100});
и забыть про фон, не так ли?

Добавлено через 2 минуты
TanaTiX, это мы так тихонечко подошли к гибкости настройки.
__________________
тут я

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Странно вот, что например нативный Sprite в конструктор вообще ничего не принимает. А ведь так хочется сразу задавать x,y,widht,height,rotation и тот дисплей обджект, куда его добавить...
А тоже нативный TextFormat позволяет все задать в конструкторе.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Так, еще, логика эффекта не была совсем правильной. Сейчас подобраны такие параметры, что все смотрится очень даже плавно. Но стоит только сменить шаг прозрачности на меньший - хвост создается вспышками, как бы облаками. Сделал по таймеру создание кусочка хвоста.
Хочется при создании каждой звездочки определять начальные значения скорости и шага поворота. Как это лучше сделать? Конечно, можно создать класс одной звезды, определить у нее публичные свойства. Но как-то не хочется создавать еще один класс.
__________________
тут я

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

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

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


 


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


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