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

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

哪位大佬指點一下,如何讓星星隨機放置的時候,不出現畫布邊緣外面。

我自己的思路是
???? 判斷 x 和 y 的數值,可以判斷出,會不會出大于或小于畫布的寬高,之后星星的其他點都設置好了,如果直接改出畫布的點的數值,會出現問題。
????我打算在在畫星星for循環里進行判斷,如果出現了 超出邊界的星星,就提跳出方法,畫下一個,這個就不畫了,不過這樣不好,減少了星星的繪制數量。想知道不減少星星數量繪制出有星星,并且不超出邊界

正在回答

2 回答

有必要這么復雜么,直接控制x,y的值在正常顯示范圍內不就好了,可以根據大圓大R來計算x,y具體的范圍值,比如x的范圍值是? 0+R 到 canvas.width-R,y值的范圍也根據這個算出來就可以了,具體部分代碼是:

for(var?i?=?0?;?i<110;?i++){
????var?r?=?Math.random()*10?+?10;
????
????var?x?=?Math.max(Math.random()?*?canvas.width,r);
????x?=?Math.min(x,canvas.width?-?r);
????var?y?=?Math.max(Math.random()?*?canvas.height,r);
????y?=?Math.min(y,canvas.height-r);

????var?a?=?Math.random()?*?360;
????wjx(content,x,y,r,r/2.0,"#ff7036","red",0,a);
}

?

3 回復 有任何疑惑可以回復我~
//我是通過求出原點,判斷最頂端和最低端是否超過邊緣,若超出,則i--?重新循環這次星星的繪制;
for?(var?j?=?0;?j?<?200;?j++)?{
????let?R=Math.random()*15+5;
????let?x=Math.random()?*?canvas.width;//偏移量
????let?y=Math.random()?*?canvas.height;//偏移量
????????????
????var?x_=Math.cos(90?/?180?*?Math.PI)?*?R?+?x;//求出原點坐標
????var?y_=-Math.sin(90?/?180?*?Math.PI)?*?R?+?y?+?R;//求出原點坐標
????if(x_-R<0||x_+R>canvas.width){
????????j--;?
????}else?if?(y_-R<0||y_+?R>canvas.height){
????????j--;?
????}else{
????????drawStart(c?,?R?,?R/2.0?,?x?,?y);
????}
}


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

舉報

0/150
提交
取消

哪位大佬指點一下,如何讓星星隨機放置的時候,不出現畫布邊緣外面。

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

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

幫助反饋 APP下載

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

公眾號

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