首页 > 网站 > 媒体动画 > 正文

Director实例剖析:在DIRECTOR中实现文本滚动播放实例

2024-09-08 19:26:59
字体:
来源:转载
供稿:网友

最近有不少的朋友问我有关在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命令,这样在移动文本图象的时候擦除旧的图象。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表