記錄一下寫這個遊戲時遇到的問題。數組
需求:按鍵按下時,speed在當前值的基礎上減小300,speed -= 300
存在問題:按鍵一直按住不放時,speed就會一直持續執行自減運算
解決方式:設置一個flag,增長if條件。按鍵按下,flag值就改變,當keyup事件觸發時,flag纔會變回原值。this
//keydown時觸發 Game.prototype.speedUp = function(){ if(!this.speedFlag){ this.speed -= 300;//加速,減小掉落的時間間隔 if(this.speed<50){ this.speed = 50; } this.speedFlag = true; } console.log('speedUp'+this.speed); } //keyup時觸發 that.speed += 300; if(that.speed>(500 - (that.level -1)*50)){ that.speed = 500 - (that.level -1)*50; } that.speedFlag=false;
需求:按下向下的按鍵時,下落速度會加快,即setInterval的運行間隔會減少
存在問題:不管是在setInterval外部仍是內部更改speed值,都只能在clearInterval以後,才能生效,沒法知足需求
解決方式:將setInterval更改成setTimeout,在setTimeout裏調用自身,造成遞歸,便可實現需求prototype
需求:沒有方塊存在時,直接下落到界面底部。有方塊阻擋時,停在方塊上面。
存在問題:如何記錄已有方塊的位置
解決方式:獲取每個方塊的top和left位置,拼接成字符串,存入數組blockArea。每一次掉落時,都檢測每個方塊的下一個位置是否已經存在在blockArea中,若是沒有,就容許下落。不然中止下落,生成下一個方塊。code