スポンサーサイト

-------- | --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ActionScript 3.0] 画像に重ね合わせた文字を回転

2007-11-19 | 21:49

package {
    import flash.display.*;
    import flash.filters.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.net.*;
    import flash.text.*;
    import flash.utils.*;
    [SWF(width='150',height='150',backgroundColor='0xffffff',framerate='20')]
        public class EdgeMask extends Sprite {
            [Embed(source="lena.jpg")]
                private var myImage:Class;
            private var bm:Bitmap;
            private var original:BitmapData;
            private var theta:Number=Math.PI/2;
            public function EdgeMask( ) {

                bm = new myImage();
                addChild(bm);
                original = bm.bitmapData.clone();

                var t:Timer = new Timer(30);
                t.addEventListener(TimerEvent.TIMER, function(e:*):void{
                        theta += 0.02;
                        rotate();
                        });
                t.start();
            }

            private var i:int = 0;
            private var dirty:Boolean = false;
            private function rotate():void{
                var width:int = 150;
                var height:int = 150;

                theta %= Math.PI*2;
                if(theta > Math.PI/2 && dirty){
                    dirty = false;
                    i++;
                }
                if(theta < Math.PI/2)
                    dirty = true;

                var textSize:int = 75;
                bm.bitmapData.dispose();
                bm.bitmapData = original.clone();

                var tfm:TextFormat = new TextFormat();
                tfm.size=textSize;
                var tf:TextField = new TextField();
                tf.defaultTextFormat = tfm;
                tf.text = i.toString();
                tf.autoSize="left";
                tf.textColor = 0x0ffffff;
                var bmp:BitmapData = new BitmapData(width, height, false, 0);
                var mt:Matrix = new Matrix();
                bmp.draw(tf);

                var bmd2:BitmapData = new BitmapData(width,height,false,0);
                mt = new Matrix(1,0,0,Math.cos(theta));
                mt.ty = textSize/2*(1-Math.cos(theta));
                bmd2.draw(bmp, mt);

                var mask:BitmapData = new BitmapData(width,height);
                mask.copyChannel(bmd2, bmd2.rect, new Point(0, 0), 1, 8);

                var bg:BitmapData = new BitmapData(width,height,false,0xff*Math.cos(theta));

                bm.bitmapData.copyPixels(bg, new Rectangle(0,0,width,height),
                        new Point(0,20), mask, new Point(0, 0), true);

                bmp.dispose();
                bmd2.dispose();
                bg.dispose();
                mask.dispose();
            }

        }
}


スポンサーサイト

Trackback


この記事にトラックバックする(FC2ブログユーザー)

BMD の情報を最新ブログで検索してみると…

BMDに関する情報を最新ブログやユーチューブ、通販商品から検索してマッシュアップしてみました。

Comment

Post a comment

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。