Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在文本字段中添加movieclip_Actionscript 3_Apache Flex_Textfield_Movieclip_Addchild - Fatal编程技术网

Actionscript 3 如何在文本字段中添加movieclip

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,因此无法添加子对象 (好消息是,你可以通过谷歌找

我想在文本字段中添加一个movieclip。目标是能够滚动电影剪辑,因为uiscrollbar只适用于textfield,我认为滚动电影剪辑的解决方案是将其放在textfield中

我试过这样的方法:

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));
}