我使用八哥框架,以模擬的onclick方法我用這個代碼:八哥的onClick方法
if(e.getTouch(this).phase == TouchPhase.ENDED){
//Some code
}
這是確定的,但它也激發,如果鼠標不在按鈕了,但是我d只有當它結束時纔會發送。有什麼辦法可以做到這一點? 感謝
代碼,「本」是一個Sprite,這是有點無關緊要吼聲
我使用八哥框架,以模擬的onclick方法我用這個代碼:八哥的onClick方法
if(e.getTouch(this).phase == TouchPhase.ENDED){
//Some code
}
這是確定的,但它也激發,如果鼠標不在按鈕了,但是我d只有當它結束時纔會發送。有什麼辦法可以做到這一點? 感謝
代碼,「本」是一個Sprite,這是有點無關緊要吼聲
根據the docs如果目標是目前觸摸的TouchEvent
類的interactsWith(target:DisplayObject)
方法應返回true。我沒有辦法驗證這一理論,但下面應該工作:
if (e.getTouch(this).phase == TouchPhase.ENDED && e.interactsWith(this)) {
//The touch ended on the same DisplayObject as it originated at
}
這個怎麼樣的想法:
if (e.getTouch(this).phase == TouchPhase.ENDED) {
if (this.hitTestPoint(stage.mouseX, stage.mouseY, true)) {
// Some code
}
}
最簡單的方法是使用一個starling.display.Button做。他們派遣TRIGGERED事件,這基本上是你想要的。在「不那麼容易」的方法是,讓您的觸摸軌跡,通過複製什麼是按鈕實際上做:
private function onTouch(event:TouchEvent):void
{
var touch:Touch = event.getTouch(this);
if (!mEnabled || touch == null) return;
if (touch.phase == TouchPhase.BEGAN && !mIsDown)
{
//equivalent to MOUSE_DOWN
mIsDown = true;
}
else if (touch.phase == TouchPhase.MOVED && mIsDown)
{
// reset button when user dragged too far away after pushing
var buttonRect:Rectangle = getBounds(stage);
if (touch.globalX < buttonRect.x - MAX_DRAG_DIST ||
touch.globalY < buttonRect.y - MAX_DRAG_DIST ||
touch.globalX > buttonRect.x + buttonRect.width + MAX_DRAG_DIST ||
touch.globalY > buttonRect.y + buttonRect.height + MAX_DRAG_DIST)
{
mIsDown = false;
}
}
else if (touch.phase == TouchPhase.ENDED && mIsDown)
{
mIsDown = false;
//this is a click
dispatchEventWith(Event.TRIGGERED, true);
}
}
you'l不得不改變buttonRect代碼,以反映你的精靈的外形,但基本上你在這裏是。
您也可以在mouse_down部分中添加超時,因此只會檢查「quickclicks」。但如果你走這麼遠,我會推薦使用Gestouch。 – Boris
這根本不起作用,謝謝你的祝福 –