« action-codingがすばらしそう! | メイン | Flash Player 10 で 3Dしてみた 2  テキストもいける »

Flash Player 10 で 3Dしてみた

del.icio.us it!   hatena bookmark
flash10_3d.png
Flash Player 10 bate がリリースされました。

Adobe Labs - Flash Player 10
http://labs.adobe.com/technologies/flashplayer10/

akihiro kamijo: Flash Player 10 beta 公開
http://weblogs.macromedia.com/akamijo/archives/2008/05/flash_player_10.html

とりあえずDisplayObjectに追加された3D機能を試してみる
この辺りを参考に作ってみました
http://wiki.libspark.org/wiki/FlashPlayer/10/API

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

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

コードはこんな感じ
Zsortは自分でする必要があるっぽい?のでとりあえず面は描画せず線だけです。
package {

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

    use namespace astro;
            
    public class Flash10Sample03 extends Sprite {

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

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

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


astro.as
package {
    public namespace astro = "http://www.adobe.com/2008/actionscript/Flash10/";
}

Flash Player 10 で 3Dしてみた 2  テキストもいるけ (Unknown Quality)
http://un-q.net/2008/05/flash_player_10_3d_astro.html


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

トラックバック

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

コメント (1)

匿名:

…どう操作するんだ?

コメントを投稿

書いたよ!