重いけどFP10でPaperVision3Dみたいなサンプルを作ってみました。
重いけどFP10でPaperVision3Dみたいなサンプルを作ってみました。
こんな感じ。
http://moeten.info/flex/20081016_fp10Test/bin-release/test02.html
重いよ!
友達の力を借りてz座標がなんとか出たのでなんちゃってzソートをしてます。
ソースはこちら
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" width="1000" height="1000" backgroundGradientColors="[0xcccccc,0x000000]" > <mx:Script> <![CDATA[ import mx.effects.Blur; import mx.controls.Image; private function init():void{ hts.send(); } private var r:int = 200; private var canvasArr:Array = new Array(); private function onResult():void{ for( var i:int = 0 ; i < hts.lastResult.item.length() ; i ++ ){ var image:Image = new Image(); image.width = 40; image.height = 40; image.x = (i%3)*30 + r-image.width; image.x = r; image.source = hts.lastResult.item[i].image.image1; image.rotationY = 90; var canvas:Canvas = new Canvas(); canvas.width = r; canvas.height = image.height; canvas.addChild( image ); // canvas.rotationX = Math.random() * 360; canvas.rotationY = Math.random() * 360; canvas.rotationZ = Math.random() * 360; canvas.x = 400; canvas.y = 400; // canvas.x = this.width /2; // canvas.y = this.height/2; canvas.horizontalScrollPolicy = "off"; canvasArr[i] = canvas; myCanvas.addChild( canvas ); } var timer:Timer = new Timer( 16 ); timer.addEventListener(TimerEvent.TIMER , myTimer ); timer.start(); } private function myTimer(e:Event):void{ var tmp:Array = new Array(); var len:int = canvasArr.length var thetaX:Number; var thetaY:Number; var z:Number; var canvas:Canvas; var image:Image; var alpha:Number; var blur:BlurFilter = new BlurFilter(); for( var i:int = 0 ; i< len ; i ++ ){ canvas = canvasArr[i] as Canvas; canvas.rotationY += 1; thetaX = canvas.rotationX * Math.PI / 180; thetaY = canvas.rotationY * Math.PI / 180; // var thetaZ:Number = canvas.rotationZ * Math.PI / 180; // var x:Number = 400 * Math.cos(thetaZ) * Math.cos(thetaX) * Math.cos(thetaY); // var y:Number = 400 * Math.sin(thetaZ) * Math.cos(thetaX) * Math.sin(thetaY); z = r * Math.cos(thetaX) * Math.sin(thetaY); image = canvas.getChildAt(0) as Image; // trace( "x=>" + int(x) + " y=>" + int(y) + " z=>" + int(z) ); alpha = ( r + z )/(r*2); image.alpha = alpha + 0.1; blur.blurX =(1-alpha)*10; blur.blurY =(1-alpha)*10; image.filters = [ blur ]; tmp[i] = {"z": z , "canvas" : canvas }; } tmp.sortOn("z",Array.NUMERIC); for( var i:int = 0 ; i < len; i ++ ){ myCanvas.setChildIndex(tmp[i].canvas , i ); } } ]]> </mx:Script> <mx:HTTPService id="hts" url="http://moeten.info/maidcafe/?m=api&tid=13&type=shop" resultFormat="e4x" result="onResult()"/> <mx:Canvas id="myCanvas" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" /> </mx:Application>