当玩家触摸触摸屏的2倍时,使项目消失

时间:2013-09-04 12:25:39

标签: actionscript-3

我正在尝试为触摸屏制作Flash游戏(android)。我的播放器可以将一些物品放入库存中。 然后,玩家可以点击其库存中的项目并将其拖动到他想要的位置。 但是,当玩家双击屏幕时,我想让屏幕上的项目消失。 目前,我的玩家只需点击一下即可。 (而且令人沮丧的是,如果他没有将物品放入正确的空间并希望通过再次拖动物品来纠正它,那么它会因为点击错误的空间而消失)。

我知道我必须更改我的“removeDraggedItem”功能,但是我无法弄清楚如何告诉它我只想在播放器上双击屏幕(而不是一次点击)时才能使用此功能< / p>

这是我的代码。如果有人有想法......

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;
        }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

stageRef.doubleClickEnabled=true; 

然后使用:

stageRef.addEventListener(MouseEvent.DOUBLE_CLICK,removeDraggedItem);