取りあえず、flash player10 astroの練習をしてみました。
標準で3Dの機能がついたので、ひとまずちょっとしたサンプルを作成しました.
http://www.hi-farm.net/astro/main.swf
処理がかるくなるのかな?と思ってたのですが、Macのアクティビティモニタで見てみると、
今までの様にPapervision3Dを作った時と、重さがあまりかわらない気がしたんですけど、どうなんでしょう?
ソースはこれ。
main.as—————————————-
package
{
import flash.events.*;
import flash.display.*;
import flash.ui.*;
{
private var container:Sprite;
private var rect_vc:Vector.<Rect>;
private var len:uint = 6;
private var radius:Number = 100;
private var container_vc:Vector.<Sprite>;
private var innerLen:uint=15;
public function main ()
{
init();
}
private function init():void
{
container_vc = new Vector.<Sprite>();
container = new Sprite();
container.x = 150;
container.y = 10;
addChild(container);
rect_vc = new Vector.<Rect>();
for( var i:uint=0; i < innerLen; i++ )
{
container_vc[i] = genCircle(0, 30*i+10,15*i);
container_vc[i].rotationY = 30 * i;
}
addEventListener(Event.ENTER_FRAME, enterframeHandler);
}
private function genCircle(cX:Number, cY:Number, ra:Number):Sprite
{
var innerContainer:Sprite = new Sprite();
for( var i:uint=0; i < len; i++ )
{
var rect:Rect = new Rect(0xffffff, 10, 10);
innerContainer.addChild(rect);
var rad:Number = (Math.PI/180) * ( (360/len)*i);
rect.x = (Math.cos(rad) – Math.sin(rad)) * ra;
rect.y = 0;
rect.z = (Math.sin(rad) + Math.cos(rad)) * ra;
rect_vc[i] = rect;
}
innerContainer.x = 0;
innerContainer.y = 0;
innerContainer.x = cX;
innerContainer.y = cY;
container.addChild(innerContainer);
return innerContainer;
}
private function enterframeHandler(e:Event):void
{
for( var i:uint=0; i < innerLen; i++ )
{
container_vc[i].rotationY++;
}
}
}
}
Rect.as—————————————-
package
{
import flash.display.*;
import flash.events.*;
public class Rect extends Sprite
{
function Rect(col:uint, w:Number, h:Number)
{
this.graphics.beginFill( 0xffffff, 1);
this.graphics.drawRect( 0, 0, w, h);
this.graphics.endFill();
}
}
}
2008年6月1日02:36
html に embed して wmode=\”gpu\” にすると GPU 使うモードになって軽くなるよ!
でも GPU のついてない MacBook とかだと Flash Player がクラッシュするらしい。。。(まあ、まだベータだしね)