Adobe MAX Japan 2009 城戸さんのデモ再現(5)
---------------------------------------------------------*
*
* Adobe MAX Japan 2009 城戸さんのデモ再現
*
* プレゼン映像はこちら
* http://jp.max.adobe.com/player.html?2-10
*
*---------------------------------------------------------
// forked from littlepad's Adobe MAX Japan 2009 城戸さんのデモ再現(4)
// forked from littlepad's Adobe MAX Japan 2009 城戸さんのデモ再現(3)
// forked from littlepad's Adobe MAX Japan 2009 城戸さんのデモ再現(2)
// forked from littlepad's Adobe MAX Japan 2009 城戸さんのデモ再現(1)
/*---------------------------------------------------------*
*
* Adobe MAX Japan 2009 城戸さんのデモ再現
*
* プレゼン映像はこちら
* http://jp.max.adobe.com/player.html?2-10
*
*---------------------------------------------------------*/
package {
import flash.display.*;
import flash.events.*;
public class Test extends Sprite {
private var 視点:Object;
//private var ポイント:Object;
//private var ボックス:Box;
private var ボックスたち:Array = new Array();
private var ポイントたち:Array = new Array();
public function Test(){
init();
}
private function init():void {
視点 = { x:0, y:0, angle:0, zoom:0 };
ボックス追加();
addEventListener(Event.ENTER_FRAME, モーション);
addEventListener(Event.ENTER_FRAME, レンダリング);
}
private function ボックス追加():void {
for ( var i:uint = 0; i < 20; i++ ) {
var ポイント:Object = { x:Math.random()*stage.stageWidth - stage.stageWidth/2, y:Math.random()*stage.stageHeight - stage.stageHeight/2 };
ポイントたち[i] = ポイント;
var ボックス:Box = new Box();
ボックスたち[i] = ボックス;
addChild(ボックス);
}
}
private function モーション(e:Event):void {
//ポイント.x += 2;
視点.angle += 0.01;
視点.zoom += 0.01;
}
private function レンダリング(e:Event):void {
var cos:Number = Math.cos(-視点.angle);
var sin:Number = Math.sin(-視点.angle);
for ( var i:uint = 0; i < ボックスたち.length; i++ ) {
var ポイント:Object = ポイントたち[i];
var ボックス:Box = ボックスたち[i];
var 視点からの差:Object = { x:( ポイント.x - 視点.x )*視点.zoom, y:( ポイント.y - 視点.y )*視点.zoom };
ボックス.scaleX = ボックス.scaleY = 視点.zoom;
ボックス.x = cos * 視点からの差.x - sin * 視点からの差.y + stage.stageWidth/2;
ボックス.y = sin * 視点からの差.x + cos * 視点からの差.y + stage.stageHeight/2;
}
}
}
}
import flash.display.*;
import flash.text.*;
class Box extends Sprite {
public function Box() {
var rect:Shape=new Shape();
rect.graphics.beginFill(0x000000);
rect.graphics.lineStyle(0);
rect.graphics.drawRect(0,0,30,30);
rect.graphics.endFill();
rect.x = -rect.width/2;
rect.y = -rect.height/2;
addChild(rect);
var tFld:TextField = new TextField();
var tFmt:TextFormat = new TextFormat();
tFmt.color = 0xFFFFFF;
tFmt.size = 24;
tFmt.align = TextFormatAlign.CENTER;
tFld.defaultTextFormat = tFmt;
tFld.width = rect.width;
tFld.text = "A";
tFld.height = tFld.textHeight;
tFld.x = -tFld.width/2;
tFld.y = -tFld.height/2;
addChild(tFld);
}
}