我的需求是:讓網(wǎng)頁的背景隨機(jī)漸變
我的解決辦法是,初始時(shí)隨機(jī)獲取一個(gè)rgb值,然后通過一個(gè)方法,每次調(diào)用時(shí)使rgb中的一個(gè)值+1或-1。這就需要防止rgb值超出255的上限,但是現(xiàn)在的問題是當(dāng)rgb值達(dá)到255后,數(shù)值還在上漲,并沒有被限制住,但我覺得我的邏輯并沒有問題。以r值的獲取為例:
var r = parseInt(Math.random() * 160 + 80, 10); //r的值
var rCount = 0; //r的變化計(jì)數(shù)
var rIncrease = Math.random() > 0.5; //r值變化的方向(增大或減?。? var top = 255; //r的上限
var buttom = 40; //r的下限
var chooseColor; //隨機(jī)數(shù)。決定改變r(jià)gb中的哪個(gè)值
var countToChange = 60; //多少次后改變增加或減少的方向
function getColor() {
chooseColor = Math.random();
//隨機(jī)數(shù)大于0.6666,那么改變r(jià)的值;大于0.3333,那么改變g的值;否則改變b的值
if (chooseColor > 0.6666) { //r值的獲取
if (rCount++ > countToChange) {
rIncrease = Math.random() > 0.5;
rCount = 0;
}
if (r <= buttom) {
rIncrease = true;
rCount = 0;
} else if (r >= top) {//這個(gè)地方,如果數(shù)值超出255后,應(yīng)該執(zhí)行下面else部分的
rIncrease = false;
rCount = 0;
}
if (rIncrease) {
r = r + 1;
} else {
r = r - 1;
}
} else if (chooseColor > 0.3333) {
//g值的獲取
}else{
//b值的獲取
}
以上邏輯,在IE中運(yùn)行是沒有發(fā)現(xiàn)問題的,但是在chrome和Firefox中就不行了,不知道為何?
測試頁面見:
代碼的測試頁面
這是一個(gè)純黑色的背景,右鍵點(diǎn)擊“隨機(jī)漸變”后即可看到頁面的顏色隨時(shí)間變化。
左上角的數(shù)值就是頁面的rgb值,大約過幾十秒之后就有數(shù)值超出255的范圍了。
注:有人說我寫的太亂了,我就添加了一些注釋。其實(shí)并不亂,因?yàn)榇_實(shí)需要這些邏輯,只是跟當(dāng)前的問題不大相關(guān)。
其實(shí)問題代碼就幾行:
if (r <= buttom) {
rIncrease = true;
rCount = 0;
} else if (r >= top) {//這個(gè)地方,如果數(shù)值超出top(255)后,應(yīng)該執(zhí)行下面else部分的
rIncrease = false;
rCount = 0;
}
if (rIncrease) {
r = r + 1;
} else { //那么應(yīng)該執(zhí)行else部分,r 不應(yīng)該繼續(xù)增大
r = r - 1;
}
上面的代碼中,如果 r 大于255,那么應(yīng)該進(jìn)入else if (r >= top)后面的語句塊執(zhí)行,執(zhí)行 rIncrease = false;
那么下面的if語句應(yīng)該進(jìn)入else語句塊,執(zhí)行 r = r - 1; 所以 r 不應(yīng)該再繼續(xù)增大了的?,F(xiàn)在的問題就是 r 值還在增大!
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。