1

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

我试过类似的东西:

myText.addChild(myClip); 

但失败并出现错误:1061:通过静态类型 flash.text:TextField 的引用调用可能未定义的方法 addChild。

4

3 回答 3

0

问题是 aTextField不是 a DisplayObjectContainer,所以你不能添加孩子。

(好消息是您可以通过 Google 找到许多替代解决方案)

于 2013-01-09T04:44:07.523 回答
0

您将无法将其添加到文本字段中,而且我不确定您所说的“滚动影片剪辑”是什么意思,但假设您有一个大于您要显示的区域的影片剪辑,有些东西像这样可能有效:

<s:Group>
    <s:Scroller>
        <mx:SWFLoader source="@Embed(source='movieclip.swf')"/>
    </s:Scroller>
</s:Group>
于 2013-01-09T04:51:23.257 回答
0

对不起,如果这有点像线程插孔,但我最近遇到了需要这种功能的情况。虽然我确信你不再需要这个问题的答案,但我希望我提出的解决方案能对其他人有所帮助。

天哪,为什么会有人这样做?!

在我的特殊情况下,我有一个非常长的文本字段需要滚动。根据我的经验,在处理极长的文本字段时,通过垂直移动影片剪辑进行滚动是不可靠的,这需要我使用 Adob​​e/Flash uiscrollbar-esk 方法来调整scrollV文本字段的大小。

由于需要从库中提取的内嵌图像(而不是外部源)以及围绕文本部分的黑框边框,这两者都需要与文本。

简而言之,对于一个完全独立的 swf 和在情有可原的情况下(如制药横幅),可能只需要做这样的事情。

从库中插入图像:

为此,您需要从库中的图像创建一个影片剪辑并将该影片剪辑导出到 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);

在 text 周围添加黑框边框

这有点棘手。我需要做的是创建一个带有我需要大小的边框的 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,文本会逐行移动,因此不会平滑滚动(就像基于位置的滚动一样)。这可能导致滚动看起来“生涩”。

编辑: 我还应该注意,这都是自定义编程的,实际上并没有使用scrollPane/uiscrollbar组件,但行为方式相同。

于 2015-04-23T19:27:53.727 回答