在Director中實現文字滾動 (轉)

worldblog發表於2007-12-09
在Director中實現文字滾動 (轉)[@more@]最近有不少的朋友問我有關在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很熟悉的朋友透過上面的程式就能夠看的出來了,我再說這些就現的羅嗦了。但我還是想說一下我的體會(真是不可救藥啊!)
這個行為的最大的特點就是節約了空間,只要一個RE就可以了。還有一個巧妙的用法就是用了FILL命令,這樣在移動文字圖象的時候擦除舊的圖象

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990147/,如需轉載,請註明出處,否則將追究法律責任。

相關文章