本發(fā)明涉及一種白板軟件滑動對象的慣性移動方法。
背景技術(shù):
白板軟件是一種電子白板上用于交互的配套軟件,可以配合電子白板,實現(xiàn)在白板上筆跡書寫、繪圖、調(diào)用音視頻、文字輸入及文件存儲等操作。目前白板軟件中對對象的移動操作,在手觸摸抬起或者鼠標松開后,移動的對象就停住了,并不會像現(xiàn)實中物體受力運動的情況,因為慣性和阻力的原因,會繼續(xù)向前做一段時間的慣性滑動然后才停止。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種白板軟件滑動對象的慣性移動方法,以實現(xiàn)滑動對象在鼠標松開或是觸摸點離開屏幕后,滑動對象仍能進行一端時間的慣性滑動,為用戶提供更加生動形象的操作。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
一種白板軟件滑動對象的慣性移動方法,包括以下步驟:
S01:檢測滑動對象在屏幕上發(fā)生的滑動操作,獲取滑動操作結(jié)束時滑動對象的初始速度v0及初始位置信息;
S02:判斷初始速度v0是否小于或等于預設速度,若初始速度v0小于或等于預設速度,則滑動對象停止在當前的初始位置,若初始速度v0大于預設速度,則啟動定時器,其中,預設速度大于0;
S03:定時器每隔一段時間T觸發(fā)一次;
S04:獲取定時器觸發(fā)時滑動對象的觸發(fā)速度V及移動角度a,并判斷觸發(fā)速度V是否等于0,若觸發(fā)速度V等于0,則滑動對象停止,結(jié)束定時器,若觸發(fā)速度V不等于0,則執(zhí)行步驟S05;
S05:根據(jù)觸發(fā)速度V、時間T、滑動對象的移動角度a確定滑動對象的偏移量,并確定滑動對象的當前位置信息;
S06:返回并執(zhí)行步驟S04。
所述步驟S01中獲取滑動操作結(jié)束時滑動對象的初始速度v0及初始位置信息,主要是通過獲取滑動對象的軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息來確定,其中,獲取滑動對象的軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息來確定,進一步包括以下步驟:
S011:滑動操作結(jié)束后,獲取滑動對象的軌跡點的數(shù)量,并判斷滑動對象的軌跡點的數(shù)量是否小于5,若滑動對象的軌跡點的數(shù)量小于5,則不進行慣性移動,滑動對象停止滑動,若滑動對象的軌跡點的數(shù)量大于或等于5,則執(zhí)行步驟S012;
S012:若滑動對象的軌跡點的數(shù)量等于5,則獲取5個軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息,若滑動對象上的軌跡點的數(shù)量大于5,則獲取最后5個軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息;
S013:根據(jù)5個軌跡點的總滑動時間t及總滑動距離s確定滑動對象的初始速度v0,再通過滑動操作結(jié)束后最后一個軌跡點的位置信息確定滑動對象的初始位置信息,其中,滑動對象的初始速度v0的計算公式如下:
v0=s/t。
所述步驟S03中的時間T為40ms。
所述預設速度大于或等于0.1piexl/ms。
所述步驟S04中滑動對象的觸發(fā)速度V的計算公式如下:
V=exp(pow(me/sd,2)/(-2.0))/sqrt(2.0*3.1415926)/sd;
sd=1.0/(sqrt(2.0*3.14059326)*v0);
其中,me為數(shù)學期望且me隨定時器的觸發(fā)次數(shù)增加,sd為標準差,v0為滑動對象的初始速度。
所述步驟S05中確定滑動對象的當前位置信息,若定時器觸發(fā)的觸發(fā)次數(shù)大于1,則根據(jù)偏移量和定時器上一次觸發(fā)后滑動對象的位置信息確定滑動對象的當前位置信息,若定時器觸發(fā)的觸發(fā)次數(shù)等于1,則根據(jù)偏移量和滑動對象的初始位置信息確定滑動對象的當前位置信息。
所述步驟S01中的滑動操作,主要是指利用鼠標拖動對象滑動或是利用手指觸摸拖動對象滑動;步驟S01中的滑動操作結(jié)束,主要是指鼠標松開滑動對象或手指離開觸摸屏幕。
本發(fā)明的一種白板軟件滑動對象的慣性移動方法,其實現(xiàn)了滑動對象在鼠標松開或是觸摸點離開屏幕后,滑動對象仍能進行一端時間的慣性滑動再停止,為用戶提供更加生動形象的操作,用戶體驗更好,且為教學增添了樂趣。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1為本發(fā)明方法流程圖;
圖2為本發(fā)明的操作示意圖。
具體實施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明提供一種白板軟件滑動對象的慣性移動方法,包括以下步驟:
S01:檢測滑動對象在屏幕上發(fā)生的滑動操作,獲取滑動操作結(jié)束時滑動對象的初始速度v0及初始位置信息;
S02:判斷初始速度v0是否小于或等于預設速度,若初始速度v0小于或等于預設速度,則滑動對象停止在當前的初始位置,若初始速度v0大于預設速度,則啟動定時器,其中,預設速度大于0;
S03:定時器每隔一段時間T觸發(fā)一次;
S04:獲取定時器觸發(fā)時滑動對象的觸發(fā)速度V及移動角度a,并判斷觸發(fā)速度V是否等于0,若觸發(fā)速度V等于0,則滑動對象停止,結(jié)束定時器,若觸發(fā)速度V不等于0,則執(zhí)行步驟S05;
S05:根據(jù)觸發(fā)速度V、時間T、滑動對象的移動角度a確定滑動對象的偏移量,并確定滑動對象的當前位置信息;
S06:返回并執(zhí)行步驟S04。
進一步地,步驟S01中獲取滑動操作結(jié)束時滑動對象的初始速度v0及初始位置信息,主要是通過獲取滑動對象的軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息來確定,其中,獲取滑動對象的軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息來確定,進一步包括以下步驟:
S011:滑動操作結(jié)束后,獲取滑動對象的軌跡點的數(shù)量,并判斷滑動對象的軌跡點的數(shù)量是否小于5,若滑動對象的軌跡點的數(shù)量小于5,則不進行慣性移動,滑動對象停止滑動,若滑動對象的軌跡點的數(shù)量大于或等于5,則執(zhí)行步驟S012;
S012:若滑動對象的軌跡點的數(shù)量等于5,則獲取5個軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息,若滑動對象上的軌跡點的數(shù)量大于5,則獲取最后5個軌跡點的總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息;
S013:根據(jù)5個軌跡點的總滑動時間t及總滑動距離s確定滑動對象的初始速度v0,再通過滑動操作結(jié)束后最后一個軌跡點的位置信息確定滑動對象的初始位置信息,其中,滑動對象的初始速度v0的計算公式如下:
v0=s/t。
優(yōu)選地,步驟S03中的時間T為40ms。
步驟S02中的預設速度可自由設定,此實施例的預設速度大于或等于0.1piexl/ms,以使定時器啟動更加靈敏和精確。
在本實施例中,步驟S04中滑動對象的觸發(fā)速度V的計算公式如下:
V=exp(pow(me/sd,2)/(-2.0))/sqrt(2.0*3.1415926)/sd;
sd=1.0/(sqrt(2.0*3.14059326)*v0);
其中,me為數(shù)學期望且me隨定時器的觸發(fā)次數(shù)增加,sd為標準差,v0為滑動對象的初始速度。
進一步地,所述步驟S05中確定滑動對象的當前位置信息,若定時器觸發(fā)的觸發(fā)次數(shù)大于1,則根據(jù)偏移量和定時器上一次觸發(fā)后滑動對象的位置信息確定滑動對象的當前位置信息,若定時器觸發(fā)的觸發(fā)次數(shù)等于1,則根據(jù)偏移量和滑動對象的初始位置信息確定滑動對象的當前位置信息。
同時,所述步驟S01中的滑動操作,主要是指利用鼠標拖動對象滑動或是利用手指觸摸拖動對象滑動;步驟S01中的滑動操作結(jié)束,主要是指鼠標松開滑動對象或手指離開觸摸屏幕。
以下舉出實施例,具體說明:
在白板軟件中移動一個對象,移動一定距離后,松開鼠標,收集到最后5個軌跡點的信息,包括總滑動時間t、總滑動距離s及滑動操作結(jié)束后最后一個軌跡點的位置信息,具體如下所示:
軌跡點的位置信息及獲取到的時間信息如下:
軌跡點1:QPointF(863,354),時間(ms)1467775605037;
軌跡點2:QPointF(875,346),時間(ms)1467775605045;
軌跡點3:QPointF(884,340),時間(ms)1467775605053;
軌跡點4:QPointF(893,334),時間(ms)1467775605061;
軌跡點5:QPointF(893,334),時間(ms)1467775605061;
另外需要說明的是,因為軌跡點的收集方式是在滑動對象點擊、移動、松開,都會進行記錄的,所以在對象移動這個滑動操作結(jié)束時是會在移動事件中記錄一個點,在鼠標松開或者手指觸摸結(jié)束時,也會記錄一個點,所以會有末尾的兩個軌跡點會一致,軌跡點的時間信息是指從時間1970-01-01T00:00:00到現(xiàn)在所經(jīng)過的毫秒數(shù)。
因此,5個軌跡點的總滑動時間t為軌跡點5記錄的時間信息與軌跡點1記錄的時間信息的差值,即t=1467775605061-1467775605037=24ms,5個軌跡點的總滑動距離s由軌跡點5記錄的位置信息與軌跡點1記錄的位置信息的計算獲得,即s=sqrt((893-863)2+(334-354)2)=36.0555pixel,則滑動操作結(jié)束時,滑動對象的初始速度v0如下:
v0=36.0555/24=1.50231(pixel/ms);
由于滑動對象的初始速度v0大于0.1pixel/ms,則判斷為進行慣性移動,啟動計時器,獲取滑動對象的移動角度a(與水平方向所成的角度)a=33.6901°;定義標準差的值sd=1.0/(sqrt(2.0*3.1415926)*1.50231)=0.265552;定義數(shù)學期望的值me=0;定義期望間隔的值meInterval=0.1/v0=0.066564;
定時器每40ms觸發(fā)一次,且定時器每次觸發(fā)所做的操作如下所述,則當定時器第一次觸發(fā)時:
me+=meInterval,即me=0+0.066564=0.066564;
根據(jù)觸發(fā)速度V=exp(pow(me/sd,2)/(-2.0))/sqrt(2.0*3.1415926)/sd
計算第一次定時器觸發(fā)時滑動對象的觸發(fā)速度V,即V=1.45585,則根據(jù)觸發(fā)速度V=1.45585、每次觸發(fā)定時器的間隔T=40ms以及移動角度a=33.6901,根據(jù)下述計算移動位置公式計算出對象坐標的偏移量:
off_x=Abs(V*T*cos(a));
off_y=Abs(V*T*sin(a));
根據(jù)上述計算得出的數(shù)據(jù):獲得定時器第一次觸發(fā)時的偏移量為:
off_x=Abs(1.45585*40*cos(33.6901*3.1415926/180))=48.4536;
off_y=Abs(1.45585*40*sin(33.6901*3.1415926/180))=32.3024;
根據(jù)與水平線所成的角度a=33.6901,如附圖2所示,滑動對象移動的方向是往右上角的方向,所以滑動對象在初始位置的坐標基礎上x軸坐標增加48.4536,y軸坐標減少32.3024,需要說明的是,因為是定時器第一次觸發(fā),所以滑動對象的當前位置由偏移量和滑動對象的初始位置信息確定,如果觸發(fā)次數(shù)為兩次或兩次以上,則滑動對象的當前位置由偏移量和定時器上一次觸發(fā)后滑動對象的位置信息確定。
改變滑動對象坐標后,等待下一次觸發(fā)器觸發(fā),直至速度為0。
本發(fā)明的一種白板軟件滑動對象的慣性移動方法,其實現(xiàn)了滑動對象在鼠標松開或是觸摸點離開屏幕后,滑動對象仍能進行一端時間的慣性滑動再停止,為用戶提供更加生動形象的操作,用戶體驗更好,且為教學增添了樂趣。
上述說明示出并描述了本發(fā)明的優(yōu)選實施例,如前所述,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導或相關領域的技術(shù)或知識進行改動。而本領域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。