最終回の今回は,
マウスボタンを放す操作はTouchPhase.ENDED
前回の第62回
まず,
第62回表2 TouchPhaseクラスの定数とタッチスクリーンおよびマウスの操作
TouchPhaseクラスの定数 | 操作 | |
---|---|---|
タッチスクリーン | マウス | |
BEGAN | 画面に触れる | マウスボタンを押す |
ENDED | 画面から指を離す | マウスボタンを放す |
HOVER | - | マウスポインタを重ねる |
MOVED | 画面に触れた指を動かす | ボタンは押したままマウスを動かす |
STATIONARY | 画面に触れたまま動かさない | ボタンを押したままマウスは動かさない |
インスタンスをクリックしたら,
private var angle:Number = 15 * Math.PI / 180;
private function mouseOperated(eventObject:TouchEvent):void {
// var myTouch:Touch = eventObject.getTouch(instance, TouchPhase.MOVED);
var myTouch:Touch = eventObject.getTouch(instance, TouchPhase.ENDED);
if (myTouch) {
/*
var nMoveX:Number = myTouch.globalX - myTouch.previousGlobalX;
var nMoveY:Number = myTouch.globalY - myTouch.previousGlobalY;
instance.x += nMoveX;
instance.y += nMoveY;
*/
instance.rotation += angle;
}
}
試してみると,
マウスボタンがインスタンス上で放されたのかを調べる
マウスボタンをどこで放しても,
DisplayObjectオブジェクト.hitTest(Pointオブジェクト, マウス操作対象に限定)
第1引数には,
そこで,
スクリプト1 Starlingフレームワークでインスタンスのクリックを扱う
// ActionScript 3.0クラス定義ファイル: MySprite.as
package {
import flash.display.BitmapData;
import starling.display.Sprite;
import starling.display.Image;
import starling.textures.Texture;
import starling.events.Event;
import starling.events.TouchEvent;
import starling.events.Touch;
import starling.events.TouchPhase;
import flash.geom.Point;
public class MySprite extends Sprite{
private var instance:Image;
private var angle:Number = 15 * Math.PI / 180;
public function MySprite() {
addEventListener(Event.ADDED_TO_STAGE, initialize);
}
private function initialize(eventObject:Event):void {
var myBitmapData:BitmapData = new Pen();
var myTexture:Texture = Texture.fromBitmapData(myBitmapData);
instance = new Image(myTexture);
addChild(instance);
instance.addEventListener(TouchEvent.TOUCH, mouseOperated);
instance.x = stage.stageWidth / 2;
instance.y = stage.stageHeight / 2;
instance.pivotX = instance.width / 2;
instance.pivotY = instance.height / 2;
}
private function mouseOperated(eventObject:TouchEvent):void {
var myTouch:Touch = eventObject.getTouch(instance, TouchPhase.ENDED);
if (myTouch) {
var mousePoint:Point = myTouch.getLocation(instance);
if (instance.hitTest(mousePoint, true)) {
instance.rotation += angle;
}
}
}
}
}
これで,