« Flash Player 10 で 3Dしてみた | メイン | FIVe3DのAS3版 »

Flash Player 10 で 3Dしてみた 2  テキストもいける

del.icio.us it!   hatena bookmark
flash10_3d2_astro
Flash Player 10 で 3Dしてみた (Unknown Quality)
http://un-q.net/2008/05/flash_player_10_3d.html
の続き
テキストを追加してみたらちゃんとテキストも3Dで表示されたよ。
動的なテキストでもいけるのは嬉しいですね。

こちらからFlash Player 10をインストールしてからみてください。
Adobe Labs - Downloads: Flash Player 10
http://labs.adobe.com/downloads/flashplayer10.html

このコンテンツには最新のFlashPlayerが必要です

package {

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

    use namespace astro;
            
    public class Flash10Sample04 extends Sprite {

        private var sp:Sprite;
        private const CUBE_SCALE:int = 100;        
        
        public function Flash10Sample04() {                        

            var txt:TextField = new TextField();
            addChild(txt);
            txt.text = "クリックで始まります";
            txt.autoSize = TextFieldAutoSize.LEFT;
            txt.setTextFormat(new TextFormat("_ゴシック", 15, 0xffffff));
            
            stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
                removeChild(txt);
                stage.removeEventListener(MouseEvent.CLICK, arguments.callee);
                init();                
            });
                        
        }

        private function init():void {
            createCubeFace();
            
            addEventListener(Event.ENTER_FRAME, function(e:Event):void {
                sp.astro::rotationY += 1;
                sp.astro::rotationX += 1;
            });

        }

        private function createCubeFace():void {

            sp = new Sprite();
            addChild(sp);
            sp.x = 250;
            sp.y = 250;

            var s:Sprite;
            faceArray = new Array();

            function createFace(c:uint):Sprite {
                var s:Sprite = new Sprite();
                drawRect(s, c);
                sp.addChild(s);
                return s
            }
            
            // 背面
            s = createFace(0xff0000);
            s.astro::z = CUBE_SCALE/2;
            
            // 左
            s = createFace(0x0000ff);
            s.astro::rotationY = 90;
            s.x = -CUBE_SCALE/2;
            
            // 右
            s = createFace(0x00ff00);
            s.astro::rotationY = 90;
            s.x = CUBE_SCALE/2;
            
            // 上
            s = createFace(0xffff00);
            s.astro::rotationX = 90;
            s.y = -CUBE_SCALE/2;

            // 下
            s = createFace(0x00ffff);
            s.astro::rotationX = 90;
            s.y = CUBE_SCALE/2;

            // 前面
            s = createFace(0xaaaaaa);
            s.astro::z = -CUBE_SCALE/2;

            var t:TextField = new TextField();
            s.addChild(t);
            t.text = "名古屋で¥nActionScript";
            t.autoSize = TextFieldAutoSize.LEFT;
            t.setTextFormat(new TextFormat("_ゴシック", 15, 0xeeeeee));
            t.x = -50
            t.y = -20

            
        }

        private function drawRect(s:Sprite, c:uint):void {

            var g:Graphics = s.graphics;
            g.lineStyle(2, 0xffffff);
            g.beginFill(c, 0); // z sort してないから塗りは消しておく
            g.drawRect(-CUBE_SCALE/2, -CUBE_SCALE/2, CUBE_SCALE, CUBE_SCALE);
            g.endFill();
            
        }
        
    }
    
}


Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] 集合知プログラミング ビジュアライジング・データ —Processingによる情報視覚化手法 御岳百草丸 1200T

トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/303

コメント (1)

Your smart code makes a cube so easy to rotate. Good example.

コメントを投稿