当光标离开屏幕时,游戏不会以Javascript结尾

阿尼什·卡萨姆(Anish Kasam)

在CodePen我的代码链接- http://codepen.io/PartTimeCoder/pen/RaMZop?editors=0010

Javascript下方,在增加功能中,有一个if命令,该命令应防止用户的鼠标离开屏幕,但此命令不起作用。同样,恰好在页面加载时它应该开始添加得分,但是相反,它仅在单击后才开始。我看不到发生这种情况的任何原因:

$(document).ready(function() {
    var canvas = document.getElementById("canvas")
    var ctx = canvas.getContext("2d")

    var height = window.innerHeight
    var width = window.innerWidth

    var mouse = {};
    var hover;

    var redDots = 2;
    var score = 0;

    canvas.width = width
    canvas.height = height

    var circle_count = 10;
    var circles = [];

    var generate = function() {
        for (var i = 0; i < circle_count; i++) {
            circles.push(new circle());
        }
    }

    setInterval(generate, 100);

    canvas.addEventListener('mousedown', mousePos, false);
    canvas.addEventListener('touch', mousePos, false);

    function mousePos(e) {
        mouse.x = e.pageX;
        mouse.y = e.pageY;
    }

    function circle() {
        this.speed = {
            x: 2.5 + Math.random() * 5,
            y: 2.5 + Math.random() * 5
        }

        this.location = {
            x: 0 - Math.random() * width,
            y: 0 - Math.random() * height
        }

        this.accel = {
            x: -1.5 + Math.random() * 3,
            y: -1.5 + Math.random() * 3
        }
        this.radius = 5 + Math.random() * 10
    }

    var draw = function() {
        ctx.globalCompositeOperation = "source-over";
        ctx.fillStyle = "black";
        ctx.fillRect(0, 0, width, height);
        ctx.globalCompositeOperation = "lighter";

        for (var i = 0; i < circles.length; i++) {
            var c = circles[i];

            ctx.beginPath();
            ctx.fillStyle = "red";
            ctx.arc(c.location.x, c.location.y, c.radius, Math.PI * 2, false);
            ctx.fill();

            c.speed.x += c.accel.x;
            c.speed.y += c.accel.y;

            c.location.x += c.speed.x;
            c.location.y += c.speed.y;

            if (mouse.x > c.location.x - c.radius && mouse.x < c.location.x + c.radius && mouse.y > c.location.y - c.radius && mouse.y < c.location.y + c.radius) {
                hover = true;
            }

            if (hover) {
                $("canvas").hide();
                $("#message").html("Sorry you lost. You finished with a score of " + score + "!");
            }
        }
    }

    setInterval(draw, 33);

    var increase = function() {
        if (mouse.x > 1 && mouse.y > 1 && !hover) {
            score++;
            redDots += 25;
            $("#score").html("Score - " + score);
            console.log(redDots);
        }

        if (mouse.x > canvas.width || mouse.y > canvas.height || mouse.x < 0 || mouse.y < 0) {
            hover = true;
        }
    }

    setInterval(increase, 1000);
});

感谢所有帮助。提前致谢!

卡比尔·沙(Kabir Shah)

您只需要一个mouseout事件侦听器,很简单!

但是首先,您需要在mousemove上跟踪鼠标,以防止通过先单击来启动游戏。我在下面有一个例子。

canvas.addEventListener('mousemove', mousePos, false);

使用它代替mousedown事件侦听器。

第二,解决停止游戏的问题mouseout这是一个例子

canvas.addEventListener('mouseout', function() {
        $("canvas").hide();
        $("#message").html("Sorry you lost. You finished with a score of " + score + "!");
    }, false);

这样做与鼠标触摸红点时是一样的,但是它将在鼠标离开画布时显示该消息。你去!

这是工作版本的示例代码笔:避免出现红点

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

离开屏幕时Android ViewPager Fragments不会被破坏

来自分类Dev

使视图居中并填充可用高度,而不会离开屏幕

来自分类Dev

使用一个对象跟踪UI元素的状态,但是离开屏幕并返回时不会保留状态

来自分类Dev

滚动大的EditText时,如何防止ActionBar离开屏幕?

来自分类Dev

斯威夫特| 滚动离开屏幕时 UIViewTable 更改复选标记

来自分类Dev

Javascript,检查元素是否已离开屏幕

来自分类Dev

防止视图离开屏幕

来自分类Dev

防止窗户离开屏幕

来自分类Dev

防止乌龟离开屏幕?

来自分类Dev

如何使用双显示器让光标离开屏幕的左侧?

来自分类Dev

导航离开屏幕,但按钮不显示

来自分类Dev

XNA防止精灵离开屏幕

来自分类Dev

确定SpriteNode何时离开屏幕?

来自分类Dev

iOS:如何防止UITextField离开屏幕

来自分类Dev

确定SpriteNode何时离开屏幕?

来自分类Dev

节点离开屏幕后丢失fps

来自分类Dev

潜水员离开屏幕

来自分类Dev

防止模式div离开屏幕

来自分类Dev

使一半的UIView离开屏幕

来自分类Dev

离开屏幕后如何销毁对象?

来自分类Dev

仅当我离开屏幕时,EditText才会失去焦点

来自分类Dev

Sprite Kit-当Sprite离开屏幕时,使用Sprite移动场景和摄像机

来自分类Dev

仅当我离开屏幕时,EditText才会失去焦点

来自分类Dev

VueJS和Laravel,在用户离开屏幕时发出发布请求

来自分类Dev

动画 UIView 离开屏幕然后从底部无休止地离开屏幕

来自分类Dev

libgdx离开屏幕和屏幕生命周期

来自分类Dev

libgdx离开屏幕和屏幕生命周期

来自分类Dev

屏幕命令-如何离开屏幕并重新启动

来自分类Dev

手写笔/笔离开屏幕时的WPF手写笔事件

Related 相关文章

热门标签

归档