0

我正在尝试将我的鼠标事件转换为滑动事件(用于触摸屏),但是经过数小时和数小时后,我不知道该怎么做。

这是我的代码:

public function DraggedItem(stageRef:Stage, grabbedItem:Object){

            this.stageRef = stageRef;
            toolbar = Engine.toolbar;
            usableItems = Engine.usableItems;
            inv = Engine.inv;
            puzzle = Engine.puzzle;
            player = Engine.player;
            linesData = Engine.linesData;

            inv.draggingItem = true;
            Mouse.hide();

            itemRef = getDefinitionByName(grabbedItem.displayName.toLowerCase()+"Proper");
            draggedItem = new itemRef;
            stageRef.addChild(draggedItem);
            draggedItem.displayName = grabbedItem.displayName;
            if (grabbedItem.lookTag)
                draggedItem.lookTag = grabbedItem.lookTag;
            draggedItem.x = mouseX + x;
            draggedItem.y = mouseY + y;
            draggedItem.scaleX = itemScale;
            draggedItem.scaleY = itemScale;
            stageRef.addEventListener(MouseEvent.MOUSE_MOVE, dragItem, false, 0, true);
            stageRef.addEventListener(Event.ENTER_FRAME, itemHitTest, false, 0, true);
            draggedItem.addEventListener(MouseEvent.CLICK, itemClick, false, 0, true);

        }

        private function dragItem(e:MouseEvent):void{
            draggedItem.x = mouseX + x;
            draggedItem.y = mouseY + y;
        } 

在我的电脑上,当我点击我的库存并选择一个项目时,我可以将它拖到屏幕上我想要的位置(项目变成鼠标,鼠标被隐藏)。

所以我正在尝试将其转换为触摸屏。我尝试使用“event.stageX”而不是“mouseX”,但它没有用。我尝试用 TransformGestureEvent 替换 mouseEvent,但没有成功。

当我点击库存中的物品时,该物品停留在屏幕的中间角落,我无法移动它。(它发生在我使用 adobe Air for Android 导出时,如果我在 swf 中导出它工作得很好)。

你知道我该怎么做吗?

这是问题的视频:uploaded.net/file/lkwqsgm7

非常感谢 !

4

1 回答 1

0

您可以尝试使用闪光灯的内置手势。

Multitouch.inputMode = MultitouchInputMode.GESTURE; //you need to enable gestures

stageRef.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe); 
function onSwipe (e:TransformGestureEvent):void{
    if (e.offsetX == 1) { 
        //swiped right
        draggedItem.x += someValue;
    }else{
        //swiped left
        draggedItem.x -= someValue;
    }
}

请记住,滑动事件仅用于一般滑动,如果您实际上只是将对象从位置 A 拖动到位置 B,这不是滑动,而是...拖动。我不清楚你实际上想要完成什么。

如果您确实想做多点触控,只需将您的更改MouseEventsTouchEvents. Mouse_Down 相当于 TOUCH_BEGIN,而 mouse up 相当于 TOUCH_END。

于 2013-06-17T17:12:19.973 回答