AS3 如何将文本框保持在一个框架中

AS3 How to keep text box in one frame

我正在尝试添加一些文本框,以便人们可以 select 文本并将其复制到剪贴板。

我写了以下内容,但问题是文本框在被访问后一直停留在所有帧中,我只想让它留在该帧中。我是否必须将它们设置为在其他地方不可见?为什么其他框架甚至可以访问此代码?

有什么解决办法吗?谢谢!

stop();

var myFont = new fontCandy();

var myFormat:TextFormat = new TextFormat();
myFormat.size = 10;
myFormat.font = myFont.fontName;
myFormat.color = 0xFFFFFF;

var myText:TextField = new TextField();
myText.defaultTextFormat = myFormat;
myText.embedFonts = true;
myText.antiAliasType = AntiAliasType.ADVANCED;
myText.text = "my@email.com";

addChild(myText);

myText.border = true;
myText.wordWrap = true;
myText.width = 100;
myText.height = 15;
myText.x = 70;
myText.y = 185;

在 FlashPro 中,在代码中完成的任何事情都不受时间轴关键帧的影响。在代码中完成的某些事情将持续存在,直到它的范围(它所在的时间线)被卸载或者您通过代码明确地清理它。 (尽管某些事情甚至可以在这之后将您的对象保存在内存中)。

这还包括起源于时间轴(不是通过代码)但已通过代码操纵其来源或定位的显示对象(因此,如果您在时间轴对象上使用 addChild/setChildIndex)

您必须使用 removeChild(instanceOrVarName);

明确删除它

因此在您的情况下:removeChild(myText); 将删除该文本字段。

所以,总结一下:

Things done through code must be cleaned up through code.

您可以探索以下几个选项:

  • 在下一帧调用 removeChild(myText)
  • 监听 ENTER_FRAME 事件并检查播放头是否移动,如果移动则执行 removeChild(myText) 并移除监听器。
  • 在你有这个代码的框架上,在舞台上放一个文本字段(就在那个框架上),给它一个实例名称 myText,然后保留你的代码,除了 new TextField() 行和 addChild 行。这应该使它做你想做的,但也让它在下一帧被删除。