flag的 問(wèn)題!??!求大神解釋
我就納悶了。按代碼所示。flag放在定時(shí)器外面,最開始是true,執(zhí)行第一次動(dòng)畫時(shí),不是所有動(dòng)畫都到達(dá),于是定時(shí)器的flag被設(shè)置為false,然后該干嘛就干嘛,接下來(lái)執(zhí)行30毫秒后的第二次動(dòng)畫,于是乎,問(wèn)題來(lái)了,作為startmove內(nèi)的變量,定時(shí)器外的變量flag,已經(jīng)被上一次的動(dòng)畫設(shè)置為了false,所以,接下來(lái)的判斷語(yǔ)句flag永遠(yuǎn)是false, ?等同于if(flag)這個(gè)是不可能實(shí)現(xiàn)的??!定時(shí)器內(nèi)部也沒(méi)有設(shè)置flag為true的語(yǔ)句,動(dòng)畫講永遠(yuǎn)不停止!!真正的問(wèn)題來(lái)了:屏幕中老師這樣敲的代碼,瀏覽器中居然能實(shí)現(xiàn)動(dòng)畫?。?!求大神解釋!!
2016-04-21
你再看一看。
2016-05-10
NeoWu222同學(xué)的方法,我試了,發(fā)現(xiàn)好像flag一直是處于為1,并沒(méi)有加到3,也就是定時(shí)器還一直是開著的
2016-05-09
我覺(jué)得不要加flag也可以吧,定時(shí)器一直開著應(yīng)該沒(méi)關(guān)系吧,所有的運(yùn)動(dòng)也能同時(shí)實(shí)現(xiàn)(個(gè)人想法,不知道行不行)
2016-04-26
這個(gè)問(wèn)題和回答給力!給你們點(diǎn)個(gè)贊!
2016-04-23
不好意思json沒(méi)有獲取長(zhǎng)度的屬性或方法,所以要自己定義一個(gè)方法來(lái)獲取
把最后一個(gè)if(flag == json.length)改為if(flag == getLength(json))
方法定義代碼:
function getLength(json){
? ? var length = 0;
? ? for(var attr in json){
? ? ? ? length++;
? ? }
? ? return length;
}
2016-04-23
把flag初始為0;當(dāng)有一個(gè)屬性達(dá)到目標(biāo)值時(shí),flag自增1;當(dāng)flag 等于 json的長(zhǎng)度時(shí)再清楚定時(shí)器;
代碼如下:
function startMove(obj,json,fn){
? ? clearInterval(obj.timer);
? ? obj.timer = setInterval(function(){
? ? ? ? var flag = 0;
? ? ? ? for(var attr in json){
? ? ? ? ? ? //1.取當(dāng)前值
? ? ? ? ? ? var icur = 0;
? ? ? ? ? ? if(attr == 'opacity'){
? ? ? ? ? ? ? ? icur = Math.round(parseFloat(getStyle(obj,attr))*100);
? ? ? ? ? ? //是不是不需要parseFloat
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? icur = parseInt(getStyle(obj,attr));
? ? ? ? ? ? }
? ? ? ? ? ? //2.算速度
? ? ? ? ? ? var speed = (json[attr] - icur)/8;
? ? ? ? ? ? speed = speed>0?Math.ceil(speed):Math.floor(speed);
? ? ? ? ? ? //3.檢測(cè)停止
? ? ? ? ? ? if(icur == json[attr]){
? ? ? ? ? ? ? ? flag++;
? ? ? ? ? ? }
? ? ? ? ? ? if(attr == 'opacity'){
? ? ? ? ? ? ? ? obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';//針對(duì)IE
? ? ? ? ? ? ? ? obj.style.opacity = ?(icur + speed)/100;
? ? ? ? ? ? ? ? //針對(duì)chrome、FF
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? obj.style[attr] = icur + speed + 'px';?
? ? ? ? ? ? }
? ? ? ? ? ??
? ? ? ? ? ? if(flag == json.length){
? ? ? ? ? ? ? ? ? ? clearInterval(obj.timer);
? ? ? ? ? ? ? ? ? ? if(fn){
? ? ? ? ? ? ? ? ? ? ? ? fn();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };?
? ? },20)
? ??
}
2016-04-21
你試一下不就知道老師寫的代碼是對(duì)是錯(cuò)了。加個(gè)fn,做鏈?zhǔn)竭\(yùn)動(dòng)??存?zhǔn)竭\(yùn)動(dòng)有木有?我個(gè)人估計(jì)應(yīng)該是沒(méi)有。flag設(shè)置成false之后,就再也沒(méi)有變回true了。。。老師代碼是有bug