在上一期的XML菜單的教程中,我們做了一個簡單的縱向排列的XML文字菜單,並且在flash中附加了一個跟隨鼠標的縮略圖。縮略圖的數據也是從XML中提取的。
在我們XML菜單教程的第二期,我們來解決另外一個問題。
我們都知道XML的方便,隨意的更改,刪除和添加數據。請注意,更改和刪除還好,如果添加的話,這裡就會有一個界面排版和用戶使用的問題的。拿我們上一次的XML菜單來演示,我把我們的XML文件有添加了幾十條內容,結果我們的XML菜單變成這樣了:
登錄查看圖片或超連結
下面的菜單看不到了,可能很多人馬上已經想到了解決這種問題的辦法。對!我們要讓我們的用戶可以滾動瀏覽我們的XML菜單,就像這樣:
登錄查看圖片或超連結
現在你可以看到所以XML文件裡的幾十條記錄全部在舞台上,並可以讓用戶來滾動瀏覽。無論你如何修改XML文件,永遠是鼠標放在菜單頂端會停留在菜單的第一條,當鼠標滑動至菜單的底端時會停留在菜單的最後一條,無論XML文件的紀錄條數,如果很短,滾動會自然不存在,如果超出規定菜單高度,就會像剛才所說的那樣的規律來滾動,即便XML中有1000條記錄也如此。
由於是建立在上一期教程的基礎上的,一些在上一期中重複使用了的代碼就不再講解了。上一期XML菜單教程地址:
登錄查看圖片或超連結
第一步, 分析項目:
> 組成部分
- XML文件;
- FLASH源文件;
- 縮略圖JPG文件,50px X 50px 存放在 thumb文件夾;
> 步驟
- 要使XML菜單可以滾動,最簡單的辦法就是把所有裝有XML菜單的影片剪輯都放在一個母影片剪輯中;
- 計算出正確的等式;
第二步,開始建立我們需要的一些元素,並把它們擺到大概理想的位置:
> 一個放所有裝有XML菜單的影片剪輯的母影片剪輯,我們叫做mcontainer 150px寬,高340px;
> 兩個上下箭頭,只是為了美觀;
> 把mcontainer 影片剪輯在工作去擺到(310, 30);
第三步,actionscripting
//這次我們添加了些新的變量由於計算方便需要
複製內容到剪貼板
代碼:
var menut:Number = 30;
var menul:Number = 300;
var menub:Number = 370; //菜單底部坐標
var menuw:Number = 150; //菜單寬度
var menuh:Number = menub - menut; //菜單在舞台顯示高度 (也就是遮罩高度)
var home:MovieClip = this;
var mlh:Number = 20;
var tlh:Number = 60;
var speed:Number = 2;//關於XML的讀取我們就不再解釋了,請參考上一期教程。我們直接進入本期教程的核心代碼:鼠標滾動計算等式:
複製內容到剪貼板
代碼:
mcontainer.onEnterFrame = function()
{
if(_root._xmouse > menul && _root._xmouse < (menul + menuw)) //當鼠標的滑動至菜單的舞台顯示區域時激活滑動代碼,我們不希望鼠標在舞台上任何地方移動時菜單都在滾動
{
var per:Number = (_root._ymouse - menut) / menuh; //計算鼠標從菜單頂部向下滑動了多少?並處以菜單高度得出鼠標移動的百分比
var menuth:Number = mlh * numMenu; //利用菜單文字行距和XML記錄總條數算出菜單實際高度
//滾動菜單原理是:鼠標從菜單頂部向下滑動了百分之多少,菜單就相應的向上移動自己實際高度的百分之多少,然後再加上鼠標向下移動的實際像素數。呵呵,慢慢琢磨下應該不難理解,實在是沒有更簡單的解釋方法,本身就是那麼個單純的事情
mcontaindy = menut - menuth * per + menuh * per;
mcontainoldy = this._y;
this._y += (mcontaindy - mcontainoldy) / speed;
if(_root._ymouse < menut)mcontainer._y = menut; //如果鼠標小於菜單頂部坐標,把菜單坐標寫死到頂部坐標;
if(_root._ymouse > menub)mcontainer._y = menut - menuth + menuh; //同樣如果鼠標大於菜單底部坐標,把菜單坐標寫死到底部坐標;
}
}這個就是本期最主要的代碼了,其他的相信看過上一期教程的看看源文件的註解應該可以搞明白的。
現在我們可以真正隨意修改,刪除,添加我們的XML文件了,我們的XML菜單都可以滿足用戶的正常瀏覽使用。試試添加它500條記錄。如果你在做一個相冊,裡面有上百張照片,這個可以是個不錯的選擇,滾動的簡單文字標題和縮略圖,使用起來應該很友好的。