我正在尝试将鼠标事件转换为滑动事件(用于触摸屏),但经过数小时和数小时后,我无法弄清楚如何操作。
这是我的代码:
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
非常感谢!
答案 0 :(得分: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,这不是滑动,而是......拖动。我不清楚你究竟想要完成什么。
如果您确实想要进行多点触控,只需将MouseEvents
更改为TouchEvents
即可。 Mouse_Down相当于TOUCH_BEGIN,鼠标向上等同于TOUCH_END。