不能有 2 个动态文本字段 AS3
Posted
技术标签:
【中文标题】不能有 2 个动态文本字段 AS3【英文标题】:Can't have 2 dynamic text fields AS3 【发布时间】:2017-01-07 12:12:27 【问题描述】:这不是一个特定的情况,这是我经常发生的事情。
每当我有动态文本(当然,通过代码更改)时,一切正常。 但是,当我添加第二个动态文本时,它们都没有显示。 一个示例场景是:
textfield1.text="hello";
在下一帧
textfield2.text="goodbye";
不会显示任何文字。 可能是闪光灯出了点问题。当我向舞台添加另一个文本框时,问题就开始了。
我不想升级到较新的闪存,但如果必须,我可以。
如果有人知道如何解决我的问题,请告诉我。
【问题讨论】:
您使用的是embed fonts
选项吗?
您的 flash pro 版本是多少?文本字段是放置在您的时间轴上(因此您必须嵌入字体并将字体添加到库中)还是通过代码添加?如果您在“textfield2.text="goodbye";”之前尝试“trace(textfield2);”会发生什么?您能否编辑您的问题并详细说明您的问题?
@www0z0k 如果将 TextField 的实例(标记为动态)手动添加到时间轴而不嵌入字体,我认为我应该抛出这样的错误“应该为任何文本嵌入字体可以在运行时编辑,而不是具有“使用设备字体”设置的文本。使用“文本”>“字体嵌入”命令嵌入字体。”
这两个Textfield的链接名真的是textfield1和textfield2吗?我相信如果你复制第一个它会保留原来的链接名称?
@Philarmon 不,我已经尝试过并作为第二个答案发布。如果实例被正确命名,这将作为一个魅力。 ;)
【参考方案1】:
如果您通过 AS3 创建和添加 TextField 实例,我认为嵌入字体是可选的(除非您指定了另一台计算机上不存在的字体)。
在下面的示例中,始终显示 textfield1 和 textfield2 的文本,所以我可能误解了您的问题。 最好的祝福。 尼古拉斯
PS : "var timer:Timer" 和回调函数仅用于使本示例将循环从第 1 帧切换到第 2 帧
示例 1
第 1 帧:
import flash.utils.Timer;
import flash.events.TimerEvent;
if (! textfield1 && ! textfield2)
import flash.text.TextField;
import flash.geom.Point;
var textfield1:TextField = new TextField();
var textfield2:TextField = new TextField();
var tfPosition:Point = new Point(100,50);
try
removeChild(textfield2);
catch(e:Error)
(trace (" ERROR : textfield2 is not already added"));
addChild(textfield1);
textfield1.x = tfPosition.x;
textfield1.y = tfPosition.y;
textfield1.text = "hello";
stop();
function playStop(te:TimerEvent):void
play();
if(!timer)
var timer:Timer=new Timer(1000);
timer.addEventListener(TimerEvent.TIMER,playStop);
timer.start();
第 2 帧:
removeChild(textfield1);
addChild(textfield2);
textfield2.x = tfPosition.x;
textfield2.y = tfPosition.y;
textfield2.text="goodbye";
stop();
示例 2
如果您在时间轴上手动放置了两个 TextField 实例,则您选择“使用设备字体”并且实例的名称在第一帧上实际上称为“textfield1”,在第二帧上称为“textfield2”。 (我已经通过复制和粘贴来完成,也没有遇到任何问题)。
这也适用于 CS6...文本显示良好
所以请给我们更多的细节。
第 1 帧上名为“textfield1”的 TextField 实例 第 1 帧的代码:
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.text.TextField;
textfield1.text = "hello";
stop();
function playStop(te:TimerEvent):void
play();
if (! timer)
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER,playStop);
timer.start();
第 2 帧上名为“textfield2”的 TextField 实例 第 2 帧的代码:
textfield2.text="goodbye";
stop();
【讨论】:
@Zane Clark 你的问题解决了吗?以上是关于不能有 2 个动态文本字段 AS3的主要内容,如果未能解决你的问题,请参考以下文章
AS3.0中影片剪辑元件嵌套了个动态文本框,怎样才能在文本框上也能显示手型?