本文由FK授權(quán)藍(lán)色理想轉(zhuǎn)載 訪問(wèn)FK | 下載源文件(129K)
ShowS 平滑上下滾動(dòng)條(版權(quán)規(guī)flashk.org所有):
技術(shù)資料:
如何使用: 電影剪輯scrollMC的onLoad事件: showHeight = 350; myHeight = 350; speed = 13; targetMovie = "show.testMC";
showHeight用來(lái)指定綁定的MC的顯示高度,myHeight指定滾動(dòng)條本身的高度。speed是滑動(dòng)的速度,其值越大,滑動(dòng)越慢。targetMovie指定綁定的MC的路徑(相對(duì))。
技術(shù)內(nèi)幕: 主要的ActionScript集中在一個(gè)空的電影剪輯中:onClipEvent (enterFrame) { mcMoved(); } onClipEvent (load) { a = eval("_parent._parent."+_parent.targetMovie); function mcMoved() { whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38)); var tempK = whereY-a._y; if (Math.abs(tempK)>1) { a._y += tempK/_parent.speed; nowY = _parent.dragMC._y; } } } a = eval("_parent._parent."+_parent.targetMovie); 用來(lái)將指定綁定的MC位置。以后就可以使用a._x、a._alpha來(lái)訪問(wèn)這個(gè)電影剪輯了,與此相類似的技術(shù)還有_parent["myMC"]。
whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38));主要用來(lái)計(jì)算綁定的MC應(yīng)該滾動(dòng)到的位置。
var tempK = whereY-a._y; if (Math.abs(tempK)>1) { a._y += tempK/_parent.speed; nowY = _parent.dragMC._y; } 這個(gè)比較重要,直接關(guān)系到對(duì)CPU的占用率。首先,if (Math.abs(tempK)>1)判斷當(dāng)前要滾動(dòng)到的位置是否離當(dāng)前位置有一個(gè)像素的差值。Math.abs()是計(jì)算絕對(duì)值的函數(shù)。如果不是,即已經(jīng)滾動(dòng)到了應(yīng)該到達(dá)的位置,則不進(jìn)行幀的重繪。(Flash繪制一個(gè)幀的圖像要耗相當(dāng)?shù)腃PU,事實(shí)上,CPU的大部份使用都花在顯示上面。AS的執(zhí)行只要很少的CPU,所以,進(jìn)行必要的判斷,去掉不必要的重新繪制?梢杂行У亟档虲PU的使用率。至少在鼠標(biāo)沒(méi)有重新進(jìn)行交互時(shí)可以很好地降低CPU的使用率)。如果其值大于1,則將綁定的MC位置重新計(jì)算。
a._y += tempK/_parent.speed;是一個(gè)很經(jīng)常用的滑動(dòng)公式,其實(shí)真正的公式是這樣的:a._y += (whereY-a._y)/_parent.speed 這里只是在上一步進(jìn)行了簡(jiǎn)化。
function goArea(a) { dragMC._y = (showHeight-38)*a; }
函數(shù)對(duì)應(yīng)三個(gè)按鈕“滾動(dòng)到1/3、滾動(dòng)到1/2、滾動(dòng)到2/3、”其原理想想應(yīng)該不難明白。
本站相關(guān)文章: 運(yùn)動(dòng)緩沖效果解晰
出處:FlashK.org
責(zé)任編輯:qhwa
◎進(jìn)入論壇Flash專欄版塊參加討論
|