我的代码可以工作(不会失败),但它做的不是正确的事情。
每当我想生成一个新的“块”时,我都会调用" generate“函数,每次调用时都会向函数传递一个新的数字。它可以很好地生成块,但它不会生成我希望它生成的内容。
我希望它生成一个空间,一个跳跃,一个幻灯片,或者一个间隙,如果上一代是一个空间。但是,如果上一代不是一个空间,那么就生成一个空间。它不会这样做的。它有时会一个接一个地产生2个间隙,2个跳跃,或者2个幻灯片,我不知道为什么…???
下面是我的代码:
var ptg = 'space'; // what was previously generated to top
var wtgt; // what is currently being generated to top
var chunktogenerateto = 0;
function generate(a){
    chunktogenerateto = a;
    var rand1 = Math.floor(Math.random()*100) + 1;
    if(ptg == 'space' && rand1 <= 25){
        wtgt = 'space';
    }
    else if(ptg == 'space' && rand1 <= 50 && rand1 > 25){
        wtgt = 'jump';
    }
    else if(ptg == 'space' && rand1 <= 75 && rand1 > 50){
        wtgt = 'slide';
    }
    else if(ptg == 'space' && rand1 > 75){
        wtgt = 'gap';
    }
    else{
        wtgt = 'space';
    }
    ptg = wtgt;
    topGen(wtgt);
}
function topGen(g){
    document.getElementById('t' + chunktogenerateto).setAttribute('src','images/terrain/t' + g + '.png');
}我希望不是打字错误..。帮助!
对“生成”的调用来自于:
var chunkpos = new Array();
chunkpos[0] = -100;
chunkpos[1] = 0;
chunkpos[2] = 100;
chunkpos[3] = 200;
chunkpos[4] = 300;
chunkpos[5] = 400;
chunkpos[6] = 500;
chunkpos[7] = 600;
chunkpos[8] = 700;
chunkpos[9] = 800;
chunkpos[10] = 900;
chunkpos[11] = 1000;
var temppos = new Array();
var time1;
var millis1;
var time2;
var millis2;
var millis3;
var firstreset = true;
var pos;
var poschange;
function moveLevel(){
    if(firstreset == true){
        resetTime();
    }
    var time2 = new Date();
    var millis2 = time2.getTime();
    var millis3 = millis2 - millis1;
    poschange = Math.floor(millis3 / 5);
    for(i = 0; i < chunkpos.length; i++){
        temppos[i] = chunkpos[i] - poschange;
        if(temppos[i] <= -150){
            generate(i);
            temppos[i] += 1200;
        }
        pos = temppos[i];
        document.getElementById('chunk' + i).setAttribute('style','left: ' + pos + 'px;');
    }
}
function resetTime(){
    time1 = new Date();
    millis1 = time1.getTime();
    if(firstreset != true){
        for(i = 0; i < chunkpos.length; i++){
            chunkpos[i] = temppos[i];
        }
    }
    firstreset = false;
    setTimeout('resetTime()',1000);
}对"moveLevel“的调用来自于:
window.onload = function(){
    if(test = 'runnable')
    {
        gameLoop();
    }
    else
    {
        document.getElementById('gm').innerHTML = (gm + 'Failed to run game.');
    }
}
function gameLoop(){
    if(currentscreen == 'playing'){
        moveLevel();
    }
    setTimeout('gameLoop()',0);
}下面是一个包含所有代码的压缩文件的下载链接:ParkourFreak.zip我遇到问题的代码在scripts/generation.js下。主游戏页面(在这里可以看到生成的是index.html。
发布于 2012-06-15 00:19:46
您确定要递增chunktogenerateto吗
在当前代码中,它似乎停留在0,这是在你没有显示的代码段中吗?
编辑:哦,这是函数的参数。尝试记录该变量,也许这就是问题所在?
https://stackoverflow.com/questions/11037045
复制相似问题