In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

習作@101019

てっく煮ぶろぐ様より転載
http://d.hatena.ne.jp/nitoyon/20080616/as_3d_lessen1
Get Adobe Flash player
by emitsan3 21 Oct 2010
    Embed
package {
    //flash.displayパッケージとflash.geomパッケージの使用
    import flash.display.*;
    import flash.geom.Point;
    //バックグラウンドを#000にする。
    [SWF(backgroundColor="0x000000")]
   
    public class Study3d extends Sprite {
        //初期座標を指定
        private var p1:Point3D = new Point3D(    0,    0,  100);
        private var p2:Point3D = new Point3D(  100,    0,    0);
        private var p3:Point3D = new Point3D(    0,  100,    0);
        private var p4:Point3D = new Point3D(  -50,  -50,  -50);
        
        private var canvas:Sprite = new Sprite();
        public function Study3d() {
            //拡大縮小を制限+スクリーンの描画場所指定
            stage.scaleMode = "noScale";
            stage.align ="TL";
            //
            addChild(canvas);
            canvas.x = 150;
            canvas.y = 150;
            changeHandler(null);
            addEventListener("enterFrame",changeHandler);
        }
        private function changeHandler(event:Object):void{
            var pp1:Point3D = rotate(p1);
            var pp2:Point3D = rotate(p2);
            var pp3:Point3D = rotate(p3);
            var pp4:Point3D = rotate(p4);
            
            //動かすたびにクリアして描画が残らないようにする
            canvas.graphics.clear();
            
            drawPoint(pp1);
            drawPoint(pp2);
            drawPoint(pp3);
            drawPoint(pp4);
            drawLine(pp1,pp2);
            drawLine(pp1,pp3);
            drawLine(pp1,pp4);
            drawLine(pp2,pp3);
            drawLine(pp2,pp4);
            drawLine(pp3,pp4);
        }

        private function drawPoint(p:Point3D):void{
            //頂点の描画
            canvas.graphics.beginFill(0xff00ff);
            canvas.graphics.drawCircle(p.x, p.y, 10);
            canvas.graphics.endFill();
        }
        private function drawLine(p1:Point3D,p2:Point3D):void{
            //辺の描画
            canvas.graphics.lineStyle(3, 0xffff00);
            canvas.graphics.moveTo(p1.x,p1.y);
            canvas.graphics.lineTo(p2.x,p2.y);
            canvas.graphics.lineStyle();
        }
        private function rotate(_p:Point3D):Point3D{
            var ret:Point3D = new Point3D(_p.x,_p.y,_p.z);
            var p:Point;
            p = rotete2d(ret.z,ret.x,stage.mouseX /180 * Math.PI);
            ret.z = p.x;
            ret.x = p.y;
            
            p = rotete2d(ret.x,ret.y,stage.mouseY /180 * Math.PI);
            ret.x = p.x;
            ret.y = p.y;
            
            return ret;
        }
        private function rotete2d(x:Number,y:Number,rad:Number):Point{
            var p:Point = new Point();
            p.x = Math.cos(rad)*x + Math.sin(rad)*y;
            p.y = -Math.sin(rad)*x + Math.cos(rad)*y;
            return p;
        }
    }
}

class Point3D {
    public var x:Number;
    public var y:Number;
    public var z:Number;
    
    public function Point3D(_x:Number = 0, _y:Number = 0, _z:Number = 0){
        x = _x;
        y = _y;
        z = _z;
    }
}