![あたごんとFlash-as3isolib](https://stat.ameba.jp/user_images/20110206/23/atagoon/26/5c/g/t02200077_0432015211031623281.gif?caw=800)
さて、ActionScript3.0(as3)を使ってアイソメトリックな世界を簡単に作れるライブラリー「as3isolib」の解説4回目。
概要やインストール方法については解説第一回目 を見てみてください。
今回は、「IsoView」クラスについて説明します。
IsoViewクラスはIsoSceneを使って作ったグリッド世界の表示の仕方をサポートしてくれるクラスです。
3Dソフトなどでおなじみの、カメラのような役割をもっているようです。
まずは、IsoViewクラスを使って、おなじみの箱を表示してみましょう。
package
{
import as3isolib.display.IsoView;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.scene.IsoScene;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class IsoViewSample extends Sprite
{
public function IsoViewSample()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var scene:IsoScene = new IsoScene();
var isoView:IsoView = new IsoView();
// IsoSceneをIsoViewに追加
isoView.addScene( scene );
// IsoViewをdisplayListに追加
addChild( isoView );
// 箱を追加
var box:IsoBox = new IsoBox();
scene.addChild( box );
// 分かりやすいようにグリッドも追加
var grid:IsoGrid = new IsoGrid();
scene.addChild( grid );
// IsoSceneではなく、IsoViewでレンダリング(IsoSceneでやっても問題はありません)
isoView.render( true );
}
}
}
![あたごんとFlash-IsoViewサンプル](https://stat.ameba.jp/user_images/20110210/07/atagoon/11/a1/p/o0411026511038242520.png?caw=800)
自動的に枠線がついて、IsoSceneを真ん中に表示してくれます。
特にサイズを指定しない場合は表示領域は400 x 250となります。
今までは、IsoSceneのrenderメソッドを呼んでいたところを、IsoViewのrenderを呼んでいます。
IsoViewでは複数のsceneに対応しているので、IsoViewに複数のIsoSceneをaddSceneした後、IsoViewのrenderを呼ぶことで、まとめて全てのシーンをレンダリングすることが出来ます。
ちなみに、IsoScene単独で表示させると左上の原点を中心に表示されましたよね。
参考までIsoSceneだけの場合のソースとスクリーンショットは次の通り。
package
{
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.scene.IsoScene;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class IsoViewSample2 extends Sprite
{
public function IsoViewSample2()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var scene:IsoScene = new IsoScene();
// IsoSceneをdisplayListに追加
scene.hostContainer = this;
// 箱を追加
var box:IsoBox = new IsoBox();
scene.addChild( box );
// 分かりやすいようにグリッドも追加
var grid:IsoGrid = new IsoGrid();
scene.addChild( grid );
// レンダリング
scene.render( true );
}
}
}
![あたごんとFlash-IsoSceneサンプル](https://stat.ameba.jp/user_images/20110210/07/atagoon/b5/3e/p/o0248017811038242519.png?caw=800)
おもいっきり見切れていますが左上が原点なので合っています。
それでは、IsoViewが備えている表示サポート機能について纏めて説明しちゃいます。
とはいえまだ発展途上なのか主要なメソッドは2つだけ。
・zoom ( zoomRate:Number ):void
文字通りズームさせます。(clickでズームイン、Alt+Clickでズームアウトします)
// ソース末尾に追加
addEventListener( MouseEvent.CLICK, _onClick );
function _onClick( e:MouseEvent ):void
{
if ( e.altKey )
{
isoView.zoom( isoView.currentZoom - 0.1 );
}
else
{
isoView.zoom( isoView.currentZoom + 0.1 );
}
・pan ( px:Number, py:Number ):void
IsoViewをカメラに見立てて、「カメラを」どれだけ動かすか。という移動量を指定します。
目的座標じゃなくて、「移動量」です。
どう使うのか、ちょっとナゾです。
最後にIsoViewの表示状態を変えるプロパティを紹介します。
・setSize( width:Number, height:Number):void
表示するシーンのサイズを指定できます。デフォルトは400 x 250です。
・set showBorder( value:Boolean ):void
falseをセットすると枠線を消せます。
・set clipContent( value:Boolean ):void
setSizeで指定したサイズにマスクされて表示されますが、clipContentにflaseを指定するとマスクが解除されます。
IsoViewの説明はこれでおしまいです!
次回は、自分で用意した好きな画像をas3isolib上で表示させる方法について説明します。