Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用setinterval时股票代码会被卡住_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 为什么在使用setinterval时股票代码会被卡住

Javascript 为什么在使用setinterval时股票代码会被卡住,javascript,jquery,html,css,Javascript,Jquery,Html,Css,小提琴: JavaScript: function init() { var ctx; var turn = []; var xV = [-1, 0, 1, 0]; var yV = [0, -1, 0, 1]; var queue = []; var elements = 1; var map = [];

小提琴:

JavaScript:

function init() {

            var ctx;
            var turn = [];

            var xV = [-1, 0, 1, 0];
            var yV = [0, -1, 0, 1];
            var queue = [];

            var elements = 1;
            var map = [];

            var MR = Math.random;

            var X = 5 + (MR() * (100 - 10)) | 0;
            var Y = 5 + (MR() * (30 - 10)) | 0;

            var direction = MR() * 3 | 0;

            var interval = 0;

            var score = 0;
            var inc_score = 50;

            var sum = 0,
                easy = 0;

            var i, dir;



            var win = window;
            var doc = document;

            var canvas = doc.createElement('canvas');
            var setInt = win.setInterval;
            var clInt = win.clearInterval;

            for (i = 0; i < 100; i++) {
                map[i] = [];
            }

            canvas.setAttribute('width', 100 * 10);
            canvas.setAttribute('height', 30 * 10);

            ctx = canvas.getContext('2d');

            var div = document.getElementById("pnlGame");
            div.appendChild(canvas);
            //doc.body.appendChild(canvas);

            function placeFood() {

                var x, y;

                do {
                    x = MR() * 100 | 0;
                    y = MR() * 30 | 0;
                } while (map[x][y]);

                map[x][y] = 1;
                ctx.strokeRect(x * 10 + 1, y * 10 + 1, 10 - 2, 10 - 2);
            }
            placeFood();


            function clock() {

                if (easy) {
                    X = (X + 100) % 100;
                    Y = (Y + 30) % 30;
                }

                --inc_score;

                if (turn.length) {
                    dir = turn.pop();
                    if ((dir % 2) !== (direction % 2)) {
                        direction = dir;
                    }
                }

                if (

                    (easy || (0 <= X && 0 <= Y && X < 100 && Y < 30))


                    && 2 !== map[X][Y]) {

                    if (1 === map[X][Y]) {
                        score += Math.max(5, inc_score);
                        inc_score = 50;
                        placeFood();
                        elements++;
                    }

                    ctx.fillRect(X * 10, Y * 10, 10 - 1, 10 - 1);
                    map[X][Y] = 2;
                    queue.unshift([X, Y]);

                    X += xV[direction];
                    Y += yV[direction];

                    if (elements < queue.length) {
                        dir = queue.pop()

                        map[dir[0]][dir[1]] = 0;
                        ctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);
                    }

                } else if (!turn.length) {
                    if (confirm("You lost! Play again? Your Score is " + score)) {

                        ctx.clearRect(0, 0, 450, 300);
                        queue = [];

                        elements = 1;
                        map = [];

                        X = 5 + (MR() * (100 - 10)) | 0;
                        Y = 5 + (MR() * (30 - 10)) | 0;

                        direction = MR() * 3 | 0;

                        score = 0;
                        inc_score = 50;

                        for (i = 0; i < 100; i++) {
                            map[i] = [];
                        }

                        placeFood();
                    } else {
                        clInt(interval);
                        //window.location = "YourTasks.aspx";
                    }
                }

            }

            interval = setInt(clock, 120);

            doc.onkeydown = function (e) {

                var code = e.keyCode - 37;

                /*
                 * 0: left
                 * 1: up
                 * 2: right
                 * 3: down
                 **/
                if (0 <= code && code < 4 && code !== turn[0]) {
                    turn.unshift(code);
                } else if (-5 == code) {

                    if (interval) {
                        clInt(interval);
                        interval = 0;
                    } else {
                        interval = setInt(clock, 120);
                    }

                } else { // O.o
                    dir = sum + code;
                    if (dir == 44 || dir == 94 || dir == 126 || dir == 171) {
                        sum += code
                    } else if (dir === 218) easy = 1;
                }
            }
        }
函数init(){
var-ctx;
var回合=[];
var xV=[-1,0,1,0];
var-yV=[0,-1,0,1];
变量队列=[];
var元素=1;
var-map=[];
var MR=数学随机;
var X=5+(MR()*(100-10))| 0;
var Y=5+(MR()*(30-10))|0;
var方向=MR()*3 | 0;
var区间=0;
var得分=0;
var inc_得分=50;
var总和=0,
easy=0;
变量i,dir;
var win=窗口;
var doc=单据;
var canvas=doc.createElement('canvas');
var setInt=win.setInterval;
var clInt=win.clearInterval;
对于(i=0;i<100;i++){
map[i]=[];
}
canvas.setAttribute('width',100*10);
canvas.setAttribute('height',30*10);
ctx=canvas.getContext('2d');
var div=document.getElementById(“pnlGame”);
子类(画布);
//doc.body.appendChild(画布);
功能食品{
变量x,y;
做{
x=MR()*100 | 0;
y=MR()*30 | 0;
}while(map[x][y]);
map[x][y]=1;
ctx.strokeRect(x*10+1,y*10+1,10-2,10-2);
}
placeFood();
功能时钟(){
如果(容易){
X=(X+100)%100;
Y=(Y+30)%30;
}
--inc_分数;
如果(转弯长度){
dir=turn.pop();
如果((方向%2)!=(方向%2)){
方向=方向;
}
}
如果(

(简单| |(0您已将画布的宽度设置为1000(
canvas.setAttribute('width',100*10);

在你清理它的地方,你只清理了一个450宽的盒子

ctx.clearRect(0, 0, 450, 300);
您需要将此更改为

ctx.clearRect(0, 0, 1000, 300);

你的提琴不起作用每次我输入javascript并保存JSFIDLE站点时,都会清除所有内容。因此,我用HTML、CSS和JQuery创建了提琴,并将JS发布在这里。:)简单地问一个问题,我正在尝试添加一个处理“OK”的按钮从确认警报中。我从DIV中删除了画布并读取了它,但它一直在追加。我希望通过画布外的按钮处理“确定”以重新启动游戏。如果不介意重新加载页面,可以使用
location.reload();
我希望避免重新加载页面,而只是开始游戏的新副本:/I我不太明白您所说的“处理确定以重新启动游戏,但从外部的按钮…”。你可以在小提琴上添加一些东西,并添加一条关于应该发生什么的注释吗?顺便说一句,如果你只是想重新启动,你可以执行clearRect并再次调用init()。在你的init中,你可以执行
doc.createElement('canvas'))
只需检查画布是否已经存在-如果画布确实非常跳过CreateElement,那么如果用户单击“确定”,游戏将重新启动。我想防止确认警报在一段时间后变得烦人。相反,在标签中显示分数,并有一个播放按钮,用户可以按该按钮再次玩游戏。