サイトトップ

Director Flash 書籍 業務内容 プロフィール
Starling framework for Stage3D
Stage3D

Starlingフレームワークの基本とマウスイベント


01 Starlingフレームワークの基本

2次元の描画やアニメーションを、これまでのActionScript 3.0と同じスタイルで扱えるのがStarlingフレームワーク。つまり、Stage3DとActionScript 3.0標準のスクリプティングとを橋渡しする通訳の役目を果たす。

ADC OnAir「Stage3Dを学ぼう!Flashで2Dコンテンツ」(5月23日水曜日録画)

スクリーンショット(2012-05-24 19.37.13) 説明した内容は、別途ADCに記事として間もなく公開予定。サンプルファイルは先にアップロードした。

Starlingフレームワークは、EventDispatcherクラスを皮切りに、それを継承して表示リストに連なるクラスがstarlingパッケージにActionScript 3.0定義済みクラスと同じ名前で定義されている。そのため、Starlingフレームワークのスクリプトをフレームアクションに書こうとすると、ActionScript 3.0定義済みクラスとの重複が起こってしまう。

F-site「Starlingフレームワークのスクリプトをフレームアクションに書いてみる


02 Starlingフレームワークにおけるインスタンスのクリックとドラッグ&ドロップ

マウスのインタラクティブな操作は、DisplayObject.touchイベントで扱われる。そして、どのような操作をマウスでしたのかは、イベントリスナーが引数に受取るTouchEventオブジェクトからTouchEvent.getTouch()メソッドによりTouchオブジェクトを得て、そのTouch.phaseプロパティで調べる。

ドラッグしたときのTouch.phaseプロパティの値は定数TouchPhase.MOVED。マウスボタンを押したままの操作を意味するので、このプロパティだけでドラッグ&ドロップは扱える(図001)。

Starlingフレームワークでインスタンスをドラッグ&ドロップする

図001■Starlingフレームワークでインスタンスをドラッグする
図001

ところがクリックの場合、定数TouchPhase.ENDEDのマウス操作はボタンを放した位置がインスタンス上かどうかを問わない。そのため、StarlingフレームワークのDisplayObject.hitTest()メソッドで、マウスポインタの座標がインスタンスに重なっているかどうか調べなければならない。

Starlingフレームワークでインスタンスをクリックする
Starlingフレームワークで表示オブジェクトと座標の重なりを調べる


03 ビットマップのアルファも確かめてクリックを判定する

StarlingフレームワークのDisplayObject.hitTest()メソッドは、インスタンスとの重なりを矩形領域で判定してしまう(図002)。しかし、ActionScript 3.0定義済みのBitmapData.hitTest()メソッドを使えば、座標がビットマップのイメージ上にあるかどうか調べられる。

図002■ポインタがイメージ上になくても矩形領域内ならクリックできてしまう
図002

Starlingフレームワークでビットマップ上のクリックを検知する



作成者: 野中文雄
作成日: 2012年5月29日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.