Home > as3 | study > [Adobe MAX Japan 2009] ROXIK城戸さんのをアレをやってみる

[Adobe MAX Japan 2009] ROXIK城戸さんのをアレをやってみる

すでにたくさんのレポートが投稿されてるみたいですが、
私もAdobe MAX 2日目参加してきました!!

感想をまとめようかと思いましたが、
私と全く同じセッションを選択されているll_koba_llさんのこの記事に書いてあるまとめが、
本当に感じたこととか一緒でうまくまとめてくださってるので、

まとめるの割愛します(あんなにうまく文まとまりましぇんw)。

受けたセッションの中でも、
すぐやってみたいと思ったのが
ROXIK城戸さんが実際にコードを書いて
日本語変数でものすごくわかりやすかった
ムービークリップの座標を視点で制御するアレ。

そこで記憶とメモを基に、
サンプルを作ってみることにした。

まず準備

真ん中基準点のMC「box_mc」を作成。
セッションの時のを忠実に再現w
aの文字は動くとぶるぶるするので分解してシェイプに。
プロパティでクラスにbox_mcと設定。

サンプルたち

視点の横移動

view sample

Actionscript:
  1. var 視点={x:0,y:0,angle:0,zoom:0};
  2. var ボックスたち=[];
  3. var ポイントたち=[];
  4. ボックス追加();
  5. function ボックス追加() {
  6.     var ポイント;
  7.     var ボックス;
  8.  for (var i=0; i<20; i++) {
  9.         ポイント={x:Math.random()*700,y:Math.random()*400};
  10.         ポイントたち[i]=ポイント;
  11.   ボックス=new box_mc();
  12.         ボックスたち[i]=ボックス;
  13.         addChild(ボックス);
  14.     }
  15. }
  16. function モーション(e:Event) {
  17.     視点.x+=2;
  18. }
  19. function レンダリング(e:Event) {
  20.     for (var i=0; i<ボックスたち.length; i++) {
  21.         var ポイント=ポイントたち[i];
  22.         var ボックス=ボックスたち[i];
  23.   ボックス.x=ポイント.x-視点.x;
  24.         ボックス.y=ポイント.y-視点.y;
  25.     }
  26. }
  27. addEventListener(Event.ENTER_FRAME,モーション);
  28. addEventListener(Event.ENTER_FRAME,レンダリング);

視点の回転

view sample

Actionscript:
  1. var 視点={x:0,y:0,angle:0,zoom:0};
  2. var ボックスたち=[];
  3. var ポイントたち=[];
  4. ボックス追加();
  5. function ボックス追加() {
  6.     var ポイント;
  7.     var ボックス;
  8.  for (var i=0; i&lt;20; i++) {
  9.         ポイント={x:Math.random()*700,y:Math.random()*400};
  10.         ポイントたち[i]=ポイント;
  11.   ボックス=new box_mc();
  12.         ボックスたち[i]=ボックス;
  13.         addChild(ボックス);
  14.     }
  15. }
  16. function モーション(e:Event) {
  17.     //ポイント.x+=2;
  18.     //視点.x+=2;
  19.     視点.angle+=0.01;
  20. }
  21. function レンダリング(e:Event) {
  22.     var cos=Math.cos(視点.angle);
  23.     var sin=Math.sin(視点.angle);
  24.  for (var i=0; i<ボックスたち.length; i++) {
  25.         var ポイント=ポイントたち[i];
  26.         var ボックス=ボックスたち[i];
  27.   var 視点からの差x=ポイント.x-視点.x;
  28.         var 視点からの差y=ポイント.y-視点.y;
  29.   ボックス.x=視点からの差x*cos-視点からの差y*sin+350;
  30.         ボックス.y=視点からの差x*sin+視点からの差y*cos+200;
  31.     }
  32. }
  33. addEventListener(Event.ENTER_FRAME,モーション);
  34. addEventListener(Event.ENTER_FRAME,レンダリング);

視点のズーム&回転

view sample

Actionscript:
  1. var 視点={x:0,y:0,angle:0,zoom:0};
  2. var ボックスたち=[];
  3. var ポイントたち=[];
  4. ボックス追加();
  5. function ボックス追加() {
  6.     var ポイント;
  7.     var ボックス;
  8.  for (var i=0; i&lt;20; i++) {
  9.         ポイント={x:Math.random()*700,y:Math.random()*400};
  10.         ポイントたち[i]=ポイント;
  11.   ボックス=new box_mc();
  12.         ボックスたち[i]=ボックス;
  13.         addChild(ボックス);
  14.     }
  15. }
  16. function モーション(e:Event) {
  17.     //ポイント.x+=2;
  18.     視点.angle-=0.01;
  19.     視点.zoom+=0.01;
  20. }
  21. function レンダリング(e:Event) {
  22.     var cos=Math.cos(-視点.angle);
  23.     var sin=Math.sin(-視点.angle);
  24.  for (var i=0; i<ボックスたち.length; i++) {
  25.         var ポイント=ポイントたち[i];
  26.         var ボックス=ボックスたち[i];
  27.   var 視点からの差x=(ポイント.x-視点.x)*視点.zoom;
  28.   var 視点からの差y=(ポイント.y-視点.y)*視点.zoom;
  29.   ボックス.scaleX=ボックス.scaleY=視点.zoom;
  30.         ボックス.x=視点からの差x*cos-視点からの差y*sin+350;
  31.         ボックス.y=視点からの差x*sin+視点からの差y*cos+200;
  32.     }
  33. }
  34. addEventListener(Event.ENTER_FRAME,モーション);
  35. addEventListener(Event.ENTER_FRAME,レンダリング);

 

感想

忘れないうちにってことでとりあえずアップしてみたけど、
かなりセッションでやってたやつに近いサンプルができたかな?

自分もこのソースみてまた勉強しようw

今回の城戸さんのスライド公開ならへんかなぁ(*´ω`*)

関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://kanariia.com/blog/archives/451/trackback
Listed below are links to weblogs that reference
[Adobe MAX Japan 2009] ROXIK城戸さんのをアレをやってみる from kanariia.com blog
pingback from kanariia.com blog - [Adobe MAX Japan 2009]ROXIK城戸さんのアレとTweensyで観覧車やってみた 09-02-07 (土) 3:08

[...] Older [...]

Home > as3 | study > [Adobe MAX Japan 2009] ROXIK城戸さんのをアレをやってみる

bookmark
nakanohito

あわせて読みたい
あわせて読みたいブログパーツ

Return to page top