|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Правильная реализация эффектов для мыши
Давненько я не делал всякие эффекты. Тогда я еще маловато знал об as3 и усердно зачитывал Мука. Итак, с утра что-то стукнуло в голову, дай-ка, думаю, пока выходной, понаделаю шаблончиков - авось когда пригодятся. Сделалось вот такое:
package { import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import kordum.utils.MathExtend; /** @author KorDum **/ public class CursorStarEffect extends Sprite { private var arrStar:Vector.<Shape> = new Vector.<Shape>(); private var speedRotation:uint = 10; private var alphaDown:Number = .1; public function CursorStarEffect() { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var i:uint; for (i = 0; i < 15; i++) createStar(); this.addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(e:Event):void { for each (var star:Shape in arrStar) { star.rotation += speedRotation + MathExtend.randomRange( -5, 5); star.alpha -= alphaDown; if (star.alpha <= 0) { arrStar.splice(arrStar.indexOf(star), 1); removeChild(star); createStar(); } } } private function createStar():void { var star:Shape = new Shape(); star.graphics.beginFill(0x000000); star.graphics.drawRect(MathExtend.randomRange(-10, 10), MathExtend.randomRange(-10, 10), 10, 10); star.x = stage.mouseX + MathExtend.randomRange(-10, 10); star.y = stage.mouseY + MathExtend.randomRange(-10, 10); arrStar.push(star); addChild(star); } } }
__________________
тут я |
|
|||||
Да в основном по мелочи вроде...
speedRotation и alphaDown лучше сделать константами - их значения все равно не меняются. есть мнение что с int-ом флеш работает быстрее, да и 15 тоже в константу, в настройки вынести, возможно еще какие-то значения.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Где-то тут на форуме видел, что константы после компиляции становятся переменными. Вообще, хотелось бы потом сделать полные настройки. То есть, в конструктор передаем Object:
Чем обджекты хороши - хочешь задавать параметр - задавай, не хочешь - не задавай, будут использоваться дефолтные значения.
__________________
тут я |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Порядок важен, Тигер. А все случаи не предусмотришь. Нужно мне в твоем коде вместо hello написать hell. И придется перед этим писать все другие параметры тоже, переписывая их дефолтные значения.
А с обджектом хоть местами меняй, хоть какое значение задавай. Я свой фреймворк сейчас на обджекты перевожу - удобно, на мой взгляд.
__________________
тут я Последний раз редактировалось КорДум; 07.11.2010 в 16:12. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Обджекты - ущерб автокомплиту. Я считаю что обджекты следует использовать только для передачи ключ=>значение, когда число и имена ключей заранее неизвестны. Как яркий пример - твинеры.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
Цитата:
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); } Так вот, здесь нужно только заглянуть в класс, где заботливой рукой я указал все возможные параметры, в коструктор передавать объект с этими параметрами. Ты же это и имел в виду? Больше ни для чего обджекты я не использую из-за той же типизации и того же автокомплита.
__________________
тут я |
|
|||||
Зачем его создавать в том классе? Проще передать готовый. И вся надобность в Object-ах отпадет. Передали DisplayObject, пересохранили ссылку на объект и делаем что хотим. Если нет DisplayObject-а в параметре - тогда создаем некую форму, определенную по умолчанию, но ей не нужно передавать хренову тучу значений, т.к. все параметры определены внутри класса. Или имеется в виду определить все параметры внутри функции на тот случай, если DisplayObject отсутствует, чтоб не плодить лишние свойства, и их передать параметром для функции, которая запустится опять же только в том случае, если не определен DisplayObject? Но даже в таком случае, т.к. это закрытая функция, нет ИМХО особой надобности создавать Object.
Или я что-то не так понял?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
Часовой пояс GMT +4, время: 23:29. |
|
« Предыдущая тема | Следующая тема » |
|
|