我正在尝试为触摸屏(android)制作一个flash游戏。我的玩家可以拿一些物品放在他的库存中。然后,玩家可以点击库存中的物品,并将其拖动到场景中他想要的位置。但是,当玩家双击屏幕时,我想让项目从屏幕上消失。目前,我的球员只需要轻击一个。(这很令人沮丧,因为如果他没有把项目放在正确的空间里,并想通过再次拖动项目来纠正它,它就会消失,因为他点击了错误的空间)。
我知道我必须更改我的"removeDraggedItem"功能,但我不知道如何告诉它,只有当玩家双击屏幕(而不仅仅是点击一次)时,我才想要这个功能
这是我的密码。如果有人有想法。。。。
public function itemClick(e:Event):void{
inv.draggingItem = false;
var nameofMC:String;
var tempMC;
var draggedName:String = draggedItem.displayName;
if (draggedItem.lookTag)
draggedName = draggedName + draggedItem.lookTag;
if (newFriend){
nameofMC = "action_"+draggedName+"_"+newFriend.displayName;
//trace ("Looking for "+nameofMC);
try {
tempMC = getDefinitionByName(nameofMC);
//trace ("MC found.");
removeDraggedItem();
if (speech)
speech.dispatchEvent(new Event("stopTalking"));
tempMC = new tempMC;
playerAction = new PlayerAction(stageRef, draggedItem, newFriend, tempMC, false);
}
catch(e){
//trace ("No MC found. Checking for dialog option...");
try {
var tempData = linesData.dialog[newFriend.displayName].useObject[draggedItem.displayName];
if (tempData != "" && tempData != null){
//trace ("Dialog option found.");
removeDraggedItem();
alignPlayer();
if (speech)
speech.dispatchEvent(new Event("stopTalking"));
dialog = new Dialog(stageRef, newFriend, draggedItem, false);
}
}
catch(e){
//trace ("No dialog option found. Defaulting to player line.");
alignPlayer();
if (speech)
speech.dispatchEvent(new Event("stopTalking"));
var actionName:String = "Use_"+newFriend.displayName;
if (newFriend.lookTag)
actionName = actionName+newFriend.lookTag;
speech = new Speech(stageRef, draggedItem, actionName);
}
}
} else {
removeDraggedItem();
}
}
private function removeDraggedItem():void{
stageRef.removeEventListener(MouseEvent.MOUSE_MOVE, dragItem);
stageRef.removeEventListener(Event.ENTER_FRAME, itemHitTest);
draggedItem.removeEventListener(MouseEvent.CLICK, itemClick);
stageRef.removeChild(draggedItem);
toolbar.useText.text = "";
if (stageRef.contains(this))
stageRef.removeChild(this);
Mouse.show();
Engine.playerControl = true;
}
在第一次点击时,将变量(如screenTap)设置为true,并将计时器设置为双击中两次点击之间允许的最大毫秒数。当计时器到期时,重置屏幕点击为false
然后,在您的点击屏幕处理程序中,检查screenTap是否为true。如果是,请移除该项目。
尝试使用MouseEvent.DOUBLE_CLICK而不是MouseEvent.CLICK.
确保为您的舞台启用双击:
stageRef.doubleClickEnabled=true;
然后使用:
stageRef.addEventListener(MouseEvent.DOUBLE_CLICK,removeDraggedItem);