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

时间:2015-12-11 00:28:53

标签: actionscript-3 textbox

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

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

任何解决方案?谢谢!

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;

1 个答案:

答案 0 :(得分:0)

在FlashPro中,代码中完成的任何操作都不受时间轴关键帧的限制。在代码中完成的任务将持续存在,直到它的范围(它所在的时间轴)被卸载或者您已经通过代码明确地清除它。 (尽管某些东西可以将你的物体保存在记忆中)。

这还包括源自时间轴的显示对象(不是通过代码),而是通过代码操作其父母或定位(所以如果在时间轴对象上使用addChild / setChildIndex)

您必须使用removeChild(instanceOrVarName);

明确删除它

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

所以,总结一下:

  

必须通过代码清理通过代码完成的事情。

以下是一些供您探索的选项:

  • 在下一帧调用removeChild(myText)
  • 侦听ENTER_FRAME事件并检查播放头是否已移动,如果是,请执行removeChild(myText)并删除侦听器。
  • 在你拥有此代码的框架上
  • ,在舞台上放置一个文本字段(仅在该框架上),给它一个实例名称myText,然后保留除{{1}之外的代码}行和new TextField()行。这应该使它做你想做的事情,但也让它在下一帧被删除。