maskの練習.借り物

by Nowloading_
♥0 | Line 58 | Modified 2010-10-29 16:20:55 | MIT License
play

ActionScript3 source code

/**
 * Copyright Nowloading_ ( http://wonderfl.net/user/Nowloading_ )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/9P3f
 */

package {

    import flash.display.*;
    import flash.events.*;
    import flash.text.*;

    public class Root extends Sprite {

        public function Root() {

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            //top..field..ect
            var top:Sprite = new Sprite;
            top.graphics.beginFill(0x00ff00);
            top.x= 200;
            top.y= 200;
            top.graphics.drawCircle(0,0,200);
            top.graphics.endFill();
            addChild(top);

            var field:Sprite = new Sprite;
            field.graphics.beginFill(0x777777);
            field.graphics.drawRoundRect(0, 0, 400, 400, 20);
            field.graphics.endFill();
            top.addChild(field);

            // テキスト要素
            var t:TextField = new TextField;
            t.x = 100;
            t.y = 200;
            t.width = 300;
            t.text = "abcdeABCDEあいうえお";
            field.addChild(t);

            // 赤い要素
            var c:Sprite = new Sprite;
            c.x = 50;
            c.y = 100;
            c.graphics.beginFill(0xFF0000);
            c.graphics.drawRect(0, 0, 200, 50);
            c.graphics.endFill();
            field.addChild(c);

            // 青い要素
            var c2:Sprite = new Sprite;
            c2.x = 200;
            c2.y = 0;
            c2.graphics.beginFill(0x0000FF);
            c2.graphics.drawRect(0, 0, 20, 300);
            c2.graphics.endFill();
            field.addChild(c2);

            // マスク要素1
            // m要素がfield要素のマスクとなり、mの描画範囲のみ下地部分が表示される
            // m要素は描画範囲のみ問題となるので、色(0xFFFFFF)は無関係となる
            // field要素をマスクすることで、field要素の子要素である t, c, c1 もマスクされる
            var m:Sprite = new Sprite;
            m.x = 200;
            m.y = 200;
            m.graphics.beginFill(0xFFFFFF);
            m.graphics.drawCircle(0, 0, 100);
            m.graphics.endFill();
            field.mask = m; // maskプロパティにマスク要素を入れることで、マスクされる

            // マスク要素2
            // 青い要素のみをマスクしている
            // その場合、青い要素は二重にマスクされることになる
            var m2:Sprite = new Sprite;
            m2.x = 0;
            m2.y = 0;
            m2.graphics.beginFill(0xFFFFFF);
            m2.graphics.drawRect(0, 0, 400, 120);
            m2.graphics.endFill();
            c2.mask = m2;

            addChild(field);
        }
    }
}