|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
TanaTiX, либо вы не поняли меня, либо я вас. По какому принципу работают твинеры?
Вот как пример. Мы передаем Что_будем_изменять, Время и обджект с параметрами. Можно указать ширину, а можно высоту. А можно и высоту, и ширину, и альфу и чего там только нельзя. Вот по такому же принципу и я свое сделал. По умолчанию в классе определены приватные переменные с какими-то значениями. Можно не передавать обджект, тогда создастся экземпляр класса с этими дефолтными параметрами. Но можно передать, скажем, {x: 100} - и все, дефолтное значение меняется на это и координата по иксу уже другая. Вот полный код, надеюсь, меня не покарают за такие большие листинги: 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; } } }
__________________
тут я |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Символом $ отмечаются финализированные методы по конвенции. Для приватов существует "_".
В твинерах мы не знаем что будем менять. x,y, vasya или petya. В твоём случае было бы логичней вообще конструктор оставить пустым, а width/height и ко сделать сеттерами.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Я имею в виду следующее:
Вот сейчас мы хотим создавать прямоугольник, завтра круг, а послезавтра улыбающуюся девочку. И если с кругом и прямоугольником все относительно просто, то вариантов настройки девочки гораздо больше - запаримся все описывать. Вот я и предлагаю в BgSimple передавать не Object, а DisplayObject, уже настроеный как хотим. В результате избавляемся от передачи тучи параметров и их переопределения+гибкость во внешнем отображении. Сравнение с твином ИМХО не очень удачное - там другие задачи, там все параметры у объектов уже есть, а в этом случае все создается нами.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Цитата:
Цитата:
Цитата:
__________________
тут я |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
TanaTiX, класс BgSimple создает только прямоугольники. Он не подразумевает создание 3Д-фона, меняющегося по времени. Все параметры по умолчанию есть. Хочешь - меняй. Не хочешь - не меняй. Или меняй только ширину-высоту. Конечно, если мы делаем, скажем, скроллбар, в него пихаем уже ДисплейОбджекты, уже настроенные визуально. В таком классе реализуется только сборка воедино, позиционирование и функционал.
Если мы будем передавать уже настроенный обджект в класс создания фона, необходимость в классе пропадет, ибо дисплей обджект уже настроен, как надо, разве нет? Добавлено через 1 минуту Psycho Tiger, класс фона статичный, он не требует, чтобы его в рантайме переделывали. Так зачем делать сеттеры, если можно сразу указать в конструкторе все, что нужно? Цитата:
__________________
тут я Последний раз редактировалось КорДум; 07.11.2010 в 17:08. |
|
|||||
Чтобы не отходить от темы, переложим нашу дискуссию на эффект со звездами. Тут я уже сомневаюсь. Наверно придется сеттерами делать. Ибо вдруг я захочу через пару секунд звездочки заменить летающими девочками? А тут раз, переопределил - и все, звездочки отживают свое, на их место встают бомбардировщики ИЛ-Девочка-2. А потом бац! - я захотел ускорить их сорость или проредить их толпу. И тут сеттером я изменяю все это. Это да, тут сеттеры хороши.
Но в случае с фоном, имхо, удобнее написать и забыть про фон, не так ли? Добавлено через 2 минуты TanaTiX, это мы так тихонечко подошли к гибкости настройки.
__________________
тут я |
|
|||||
Так, еще, логика эффекта не была совсем правильной. Сейчас подобраны такие параметры, что все смотрится очень даже плавно. Но стоит только сменить шаг прозрачности на меньший - хвост создается вспышками, как бы облаками. Сделал по таймеру создание кусочка хвоста.
Хочется при создании каждой звездочки определять начальные значения скорости и шага поворота. Как это лучше сделать? Конечно, можно создать класс одной звезды, определить у нее публичные свойства. Но как-то не хочется создавать еще один класс.
__________________
тут я |
Часовой пояс GMT +4, время: 03:25. |
|
« Предыдущая тема | Следующая тема » |
|
|