【问题标题】:Can't have 2 dynamic text fields AS3不能有 2 个动态文本字段 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 不,我已经尝试过并作为第二个答案发布。如果实例被正确命名,这将作为一个魅力。 ;)

标签: actionscript-3 flash actionscript flash-cs6


【解决方案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 你的问题解决了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2010-11-01
  • 1970-01-01
相关资源
最近更新 更多