闪存CS4中的滚动条

时间:2009-11-11 22:27:40

标签: actionscript-3

我正在尝试将垂直滚动条放到Flash CS4中的动态TextField上。当我在场景1中执行此操作时,一切正常。但是,如果我将TextField + Scrollbar移动到场景2,它会中断。运行代码时出现的错误表明Flash正在加载滚动条,然后尝试查找关联的TextField。问题是,由于在到达场景2之前TextField没有加载,因此Flash会抛出错误。

我尝试了很多东西来解决这个问题。它主要归结为我需要在actionscript中创建TextField和Scrollbar(而不是从组件库中创建),以便我可以控制何时创建它们。要创建TextField,我输入了:

//create a textfield for the story
import flash.text.TextField;

var story_txt:TextField = new TextField();
//story_txt.multiline = true;
story_txt.x = 154;
story_txt.y = 233.5;
story_txt.width = 348;
story_txt.height = 104.5;
story_txt.border = true;
story_txt.type = "dynamic";
story_txt.backgroundColor = 0xffffff;
story_txt.background = true;
story_txt.wordWrap = true;
story_txt.multiline = true;

然后创建滚动条,然后输入:

import fl.controls.UIScrollBar; 
//add the story_txt to the stage
addChild(story_txt);

var mySb:UIScrollBar = new UIScrollBar(); 
mySb.direction = "vertical"; 
// Size it to match the text field. 
mySb.setSize(story_txt.width, story_txt.height);  

// Move it immediately to the right of the text field. 
mySb.move(story_txt.x, story_txt.height + story_txt.y); 

// put them on the Stage 
mySb.scrollTarget = story_txt;
//mySb.scrollTargetName = "story_txt";
stage.addChild(mySb); 

唯一的问题是,只有当我将ScrollBar设为水平并关闭wordwrap时,此代码才有效。出于某种原因,垂直滚动条将无法使用wordrap(并且没有wordwrap,Flash认为不需要垂直滚动条,因为它只能看到一行文本。

获取带有滚动条的文本字段应该是一个简单的过程,但这确实无法实现。关于如何在打开wordWrap时让ScrollBar工作的任何想法?

2 个答案:

答案 0 :(得分:0)

基本上你不应该在Flash中使用场景。他们有很多已知的问题。

This thread可能会有所帮助。

答案 1 :(得分:0)

场景使用通常是不好的做法。它们是保留当前版本的闪存与早期版本兼容的传统功能。如果必须使用IDE将事物放在舞台上,则应在主时间轴上使用不同的帧代替场景,并将需要时间轴的内容放置在自己的动画片段内。 Flash IDE实际上在编译时将所有场景缩减到一个时间轴,但是在手动时间轴操作中不会出现许多异常。

来自adobe的场景的缺点:http://help.adobe.com/en_US/Flash/10.0_UsingFlash/WSd60f23110762d6b883b18f10cb1fe1af6-7eb3a.html