重いけど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&amp;tid=13&amp;type=shop"
    resultFormat="e4x" result="onResult()"/>
<mx:Canvas id="myCanvas" width="100%" height="100%"
    horizontalScrollPolicy="off" verticalScrollPolicy="off" />
</mx:Application>