|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Ищу реализацию языка, типа obj.add(obj2).do(animation).with.x(10).y(15)..
Собственно где-то в архивах флешера это точно было. Но найти не могу. Если кто вспомнит, будет очень здорово.
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Как-то тоже баловался
Canvas.as package { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.MovieClip; import flash.display.Shape; import flash.display.Sprite; /* * * * * * * * * * * * * @author wolsh * * * \* * * * * * * * * */ public class Canvas { private var g:Graphics; private var _fromX:Number; private var _fromY:Number; // fill settings private var _fill:Boolean; private var _fillC:uint; private var _fillA:Number; // border settings private var _border:Boolean; private var _borderT:Number; private var _borderC:uint; private var _borderA:Number; public function Canvas(target:DisplayObject) { if(target is Sprite) g = (target as Sprite).graphics; else if(target is Shape) g = (target as Shape).graphics; else if(target is MovieClip) g = (target as MovieClip).graphics; else throw new Error("Объект назначения не поддерживает программное рисование"); } public function line(thick:Number = 0, color:uint = 0x000000, alpha:Number = 1):Canvas { g.lineStyle(thick, color, alpha); return this; } public function fill(color:uint = 0x000000, alpha:Number = 1):Canvas { _fill = true; _fillC = color; _fillA = alpha; g.beginFill(color, alpha); return this; } public function rect(x:Number, y:Number, width:Number, height:Number):Canvas { if (_border) { g.beginFill(_borderC, _borderA); g.drawRect(x, y, width, height); g.drawRect(x + _borderT, y + _borderT, width - _borderT * 2, height - _borderT * 2); } if (_fill) { g.endFill(); g.beginFill(_fillC, _fillA); if (_border) { g.drawRect(x + _borderT, y + _borderT, width - _borderT * 2, height - _borderT * 2); } else { g.drawRect(x, y, width, height); } } end(); return this; } public function border(thick:Number = 0, color:uint = 0x000000, alpha:Number = 1):Canvas { _borderT = thick; _borderC = color; _borderA = alpha; _border = true; return this; } public function from(x:Number = 0, y:Number = 0):Canvas { g.moveTo(x, y); _fromX = x; _fromY = y; return this; } public function to(x:Number = 0, y:Number = 0):Canvas { g.lineTo(x, y); return this; } /* Замыкает контур */ public function close():Canvas { g.lineTo(_fromX, _fromY); g.lineStyle(); return this; } /* Очищает все установки */ public function end():void { g.endFill(); g.lineStyle(); _border = _fill = false; _fromX = _fromY = _borderT = 0; } } } package { import flash.display.Sprite; import flash.events.Event; import flash.display.StageAlign; import flash.display.StageScaleMode; import Canvas; /* * * * * * * * * * * * * @author wolsh * * * \* * * * * * * * * */ public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // entry point var canvas:Canvas = new Canvas(this); canvas.line(1, 0x222222, 1).from(10, 10).to(60, 20).to(110, 10).to(110, 50).to(10, 50).close(); canvas.fill(0x666666, 0.8).from(120, 10).to(220, 10).to(220, 50).to(120, 50).end(); canvas.fill(0xFF6666, 0.8).rect(120, 60, 100, 40); canvas.border(4, 0xFF6666, 0.8).rect(10, 60, 100, 40); canvas.border(4, 0x222222, 0.8).fill(0xFF6600, 0.8).rect(10, 110, 100, 40); } } }
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 24.01.2012 в 04:19. |
|
|||||
насчет реализации аж языка не знаю
но вообще это fluent interface, вот нашел: Котяра начинал что-то интересное http://www.flasher.ru/forum/blog.php?b=151 Добавлено через 22 минуты еще eaze-tween по такой схеме сделан у меня тож было, когда игрался с генератором саундов http://www.flasher.ru/forum/blog.php?b=350 Последний раз редактировалось silin; 24.01.2012 в 09:26. |
|
|||||
Спасибо вам огромное.
Цитата:
Всем огромное спасибо! |
|
|||||
.
|
Аха, тема. Сталкивался в реализации библиотечки opensocial
|
|
|||||
|
Часовой пояс GMT +4, время: 10:29. |
|
« Предыдущая тема | Следующая тема » |
|
|