2010年07月21日 星期三 15:29
通常如果文字过多,文本框不能全部显示的情况下,我们会使用文字滚动来保持版面的结构。今天在制作滚动文字的时候发现了一个很郁闷的现象,于是对 TestField的scrollH属性进行了一些测试。主要问题是出在,当TestField的大小发生改变时,scrollH属性无法修改。
下面是一个相关的DEMO例子:
mc 是一个MovieClip,内嵌名为 txt 的TextField。正常运行时超长的文字会出现滚动,但当执行Resize事件后,txt发生大小发生变化,从输出信息可以看到,scrollH属性不再改变,文字也就不再滚动了,而且maxScrollH的大小也变了。窗口大小与maxScrollH的大小成反比。试了很久发现,把 mc.txt.scrollH += 1;改成mc.txt.scrollH += 2;就可以正常滚动了,但maxScrollH的大小还是变了。现在我还没弄明白是什么原因,估计与字体的大小和像素有关系。晚点再做些测试,找下原因,今天先到这里了。
mc.txt.text = "央行货币研究局前局长景学成表示,要注意的是央行此次的表态已经是“适度”,不会再产生类似09年的天量信贷了。";
mc.addEventListener(Event.ENTER_FRAME, mcEnterHandler);
stage.addEventListener(Event.RESIZE, resizeHandler);
function mcEnterHandler(e:Event):void {
if (mc.txt.scrollH<mc.txt.maxScrollH) {
trace("A: "+ mc.txt.scrollH, mc.txt.maxScrollH);
mc.txt.scrollH += 1;
trace("B: "+ mc.txt.scrollH, mc.txt.maxScrollH);
} else {
mc.txt.scrollH = 0;
}
}
function resizeHandler(e:Event):void {
mc.scaleX = stage.stageWidth/500;
mc.scaleY = stage.stageHeight/400;
}