亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于刪除小球的pop()方法還有不理解的地方

pop()方法一次只能刪除最后一個數組元素,而刷新率是每50ms一次,相當于一秒是刷新20次,也就是說一秒最多只能刪除20個小球,但是每一秒產生新的小球數量卻大于20,為什么實際上沒有積壓更多的小球呢,求解?。?!

正在回答

2 回答

刪除的是以整個數組為目標,當滿足超出屏幕的小球就會被刪除! balls.push(aBall);

//循環小球

for(var i = 0;i < digit[num].length;i++){

for(var j = 0;j <digit[num][i].length;j++){

if(digit[num][i][j] == 1){

var aBall = {

//坐標位置x

x:x+j*2*(cR+1)+(cR+1),

//坐標位置y

y:y+i*2*(cR+1)+(cR+1),

//加速度

g:1.5 + Math.random(),

//x方向速度

vx:Math.pow(-1,Math.ceil(Math.random()*1000)) * 4,

vy:-5,

color:colors[Math.floor(Math.random()*colors.length)]

}

balls.push(aBall);

}

}

}


//在屏幕中小球的數量

var cnt = 0;

for(var i = 0; i < balls.length;i++){

if(balls[i].x + cR > 0 && balls[i].x - cR < window_width){

balls[cnt++] = balls[i];

}

}

//超出屏幕小球的數量

while(balls.length > Math.min(300,cnt)){

balls.pop();

}


0 回復 有任何疑惑可以回復我~
#1

暴走大熊 提問者

你雖然沒有正面回答我的問題,但我通過你的回答突然想明白了,原來while語句的每一次刪除動作是跟著每一次的for循環遍歷走的,就是每往數組中加入一個小球,while語句就會檢測并執行一次。 我之前的理解是while是跟著50ms的刷新走的,理解偏差了。 謝謝耐你的心回答!
2016-04-19 回復 有任何疑惑可以回復我~
#2

000339043 回復 暴走大熊 提問者

可是他的while沒包含在for語句里面啊
2016-05-11 回復 有任何疑惑可以回復我~
#3

dl_嘛哩嘛哩哄 回復 暴走大熊 提問者

同問,為什么while是跟著for走,while沒有包括在for里面?????
2016-05-14 回復 有任何疑惑可以回復我~
#4

暴走大熊 提問者 回復 dl_嘛哩嘛哩哄

每次的刷新,首先帶來for語句的遍歷循環每一個小球,把所有沒有超出屏幕范圍的球放置小球數組的前面(前cnt個),直到把所有球都遍歷完畢,然后再執行while,while是一直循環往復的檢測這個數組,只要檢測到一次小球數量大于cnt(或300),就刪除數組最后一個,直到小球數量不大于cnt(或300)為止,才會結束while循環。因為這兩個循環都是在一刷新中搞定的,所以與50ms沒有什么關系。
2016-05-14 回復 有任何疑惑可以回復我~
#5

暴走大熊 提問者 回復 000339043

同上回復
2016-05-14 回復 有任何疑惑可以回復我~
#6

暴走大熊 提問者 回復 dl_嘛哩嘛哩哄

所以并不是for跟著while走,他們是相互獨立的,之前解釋錯誤,見諒
2016-05-14 回復 有任何疑惑可以回復我~
#7

飛過那座山 回復 暴走大熊 提問者

每次不止往數組里加入一個小球。而且電腦的運行速度是很快的,while循環能pop數組里出界的所有小球。
2016-06-30 回復 有任何疑惑可以回復我~
#8

西風瀟瀟 回復 暴走大熊 提問者

還是一樣啊。pop()方法不是刪除最后的小球嗎,也就是最新的小球,
2016-07-11 回復 有任何疑惑可以回復我~
#9

魚字頭上一把刀 回復 暴走大熊 提問者

while是自己走的吧~也可以改寫成for循環呀~拿到cnt之后,他就只和balls.length有關。 刪除不是因為加了幾個球,而是因為球的位置發生了改變吧
2016-10-16 回復 有任何疑惑可以回復我~
查看6條回復

其實我覺得直接改變balls的長度會更好!

balls.length?=?Math.min(300,?cnt);


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于刪除小球的pop()方法還有不理解的地方

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號