第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

flag = false 是什么時(shí)候被重置為true的?

照著視頻的代碼實(shí)踐了一次,發(fā)現(xiàn)沒有把flag重置為true的代碼,但是最后確確實(shí)實(shí)是清除了定時(shí)器,那么,flag是什么時(shí)候被重置的呢?

另外,看到有人回答,flag應(yīng)該被聲明在定時(shí)器里面,這個(gè)是不對(duì)的。如果聲明在定時(shí)器里面,那么就會(huì)出現(xiàn)視頻中聲明flag之前的bug。

求大神解答一下。


上面的問(wèn)題好像有點(diǎn)不清晰哈,下面說(shuō)清楚一點(diǎn)。

flag=true是放在定時(shí)器外面的,對(duì)吧?定時(shí)器里面是沒有代碼把flag重置為true的,當(dāng)?shù)谝淮未a執(zhí)行到

if(icur!=json[attr]){
????flag=false;
}


這里的時(shí)候,flag就被賦值為false了,之后都沒有給flag賦值為true。

那么最后是怎么判斷到flag=true的呢?


在這里就很不明白,因?yàn)闆]有把flag重置為true的話,其實(shí)是沒辦法執(zhí)行

if(flag){
????clearInterval(obj.timer);
????if(fn){
????????fn();
?????}
?}

和之后的fn函數(shù)的。


正在回答

12 回答

看完了樓主寫的,完全沒有毛病,教程代碼確實(shí)有BUG,不過(guò)既然因?yàn)?speed?=?(json[attr]?-?icur)/8 語(yǔ)句, 當(dāng) speed 為0時(shí)就能自己停止,為什么教程還要加一大堆檢測(cè)停止的代碼,我發(fā)現(xiàn)把那一大段去掉之后功能正常啊,不知道我有沒有想錯(cuò)?

0 回復(fù) 有任何疑惑可以回復(fù)我~

把flag放外面,最后速度為0,動(dòng)畫是停止了,但是代碼一直在運(yùn)行,無(wú)限循環(huán)的運(yùn)行,if(flag)永遠(yuǎn)到不了

0 回復(fù) 有任何疑惑可以回復(fù)我~

沒仔細(xì)看,原來(lái)你的代碼已經(jīng)解決了。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

一、var flag = true; 是放在定時(shí)器外面的。

二、每次啟動(dòng)定時(shí)器強(qiáng)制?flag = true。

三、在for循環(huán)外面,再次判斷flag。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

六月ovo 提問(wèn)者

上面我貼出的代碼是對(duì)的,flag是要放在定時(shí)器里面的,每次都需要重置定時(shí)器flag=true,視頻教程里面是有bug 的。那個(gè)for循環(huán)的內(nèi)容僅僅包含動(dòng)畫的執(zhí)行代碼,不包含結(jié)束代碼,結(jié)束代碼是在for循環(huán)之后的,但是仍然在定時(shí)器里面。具體看我上面貼出的完整代碼那個(gè)回復(fù)吧
2017-04-13 回復(fù) 有任何疑惑可以回復(fù)我~

還需要把

if(flag){

????????????clearInterval(obj.timer);

????????????if(fn){

????????????????fn();

????????????}

這一段放在for 循環(huán)外面。。.

-------------手動(dòng)分割------------------

樓主,你看看有木有bug,或者你有其他解決方案了沒有?

0 回復(fù) 有任何疑惑可以回復(fù)我~

我去,不行。。

0 回復(fù) 有任何疑惑可以回復(fù)我~
//同步運(yùn)動(dòng)函數(shù)
function?move(obj,?json,?fn)?{
	//清除定時(shí)器,避免出現(xiàn)多個(gè)定時(shí)器	
	clearInterval(obj.timer);

	//設(shè)定定時(shí)器
	obj.timer?=?setInterval(function?()?{
		//聲明標(biāo)桿
		var?flag?=?true;
		
		//遍歷同步運(yùn)動(dòng)屬性
		for?(var?attr?in?json)?{
			//獲取屬性值
			var?icur?=?0;
			if?(attr?==?'opacity')?{
				icur?=?Math.round(parseFloat(getStyle(obj,attr))?*?100);
			}?else?{
				icur?=?parseInt(getStyle(obj,?attr));
			}

			//設(shè)置運(yùn)動(dòng)速度
			var?speed?=?(json[attr]?-?icur)/100;
			speed?=?speed>0?Math.ceil(speed):Math.floor(speed);

			//?判斷是否所有值都達(dá)到了目標(biāo)值,判定暫停定時(shí)器的指標(biāo)
			if?(icur?!=?json[attr])?{
				flag?=?false;
			}
			if?(attr?==?'opacity')?{
				obj.style.opacity?=?(icur?+?speed)?/?100;
				obj.style.filter?=?'alpha(opacity:'?+?(icur?+?speed)?+?')';
			}?else?{
				obj.style[attr]?=?(icur?+?speed)?+?'px';
			}
		}	
		
		//?注意,for?in遍歷到此結(jié)束,下面的清除定時(shí)器部分不屬于for遍歷里面的代碼,是定時(shí)器最后面的部分
		//清除定時(shí)器
		if(flag){
			clearInterval(obj.timer);
			if(fn){
				fn();
			}
		}		
	},?1);
}


//獲取任意屬性
function?getStyle(obj,?attr)?{
	if?(obj.currentStyle)?{
		return?obj.currentStyle[attr];?//IE取樣式
	}?else?{
		return?getComputedStyle(obj,?false)[attr];
	}
}


2 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Arya_Stark

你好,我發(fā)現(xiàn)在第12行代碼 for (var attr in json) { 之后 加入第13行代碼,flag = true; 強(qiáng)制每次循環(huán)之前預(yù)設(shè) flag為true,就可以實(shí)現(xiàn)鏈?zhǔn)絼?dòng)畫了。 你看看還有其他問(wèn)題么?
2017-04-13 回復(fù) 有任何疑惑可以回復(fù)我~

經(jīng)過(guò)多番測(cè)試,視頻中的完美運(yùn)動(dòng)代碼存在bug,這個(gè)框架只可以實(shí)現(xiàn)同步動(dòng)畫,不可以實(shí)現(xiàn)鏈?zhǔn)絼?dòng)畫。

同步動(dòng)畫最后會(huì)停止,不是因?yàn)?/p>

if(flag){
????clearInterval(obj.timer);
????if(fn){
????????fn();
?????}
}

而是代碼中的

speed?=?(json[attr]?-?icur)/8;

這一部分等于0了,也就是說(shuō),動(dòng)畫不再變化了,看起來(lái)就好像清除了定時(shí)器一樣。

如果在清除定時(shí)器的判定語(yǔ)句中加入一個(gè)測(cè)試語(yǔ)句,可以發(fā)現(xiàn),第一次鼠標(biāo)移入目標(biāo)的時(shí)候,第一次執(zhí)行到這個(gè)動(dòng)畫,是不會(huì)執(zhí)行到測(cè)試的語(yǔ)句的,說(shuō)明定時(shí)器的判定語(yǔ)句并未執(zhí)行。

if(flag){
????alert(12345678978979);?//注意這部分,第一次執(zhí)行動(dòng)畫的時(shí)候,是不會(huì)執(zhí)行到這里的。因?yàn)閒lag一直是false
????clearInterval(obj.timer);
????if(fn){
????????fn();
?????}
}

如果沒有onmouseout的動(dòng)畫,那么,第二次鼠標(biāo)移進(jìn)去的時(shí)候,在執(zhí)行動(dòng)畫之前,都滿足

json[attr]=icur;

也就是說(shuō)speed在第二次執(zhí)行動(dòng)畫的時(shí)候,一直是0,那么這個(gè)時(shí)候,下面這個(gè)判定就沒有執(zhí)行了

if(icur?!=?json[attr]){
????flag?=?false;
}

于是flag就是第二次執(zhí)行動(dòng)畫的初始值,也就是:

var?flag?=?true;

自然而然的,后面的這部分代碼就能夠執(zhí)行了。

if(flag){
????alert(12345678978979);//第二次執(zhí)行onmouseover動(dòng)畫,就會(huì)執(zhí)行到這里了
????clearInterval(obj.timer);
????if(fn){
????????fn();
?????}
}


上面講得比較啰嗦,不知道大家有沒有看懂,沒看懂的可以照著一步一步去嘗試一下,會(huì)得到我說(shuō)的這個(gè)結(jié)果的

2 回復(fù) 有任何疑惑可以回復(fù)我~

首先我終于找到跟我一樣認(rèn)為flag是放在定時(shí)器外的人了,這一節(jié)課里面用的json[attr]不是target,json[attr]就相當(dāng)于json.attr; 源碼:

if(itur?!=?json[attr]?){
flag=false;
}

我資質(zhì)較淺,我以個(gè)人名義說(shuō)說(shuō)我的想法,

var flag=true;這是放在計(jì)時(shí)器外的對(duì)吧,當(dāng)遇到if(itur != json[attr] )語(yǔ)句的時(shí)候,就把flag這個(gè)全局變量設(shè)為false, 如果if(itur != json[attr] )不成立的時(shí)候,if( flag ){}這個(gè)語(yǔ)句就會(huì)找到全局變量,所以這就是為什么要放在計(jì)時(shí)器外

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

六月ovo 提問(wèn)者

噢,代碼我打錯(cuò)了,應(yīng)該是json[attr]的,謝謝糾正。 另外,我還是不太明白,就像你說(shuō)的,當(dāng)遇到if(itur != json[attr] )語(yǔ)句的時(shí)候就把flag這個(gè)全局變量設(shè)為false,然后當(dāng)if(itur != json[attr] )不成立的時(shí)候,if( flag ){}這個(gè)語(yǔ)句再調(diào)用這個(gè)全局變量,它不同樣是false嗎? if(flag)應(yīng)該是if(flag == true) 的寫法對(duì)吧? 我還在到處查資料,然后把之前視頻寫的那個(gè)完美框架重新試了一下,好像是沒辦法執(zhí)行到鏈?zhǔn)絼?dòng)畫了,也就是沒有了后面的fn。
2017-03-26 回復(fù) 有任何疑惑可以回復(fù)我~

評(píng)論在一樓的那位大哥已經(jīng)誤導(dǎo)了大家,flag放在計(jì)時(shí)器內(nèi)會(huì)出現(xiàn)bug.

你的問(wèn)題我有點(diǎn)看不明白啊哥們,說(shuō)的明白些

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

六月ovo 提問(wèn)者

我的問(wèn)題就是,flag=true是放在定時(shí)器外面的,對(duì)吧?定時(shí)器里面是沒有代碼把flag重置為true的,當(dāng)?shù)谝淮未a執(zhí)行到 if(icur!=iTarget){ flag=false; } 這里的時(shí)候,flag就被賦值為false了,之后都沒有給flag賦值為true,那么最后是怎么判斷到flag=true的呢? 在這里就很不明白,因?yàn)闆]有把flag重置為true的話,其實(shí)是沒辦法執(zhí)行clearInterval(obj.timer);和之后的fn函數(shù)的。
2017-03-26 回復(fù) 有任何疑惑可以回復(fù)我~
首頁(yè)上一頁(yè)12下一頁(yè)尾頁(yè)

舉報(bào)

0/150
提交
取消
JS動(dòng)畫效果
  • 參與學(xué)習(xí)       113920    人
  • 解答問(wèn)題       1489    個(gè)

通過(guò)本課程JS動(dòng)畫的學(xué)習(xí),從簡(jiǎn)單動(dòng)畫開始,逐步深入各種動(dòng)畫框架封裝

進(jìn)入課程

flag = false 是什么時(shí)候被重置為true的?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)