不能有 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中影片剪辑元件嵌套了个动态文本框,怎样才能在文本框上也能显示手型?

Flash CS4/AS3 动态文本框

AS3:如何在外部 swf 上的文本字段中使用 Android 默认字体?

在As3中创建一个动态表

在 AS3 中自动检测输入文本字段的值

AS3里【TextField】于【TextArea】有啥区别?