【问题标题】:Trigger double click function, and holding on the last click AS3触发双击功能,并按住最后一次点击 AS3
【发布时间】:2015-03-20 16:56:42
【问题描述】:

我有一个游戏,我的角色向右或向左移动,并带有一个 MOUSE_DOWN 事件监听器。角色跳跃,带有 DOUBLE_CLICK 事件监听器。 我想要这样,如果玩家双击并按住最后一次点击,那么角色就会跳跃和移动。 就像现在一样,跳跃功能只有在玩家双击并释放鼠标时才有效。 这有可能吗??

所以只是为了让它更清楚一点。当玩家双击并释放时,角色会跳到他站立的地方。这已经奏效了。 但是如果玩家双击并按住,那么跳跃功能和移动功能都应该被触发。

提前致谢!

包{

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;


public class Main extends MovieClip {

    public var character:Character = new Character;
    public var world:World = new World;

    var moveRight:Boolean = false;
    var moveLeft:Boolean = false;
    var jumping:Boolean = false;

    var moveSpeed:Number = 1;
    var orgMoveSpeed:Number = 1;
    var accSpeed:Number = 0.6;
    var maxMoveSpeed:Number = 20;
    var gravity:Number = 1;
    var orgGrav:Number = 1;
    var gravAcc:Number = 0.6
    var maxFallSpeed:Number = 15;
    var jumpPower:Number = 15;
    var jumpGrav:Number = 0.6;
    var orgJumpPower:Number =15;
    public function Main() {
        // constructor code
        addChild(world)
        addChild(character)

        stage.doubleClickEnabled=true;
        stage.addEventListener(MouseEvent.MOUSE_DOWN, moveFunction)
        stage.addEventListener(MouseEvent.MOUSE_UP, stopMoveFunction)
        stage.addEventListener(MouseEvent.DOUBLE_CLICK, jumpFunction)
        addEventListener(Event.ENTER_FRAME, moveWorld)
    }
    function moveFunction(m:MouseEvent)
    {
    //If the player clicks on right side of the screen, the player moves right.. etc.
        if(mouseX>stage.stageWidth/2)
        {
            moveRight = true
        }else{
            moveLeft = true
        }
    }
    function stopMoveFunction(m:MouseEvent)
    {
        moveLeft = false;
        moveRight = false;
    }

    function jumpFunction(m:MouseEvent)
    {
        if(hitGroundCol)
        {
            jumping=true;
        }
    }

    function moveWorld(e:Event)
    {

//_______MOVE FUNCTION _____________________
        if (moveRight)
        {
            world.x -= moveSpeed
            moveSpeed += accSpeed
            character.OddSlugViz.rotation += moveSpeed
        }else if (moveLeft)
        {
            world.x += moveSpeed
            moveSpeed += accSpeed
            character.OddSlugViz.rotation -= moveSpeed
        }else{
            moveSpeed = orgMoveSpeed;
        }

        if (moveSpeed>maxMoveSpeed)
        {
            moveSpeed = maxMoveSpeed;
        }
//_________Jump_________________

        if (jumping)
        {
            world.y += jumpPower
            jumpPower -= jumpGrav
            if (jumpPower<1)
            {
                jumping = false;
                jumpPower = orgJumpPower;
            }
        }
    }
}

}

【问题讨论】:

    标签: actionscript-3 flash mouse double-click


    【解决方案1】:

    一个简单的解决方案是甚至跟踪单击并启动计时器或超时,如果在时间限制内发生另一个鼠标按下事件(100 毫秒?你必须测试看看你想要它有多自然) , 然后执行事件.. 这样您就可以跟踪鼠标被按住,并且它是双击,而不使用双击事件。

    【讨论】:

    • 太棒了!只是一件事,我忘了补充说它是一个适用于android项目的空气,但是你认为我仍然可以使用这种方法吗??
    • 我认为它应该可以工作,是的,可能需要更长的超时或计时器,因为我认为双击比点击两次更快。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2010-11-16
    相关资源
    最近更新 更多