Actionscript 3 如何在文本字段中添加movieclip
我想在文本字段中添加一个movieclip。目标是能够滚动电影剪辑,因为uiscrollbar只适用于textfield,我认为滚动电影剪辑的解决方案是将其放在textfield中 我试过这样的方法:Actionscript 3 如何在文本字段中添加movieclip,actionscript-3,apache-flex,textfield,movieclip,addchild,Actionscript 3,Apache Flex,Textfield,Movieclip,Addchild,我想在文本字段中添加一个movieclip。目标是能够滚动电影剪辑,因为uiscrollbar只适用于textfield,我认为滚动电影剪辑的解决方案是将其放在textfield中 我试过这样的方法: myText.addChild(myClip); 但失败,错误为:1061:通过静态类型flash的引用调用可能未定义的addChild方法。text:TextField。问题是TextField不是DisplayObjectContainer,因此无法添加子对象 (好消息是,你可以通过谷歌找
myText.addChild(myClip);
但失败,错误为:1061:通过静态类型flash的引用调用可能未定义的addChild方法。text:TextField。问题是
TextField
不是DisplayObjectContainer
,因此无法添加子对象
(好消息是,你可以通过谷歌找到许多替代解决方案)你将无法将其添加到文本字段,我不确定“滚动电影剪辑”是什么意思,但假设你有一个比你想要显示它的区域大的电影剪辑,类似这样的方法可能会奏效:
<s:Group>
<s:Scroller>
<mx:SWFLoader source="@Embed(source='movieclip.swf')"/>
</s:Scroller>
</s:Group>
很抱歉,这有点像线程插口,但我最近遇到了一个需要这种功能的情况。虽然我确信你不再需要这个问题的答案,但我希望我提出的解决方案能帮助其他人 亲爱的上帝,为什么会有人这样做强> 在我的特殊情况下,我有一个非常长的文本字段需要滚动。根据我的经验,在处理非常长的文本字段时,通过垂直移动movieclip进行滚动是不可靠的,这需要我使用Adobe/Flash
uiscrollbar
-esk方法来调整文本字段的scrollV
由于需要从库中提取的在线图像(与外部源相反)以及文本部分周围的黑框边框(两者都需要与文本一起滚动),这一点变得更加复杂
简言之,对于一个完全独立的主权财富基金,人们可能只需要在情有可原的情况下(比如制药公司的横幅)做这样的事情
从库中插入图像:
要实现这一点,您需要从库中的图像创建一个movieclip,并将该movieclip导出到Actionscript。然后,在代码中添加如下内容:
//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);
在尝试所有这一切之前需要注意的一点是,当使用scrollV
时,文本会逐行移动,因此无法平滑滚动(与基于位置的滚动一样)。这可能会导致滚动看起来“不稳定”。
编辑:
我还应该注意到,这都是自定义编程的,实际上没有使用
滚动窗格
/uiscrollbar
组件,但其行为方式相同 好的,你得到的答案是盲目的。。。您为什么要向文本字段添加内容,以及添加什么内容?我看不到将电影剪辑放在文本字段中的用例(你无论如何也不能这么做)。滚动可以通过许多组件完成,将电影剪辑放在文本字段中,这样它就可以滚动,而不是你想要的。解决方案1是用卷轴把剪辑包起来。你试过这个吗?谢谢。我想要电影剪辑和一些文本滚动。我使用scrollPane来实现这一点。
//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));
}