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
行。这应该使它做你想做的,但也让它在下一帧被删除。
我正在尝试添加一些文本框,以便人们可以 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
行。这应该使它做你想做的,但也让它在下一帧被删除。