返回首頁

如何在Director中實現文本滾動

時間:2011-06-20 19:59來源:知行網www.wzliqi.com 編輯:麥田守望者

最近有不少的朋友問我有關在DR中如何實現文本滾動效果的問題,我只給了一些方法的提示,我本身認為這個問題是比較的簡單的,但是隨著問的多了,也就意識到這個問題涉及的問題還真不少(自己是小瞧了這個問題了),后來就想找個典型的范例來和朋友們共同討論這個問題,在網上無意的瀏覽時候發現了下面的這個行為,使我對這個問題的認識更深了一步(里面還是有不少的技巧的),我從下面的程序里面也得到了一種新的行為編寫思維方式,同時在其他方面也得到了應用。下面就是這個程序,我做了一些簡單的注釋:
property pMem
property pImage
property pScroll
property pWidth, pHeight
property pVisibleHeight
property pBackgroundColor

###定義這個行為的屬性設置###

on getPropertyDescriptionList me

list = [:]
addProp list, #pVisibleHeight, [#comment: "Visible Height", #format: #integer, #default: 100]
return list

end

on beginSprite me

n 獲得Text Member 的大小
pWidth = sprite (me.spriteNum).member.width
pHeight = sprite (me.spriteNum).member.height

n 獲得文本圖象的大小
pImage = duplicate (sprite (me.spriteNum).member.image)
pBackgroundColor = sprite (me.spriteNum).member.bgColor

n 創建一個新的位圖以供我們使用
pMem = new (#bitmap)
pMem.image = image (pWidth,pHeight,32)
pMem.regPoint = point (0,0)
sprite (me.spriteNum).member = pMem

n 實現圖象從低部向上滾動
pScroll = -pVisibleHeight
setImage (me)

end

on setImage me

n 利用Fill命令使圖象充滿背景色
pMem.image.fill (rect (0, 0, pWidth, pVisibleHeight), pBackgroundColor)

n 放置圖象到相應的位置上
pMem.image.copyPixels (pImage, rect (0 ,0, pWidth, pVisibleHeight), rect (0, pScroll, pWidth, pVisibleHeight + pScroll))

end

on exitFrame me

n 設置滾動的速度為一個象素
pScroll = pScroll + 1

n 如果滾動文本結束了,在這里設計循環
if pScroll > pHeight then pScroll = -pVisibleHeight

setImage(me)
end

on endSprite me
erase pMem
end


這個行為比我以前常用的方法是方便多了,先面我介紹一下這個行為的基本編寫思路,如果對Lingo很熟悉的朋友通過上面的程序就能夠看的出來了,我再說這些就現的羅嗦了。但我還是想說一下我的體會(真是不可救藥。。
這個行為的最大的特點就是節約了空間,只要一個SCORE就可以了。還有一個巧妙的用法就是用了FILL命令,這樣在移動文本圖象的時候擦除舊的圖象。

------分隔線----------------------------
標簽(Tag):director director實例教程 Director實例 Director源碼
------分隔線----------------------------
推薦內容
猜你感興趣
久久99久久99精品免视看