package { import alternativa.engine3d.materials.DevMaterial; import alternativa.engine3d.primitives.Box; import alternativa.types.Point3D; import jp.clockmaker.alternativa3d.BasicTemplate; /** * @author Yasu (clockmaker.jp) */ public class SimpleDemo extends BasicTemplate { // ロゴを埋め込み [Embed(source = 'imgs/alternativa3d_big.png')] private const LOGO_IMAGE:Class; // 直方体 private var box:Box; /** * 初期化されたときに実行されるイベントです。 * 初期化時に実行したい処理をオーバーライドして記述します。 */ override protected function atInit():void { // マテリアルを作成します var material:DevMaterial = new DevMaterial(); // プリミティブを作成します box = new Box(600, 600, 600); box.cloneMaterialToAllSurfaces(material); // 3Dシーンのルートに追加します scene.root.addChild(box); // ロゴを表示(ライセンスの関係) addChild(new LOGO_IMAGE); } /** * Event.ENTER_FRAME 時に実行されるレンダリングのイベントです。 * レンダリング前に実行したい処理をオーバーライドして記述します。 */ override protected function atPreRender():void { // 立方体を回転させます (角度はラジアン) box.rotationY += 1 * Math.PI / 180; // マウスがステージの高さ何%の位置にあるか算出 var rateY:Number = mouseY / stage.stageHeight; // カメラの高さの座標を調整 // イージングの公式 対象の値 += (目標値 - 現在の値) * 減速率 camera.y += ( - 1000 * rateY - camera.y) * 0.1; // カメラの座標を中央に向かせる cameraController.lookAt(new Point3D()); } } }