Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ищу реализацию языка, типа obj.add(obj2).do(animation).with.x(10).y(15).. (http://www.flasher.ru/forum/showthread.php?t=174374)

~~~ 24.01.2012 03:32

Ищу реализацию языка, типа obj.add(obj2).do(animation).with.x(10).y(15)..
 
Собственно где-то в архивах флешера это точно было. Но найти не могу. Если кто вспомнит, будет очень здорово.

in4core 24.01.2012 04:05

а о чем вообще разговор?
obj.add ( obj2 ) returns obj2 obj2.applyAnimation(animation) returns point ...

Wolsh 24.01.2012 04:09

Как-то тоже баловался
Canvas.as


Код AS3:

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;
        }
    }
 
}

Main.as
Код AS3:

 
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);
        }
 
    }
 
}


alexcon314 24.01.2012 08:26

За архив не скажу. Поищи посты silin'a или свяжись с ним, вроде он о чем-то подобном рассказывал, насколько мне помнится. Где-то за год-полтора. Возможно, в блогах было. Но было, да.

silin 24.01.2012 09:01

насчет реализации аж языка не знаю
но вообще это fluent interface,
вот нашел: Котяра начинал что-то интересное http://www.flasher.ru/forum/blog.php?b=151

Добавлено через 22 минуты
еще eaze-tween по такой схеме сделан
у меня тож было, когда игрался с генератором саундов http://www.flasher.ru/forum/blog.php?b=350

~~~ 24.01.2012 22:44

Спасибо вам огромное.
Цитата:

вообще это fluent interface
- потому и не нашёл, не знал. Спасибо!
Всем огромное спасибо!

dimarik 24.01.2012 23:00

Аха, тема. Сталкивался в реализации библиотечки opensocial

~~~ 09.02.2012 15:12

Кстати, нашёл вот такой эксперимент:
Описание | Код.


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

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