荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: hawkwolves (十一狼), 信区: Multimedia
标  题: Director技巧--关于text scroll 的问题
发信站: BBS 荔园晨风站 (Sun Nov 12 03:00:21 2000), 转信

Director技巧--关于text scroll 的问题

作者:Flyingbird 摘自经典论坛


有一个朋友在论坛上问如何让一个text sprite 自动滚屏? 还有一个要求是,当
滚动到文本的最后一行,可以再回到第一行重新继续滚动, 另外还要求如果鼠标
点在文本上就停止滚动,再点击又继续滚动。

回答:
这是一个很有趣的问题, lingo 的语句并不难, 需要了解的是一些背景知识和解
决问题的过程, 事实上, lingo programming的过程就是解决问题的过程, 对于
解决问题来说, 第一步莫过于定义问题是什么?从上面的问题里我们已经了解得
比较清楚了, 下面是问题清单:
1.Text sprite 自动滚屏;
2.当滚动到最后一行时回到第一行重新开始滚动;
3.鼠标点击toggle 滚屏的on 和off.

我们知道, text member可以有几种不同的framing 设定,对于滚屏来说,最合适
的设定是fixed.见下图:


这样可以将比较长的文件限制在有限的舞台空间来显示,同时又不出现滚动条。
不过这只完成了第一步, 我们需要lingo 把文本文件滚动起来。 最合适的的语句
是用scrollTop这个text member 的属性。 它的定义是从member 的顶端到第一行
可见文字的距离, 当movie 播放时,我们都会使用on exitFrame 句柄来制造循环
。 好, 如果我们可以让这个text sprite 在每次离开frame时,它的member.
scrollTop值就增加一点,不就实现了滚动了吗。

member.scrollTop=member.scrollTop + 4

这就是核心语句。 那么如何得知文本最后一行的位置以及建立与scrollTop的关系
呢? 请看下图:


我们可以很容易的得出这样的结论, 当最后一行文本显示在舞台上时,那时候
text member 的scrollTop 值等于member的高度减去sprite 的高度。也就是 :
member.height – sprite.height = the scrollTop when last line appear
on the stage.

鼠标的控制比较容易,设定一个flag就可以了。

问题分析完了,开始写script, 最好是写成behavior的形式, 符合OOP的概念,
又可以使用在不同的text sprite 上。 你可以持续丰富你自己的behavior
library.

property pText --文本member
property pSpeed --滚动速率
property pFlag --判断条件
property pLastLine --scrollTop的极限值
property pCurrentTop --当前的scrollTop值

--初始化
on beginSprite me
sprite(me.spriteNum).member.scrolltop=0
pText=sprite(me.spriteNum).member
pLastLine=pText.height - sprite(me.spriteNum).height
end

--循环中监测符合滚动的条件并发出滚动的指令
on exitframe me
if pFlag=1 then
pCurrentTop=pText.scrollTop
if pCurrentTop < pLastLine then
scrollText me
else
pCurrentTop=0
scrollText me
end if
end if
end

--核心语句使text滚动
on scrollText me
pText.scrolltop=pCurrentTop + pSpeed
updatestage
--核心语句使text滚动
on scrollText me
pText.scrolltop=pCurrentTop + pSpeed
updatestage
end

--toggle flag on and off
on mouseDown me
pFlag=not pFlag
end

on getPropertyDescriptionList me
return [#pSpeed:[#comment:"滚动速度: ",#format:#integer,#default:"2"],
\
#pFlag:[#comment:"自动开始滚动?",#format:#boolean,#default:"1"]]
end

下图是当用该行为对text sprite赋值时的screen shot:





--
   ┏━┳━┳━┳━┳━┳━┳━┳━┓
   ┃当┃你┃你┃你┃去┃我┃我┃我┃ My e-mail:   11_wolf@163.net
   ┃了┃跟┃也┃没┃做┃手┃要┃不┃ My oicq:     40356
   ┃小┃在┃没┃有┃老┃敲┃把┃再┃
   ┃尼┃身┃有┃讲┃和┃木┃你┃烦┃
   ┃姑┃后┃哭┃话┃尚┃鱼┃忘┃恼┃

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: bbs.szptt.net.cn]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店