AS3 / AIR检查TouchPhase.ENDED是否在对象上方 [英] AS3/AIR check if TouchPhase.ENDED is over object

查看:114
本文介绍了AS3 / AIR检查TouchPhase.ENDED是否在对象上方的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个需要滑出面板和触摸事件的iOS / Android应用。

I am developing an iOS/Android app that requires slide out panels and touch events. Is it possible to get if a user touches an object but then releases off the object?

var touch:Touch = e.getTouch(this);
if(touch.phase == TouchPhase.BEGAN)
{
    trace("Tab toggle begin");
}
if(touch.phase == TouchPhase.ENDED)
{
    //If not over object do something           
}


推荐答案

是的。

此代码应为您提供帮助。它可能超出了您的需求,但可以工作。 :)
来自 Adob​​e网站:

This code should help you. It may be more than you need but it works. :) Taken from Adobe website:

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 
var mySprite:Sprite = new Sprite(); 
mySprite.graphics.beginFill(0x336699); 
mySprite.graphics.drawRect(0,0,40,40); 
addChild(mySprite); 
var myTextField:TextField = new TextField(); 
addChild(myTextField); 
myTextField.width = 200; 
myTextField.height = 20; 
var touchMoveID:int = 0; 

mySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); 
function onTouchBegin(event:TouchEvent) { 
    if(touchMoveID != 0) { 
        myTextField.text = "already moving. ignoring new touch";     
        return; 
    } 
    touchMoveID = event.touchPointID; 

    myTextField.text = "touch begin" + event.touchPointID; 
    stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
    stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
} 
function onTouchMove(event:TouchEvent) { 
    if(event.touchPointID != touchMoveID) { 
        myTextField.text = "ignoring unrelated touch"; 
        return; 
    } 
    mySprite.x = event.stageX; 
    mySprite.y = event.stageY; 
    myTextField.text = "touch move" + event.touchPointID; 
} 
function onTouchEnd(event:TouchEvent) { 
    if(event.touchPointID != touchMoveID) { 
        myTextField.text = "ignoring unrelated touch end"; 
        return; 
    } 
    touchMoveID = 0; 
    stage.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
    stage.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
    myTextField.text = "touch end" + event.touchPointID; 
}

这篇关于AS3 / AIR检查TouchPhase.ENDED是否在对象上方的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆