0

我正在尝试为触摸屏 (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;
        }
4

2 回答 2

0

在第一次点击时,将一个变量(例如 screenTap)设置为 true,并设置一个 Timer,以确保您在两次点击之间允许的最大毫秒数。当 Timer 到期时,将 screenTap 重置为 false。
然后,在您的点击屏幕处理程序中,检查 screenTap 是否为真。如果是这样,请删除该项目。

于 2013-09-04T15:29:53.107 回答
0

尝试使用 MouseEvent.DOUBLE_CLICK 而不是 MouseEvent.CLICK。

确保为您的舞台启用了双击:

stageRef.doubleClickEnabled=true; 

然后使用:

stageRef.addEventListener(MouseEvent.DOUBLE_CLICK,removeDraggedItem);
于 2013-09-04T17:10:22.380 回答