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

3Dのテスト1

3Dの実験ですね。
つたないスクリプトで申し訳ないですね。
Get Adobe Flash player
by UJI_UJI 30 Dec 2008
    Embed
// write as3 code here..
//3Dの実験ですね。
//つたないスクリプトで申し訳ないですね。

package
{
import flash.display.*;
import flash.events.*;
import flash.ui.Mouse;
import flash.utils.*;
import flash.geom.*;

         import net.hires.debug.Stats;  
	
[SWF(width="465", height="465", backgroundColor="0x000000", frameRate="60")]  	

public class conv extends MovieClip
{
public var centerPt:Point = new Point(stage.stageWidth/2,stage.stageHeight/2);

public var handle:Number = 180;

public var paraAry:Array = [
[ 0,0,handle,0],
[ 1,handle*Math.cos(  0*Math.PI/180)*Math.cos(30*Math.PI/180), handle*Math.sin(30*Math.PI/180),handle*Math.sin(  0*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 2,handle*Math.cos( 72*Math.PI/180)*Math.cos(30*Math.PI/180), handle*Math.sin(30*Math.PI/180),handle*Math.sin( 72*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 3,handle*Math.cos(144*Math.PI/180)*Math.cos(30*Math.PI/180), handle*Math.sin(30*Math.PI/180),handle*Math.sin(144*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 4,handle*Math.cos(216*Math.PI/180)*Math.cos(30*Math.PI/180), handle*Math.sin(30*Math.PI/180),handle*Math.sin(216*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 5,handle*Math.cos(288*Math.PI/180)*Math.cos(30*Math.PI/180), handle*Math.sin(30*Math.PI/180),handle*Math.sin(288*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 6,handle*Math.cos( 36*Math.PI/180)*Math.cos(30*Math.PI/180),-handle*Math.sin(30*Math.PI/180),handle*Math.sin( 36*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 7,handle*Math.cos(108*Math.PI/180)*Math.cos(30*Math.PI/180),-handle*Math.sin(30*Math.PI/180),handle*Math.sin(108*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 8,handle*Math.cos(180*Math.PI/180)*Math.cos(30*Math.PI/180),-handle*Math.sin(30*Math.PI/180),handle*Math.sin(180*Math.PI/180)*Math.cos(30*Math.PI/180)],
[ 9,handle*Math.cos(252*Math.PI/180)*Math.cos(30*Math.PI/180),-handle*Math.sin(30*Math.PI/180),handle*Math.sin(252*Math.PI/180)*Math.cos(30*Math.PI/180)],
[10,handle*Math.cos(324*Math.PI/180)*Math.cos(30*Math.PI/180),-handle*Math.sin(30*Math.PI/180),handle*Math.sin(324*Math.PI/180)*Math.cos(30*Math.PI/180)],
[11,0,-handle,0]
];
public var sortAry:Array = new Array
public var accessAry:Array = new Array();
		
public var roteX:Number;
public var roteY:Number;
public var roteZ:Number;
		
		
public var cx:Number;
public var cy:Number;
public var cz:Number;
public var screenLength:Number=100;
public var scale:Number;
		
public var oldX:Number;
public var oldY:Number;
public var MOUSE_MC_DEPTH:Number=200;

public var renderTimer:Timer = new Timer(30);

		
        public function conv():void
        { 
                this.addChild(new Stats());  
			
                cx=0;
                cy=0;
                cz=1000;
                scale=10;
			
	        stage.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
	        function onDown(evt:MouseEvent):void
	        {
	        	oldX = stage.mouseX;
	        	oldY = stage.mouseY;
	        	renderTimer.start();
	        }
	        stage.addEventListener(MouseEvent.MOUSE_UP,onUp);
	        function onUp(evt:MouseEvent):void
	        {
	        	renderTimer.stop();
	        	renderTimer.reset();
	        }
	        renderTimer.addEventListener(TimerEvent.TIMER,onRender,false,0,true);
			
			
	        for(var i:int = 0;i<paraAry.length;i++)
	        {
	        	var apex:node = new node(paraAry[i][0],paraAry[i][1],paraAry[i][2],paraAry[i][3]);
	        	accessAry.push(apex);
                        accessAry[i].addChild(accessAry[i].sp);
	        	addChild(accessAry[i]);
	        }
				
	                setPositionObject()
	        	setSortObject();
			
	        }
	        public function onRender(evt:TimerEvent):void
	        {
		        var nextX:Number=stage.mouseX;
		        var nextY:Number=stage.mouseY;
		        var rotX:Number=-Math.PI*(nextY-oldY)/400;
		        var rotY:Number=Math.PI*(nextX-oldX)/400;
		        rotateX(rotX);
		        rotateY(rotY);
		        oldX=stage.mouseX;
		        oldY=stage.mouseY;
		
		        sortAry = new Array();
		        for(var i:int = 0;i<accessAry.length;i++)
		        {
		        	var size:Number=50;
                	        var sX:Number=getScreenX(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
                    	        var sY:Number=getScreenY(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
                	        var sSize:Number=getScreenSize(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
                    	        accessAry[i].myDrawing(sX+centerPt.x,sY+centerPt.y,sSize);
		        	sortAry.push(accessAry[i].myZ);
		        }
			
		        sortAry = sortAry.sort(Array.NUMERIC|Array.RETURNINDEXEDARRAY|Array.DESCENDING);
		        var aryLength:int = sortAry.length;
		        for(var i:int = 0;i<aryLength;i++)
		        {
		        	var z:int = sortAry[i];
		        	setChildIndex(accessAry[z],0);
		        }
	        }
		
	        public function setSortObject():void
	        {
	        	sortAry = sortAry.sort(Array.NUMERIC|Array.RETURNINDEXEDARRAY|Array.DESCENDING);
	        	var aryLength:int = sortAry.length;
	        	for(var i:int = 0;i<aryLength;i++)
		        {
	           		var z:int = sortAry[i];
	        		setChildIndex(accessAry[z],0);
	        	}
	        }
		
	        public function setPositionObject():void
                {
		        sortAry = new Array();
		        for(var i:int = 0;i<accessAry.length;i++)
		        {
		        	var size:Number=50;
                            	var sX:Number=getScreenX(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
            	                var sY:Number=getScreenY(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
            	                var sSize:Number=getScreenSize(accessAry[i].myX,accessAry[i].myY,accessAry[i].myZ,size);
            	                accessAry[i].myDrawing(sX+centerPt.x,sY+centerPt.y,sSize);
		        	sortAry.push(accessAry[i].myZ);

	        	}
	        }
		
	        public function getScreenX(camX:Number,camY:Number,camZ:Number,camSize:Number):Number
	        {
    	                return scale*(camX-cx)*screenLength/(camZ-cz);
    	        }
	
	        public function getScreenY(camX:Number,camY:Number,camZ:Number,camSize:Number):Number
	        {
	                return scale*(camY-cy)*screenLength/(camZ-cz);
	        }
	
	        public function getScreenSize(camX:Number,camY:Number,camZ:Number,camSize:Number):Number
	        {
	                return Math.abs(Math.floor((scale*camSize*screenLength/(camZ-cz))))/100;
	        }
		
		
		
	        public function rotateX(theta:Number):void
	        {
        	        for(var i:int=0;i<accessAry.length;i++)
		        {
        	                var old_x:Number=accessAry[i].myX;
        	                var old_y:Number=accessAry[i].myY;
        	                var old_z:Number=accessAry[i].myZ;
        	                var new_x:Number=old_x;
		        	var new_y:Number=old_y*Math.cos(theta)+old_z*Math.sin(theta);
		        	var new_z:Number=-old_y*Math.sin(theta)+old_z*Math.cos(theta);
		        	setPointPosition(i,new_x,new_y,new_z);
		        }
	        }

	        public function rotateY(theta:Number):void
	        {
		        for(var i:int=0;i<accessAry.length;i++)
		        {
		        	var old_x:Number=accessAry[i].myX;
        	                var old_y:Number=accessAry[i].myY;
        	                var old_z:Number=accessAry[i].myZ;
		        	var new_x:Number=old_x*Math.cos(theta)-old_z*Math.sin(theta);
		        	var new_y:Number=old_y;
		        	var new_z:Number=old_x*Math.sin(theta)+old_z*Math.cos(theta);
			        setPointPosition(i,new_x,new_y,new_z);
		    }
	    }

	        public function rotateZ(theta:Number):void
	        {
		        for(var i:int=0;i<accessAry.length;i++)
		        {
			        var old_x:Number=accessAry[i].myX;
            	                var old_y:Number=accessAry[i].myY;
        	                var old_z:Number=accessAry[i].myZ;
		        	var new_x:Number=old_x*Math.cos(theta)+old_y*Math.sin(theta);
		        	var new_y:Number=-old_x*Math.sin(theta)+old_y*Math.cos(theta);
		        	var new_z:Number=old_z;
		        	setPointPosition(i,new_x,new_y,new_z);
		        }
	        }
		
	        public function setPointPosition(index:Number,setX:Number,setY:Number,setZ:Number):void
	        {
    	        	accessAry[index].myX=setX;
   	        	accessAry[index].myY=setY;
		        accessAry[index].myZ=setZ;
  	        }
       
        }	
}


import flash.display.*;

class node extends Sprite
	{
		
		public var sp:Sprite = new Sprite();
		public var spG:Graphics = sp.graphics;
		
		public var myNum:Number;
		public var myX:Number;
		public var myY:Number;
		public var myZ:Number;
		
		public function node(Num:Number,X:Number,Y:Number,Z:Number):void
		{
			
			myNum = Num;
			myX = X;
			myY = Y;
			myZ = Z;
			
			spG.lineStyle(1,0xffffff,1);
			spG.beginFill(0xffffff,1);
			spG.drawCircle(-25,-25,50);
			spG.endFill();
                        addChild(sp);
			
		}
		public function myDrawing(drawX:Number,drawY:Number,drawSize:Number):void
		{
			this.x = drawX;
			this.y = drawY;
                        this.alpha = drawSize;
			this.scaleX = drawSize;
			this.scaleY = this.scaleX;
		}
	}