Away 3Dを使ってみる(2)

前回は「超簡単なコードを書いて、感動してみる」が目的だったので、字面の通りに超簡単に書いてみた。

いくら、仕事では「PHPやらC#を使っていて、Flashは使わないのさ」と言っても、もう少しきちんとコードを書くべきではないかと思ったりする。

そこで、

【今回の目的】

・少しだけ、コードを整形する

【今回のサンプル】
ここ(http://system.logosware.com/blogimag/0515/sample/)。


【今回の結果】

何をやっているのかが、非常に見やすくなった・・・はず。

【次回の課題】

実は、ObjectContainer3Dというのを使っていない。

Objectが1個なのでSceneに直接置いているが、2個置くと、そいつらが一緒にグルグルしてしまう。

それぞれのObjectを独立して扱うためには、Scene>Container>Objectのようにしなければならないようだ。

次回は、Away3Dの本家サイトのチュートリアルをちゃんと読んで、もう少し“正しく”書くことを目標にする。

 

以下、今回の遊び。

【mxmlにコードを書くのをやめる】

どうにもMain.mxmlにコードが書かれていると、落ち着かない。
そこで今回は、App.asにすべてのコードを移した。
Main.mxmlはこれだけになった(<mx:Application>の間に書かれるものは)。

<ns1:App x="0" y="0" width="100%" height="100%" id="app"/>

【App.asを書く】
コンストラクタで、
・Viewを作る
・Cameraを置く
・Sceneを置く
・Objectを置く
・グルグル回す
を順に実行することにした。

それぞれ該当する関数を作成すれば、今後機能を追加させやすい。

コードは以下。

package
{
import mx.core.UIComponent;

import away3d.containers.View3D;
import away3d.containers.Scene3D;
import away3d.cameras.Camera3D;
import away3d.primitives.Sphere;

import flash.events.*;

public class App extends UIComponent
{
// Away3D view
internal var view:View3D = null;
// Away3D camera
internal var camera:Camera3D = null;
// Away3D scene
internal var scene:Scene3D = null;

public function App()
{
super();
initVIew();
initCamera();
initScene();
initObject();
}

private function initVIew():void {
view = new View3D();
view.x = 400;
view.y = 200;

addEventListener(Event.ENTER_FRAME, onEnterFrame);
addChild(view);
}

private function initCamera():void {
camera = new Camera3D();
camera.zoom = 100;
camera.focus = 10;
camera.z = -1000;
view.camera = camera;
}

private function initScene():void {
scene = new Scene3D();
view.scene = scene;
}

private function initObject():void {
var sphere:Sphere = new Sphere();
view.scene.addChild(sphere);
}

private function onEnterFrame( event: Event ):void  {
scene.rotationY = scene.rotationY+5;
scene.rotationX = scene.rotationX+10;
view.render();
}
}
}
The following two tabs change content below.

ロゴスウェア

ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。

Comments are closed.