我想将一个动画片段添加到文本字段中。目标是能够滚动影片剪辑,因为uiscrollbar仅适用于文本字段,我认为我滚动影片剪辑的解决方案是将其放在文本字段中。
我尝试过类似的事情:
myText.addChild(myClip);
但因错误而失败:1061:通过静态类型flash.text:TextField的引用调用可能未定义的方法addChild。
答案 0 :(得分:0)
问题是TextField
不是DisplayObjectContainer
,因此您无法添加儿童。
(好消息是您可以通过Google找到许多替代解决方案)
答案 1 :(得分:0)
您无法将其添加到文本字段中,而且我并不完全确定您是什么意思"滚动影片剪辑"但假设你的动画片段大于你想要显示它的区域,这样的东西可能会起作用:
<s:Group>
<s:Scroller>
<mx:SWFLoader source="@Embed(source='movieclip.swf')"/>
</s:Scroller>
</s:Group>
答案 2 :(得分:0)
很抱歉,如果这是一个线程插孔,但我最近有一种情况,我需要这种类型的功能。虽然我确定您不再需要这个答案,但我希望我提出的解决方案能够帮助其他人。
亲爱的上帝,为什么会有人这样做?!
在我的特定情况下,我有一个需要滚动的极长的文本字段。根据我的经验,通过vertially移动影片剪辑滚动使用的极长的文本框这就需要我使用Adobe /闪光uiscrollbar
打交道时是不可靠的 - 调整ESK方法scrollV
文本字段。
由于需要从库中拉出的内嵌图像(而不是外部源)以及文本部分周围的黑框边框,这需要滚动,这更加复杂。随着文字。
简而言之,人们可能只需要做一些完全自包含的swf并在情有可原的情况下(比如制药横幅)。
从库中插入图片:
要完成此操作,您需要从库中的图像创建一个动画片段,并导出该动画片段的动作片段。然后,在您的代码中添加如下内容:
//This is a string from your textfield that you will replace with an image
var matchForImageSplit:String = 'IMAGE 1 GOES HERE';
//This is the code to replace the above string
//Here, "Image1" is the class name of the exported MovieClip
var imageToAdd:String = '<img src="Image1" />';
my_text.htmlText = my_text.htmlText.split(matchForImageSplit).join(imageToAdd);
在文字周围添加黑框边框:
这有点棘手。我要做的就是创建一个带有我需要的边框的MovieClip并给它起一个名字。然后我将它放在应该去的文本后面,并将所有内容放在parent_mc
动画片段中。
然后,我必须对该框进行编码以与滚动一起移动。以下是具体的我的项目,但这是它的要点:
//THIS CODE IS NON-FUNCTIONAL AND SHOULD ONLY BE USED AS A REFERENCE
//Redundant - just making the example more clear.
var my_text:TextField = parent_mc.my_text;
var borderBox:Sprite = parent_mc.borderBox;
//Vars for calculating position and movement
var borderBoxStartY:Number = borderBox.y;
var incrementRate:Number = my_text.textHeight/my_text.numLines;
var sPos:Number;
var top:Number = dragger.y;
var bottom:Number = (dragger.y + track.height) - dragger.height;
var range:Number = bottom - top;
var ctrl:Number = parent_mc.y; //"parent_mc" is the parent MC that contains the textField and borderBox
function dragScroll():void {
ratio = my_text.maxScrollV/range;
sPos = (dragger.y * ratio) - ctrl;
my_text.scrollV = Math.ceil(sPos);
borderBox.y = ((borderBoxStartY + incrementRate) - (my_text.scrollV * incrementRate));
}
在尝试所有这些之前需要注意的一点是,在使用scrollV
时,文本会逐行移动,因此不能平滑滚动(就像基于位置的滚动一样)。这可能导致滚动看起来&#34;生涩&#34;。
修改强>
我还应该注意,这都是自定义编程的,并没有实际使用scrollPane
/ uiscrollbar
组件,但行为方式相同。