如何以不同的方式格式化不同的文本行,从在 AS3 中创建的文本字段,从 txt 文件填充文本?

Posted

技术标签:

【中文标题】如何以不同的方式格式化不同的文本行,从在 AS3 中创建的文本字段,从 txt 文件填充文本?【英文标题】:How do I format different lines of text differently, from a textfield created in AS3, with text populated from a txt file? 【发布时间】:2016-07-21 13:56:24 【问题描述】:

所以我在 AS3 中有一个 flash 文件,最新版本的 flash。

它在 AS3 中创建一个文本框。然后它使用 AS3 从文本文件(2 行)中抓取文本并将其加载。然后我使用进一步的代码来格式化文本大小、字体、颜色等。

但是现在...我需要文本框的第 1 行是某种格式(大,大写),第二行是不同的格式(更小,没有大写)

下面是我的所有代码:

//BEGIN TXT LOADER
var myTextLoader:URLLoader = new URLLoader();
var winnerText:TextField = new TextField();

myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void 
winnerText.text = e.target.data;
addChild(winnerText);


myTextLoader.load(new URLRequest("EditableText.txt"));

//BEGIN TEXT BOX FORMATTING
winnerText.width = 1920;
winnerText.height = 300;
winnerText.y = 430;

//BEGIN TEXT & FONT FORMATTING
var casinoBranding:TextFormat = new TextFormat();

casinoBranding.size = 90;
casinoBranding.align = TextFormatAlign.CENTER;
casinoBranding.font = "Bliss Pro";
casinoBranding.leading = -50;
winnerText.defaultTextFormat = casinoBranding;

【问题讨论】:

你能澄清一下“第一行”是什么意思吗?这是第一个换行符 (\n) 之前的所有文本还是发生自然换行之前的第一行? 【参考方案1】:

您可以使用TextField/setTextFormat()TextFormat 应用于特定范围的文本。

要对第一行文本应用不同的文本格式,您可以这样做:

var casinoBranding:TextFormat = new TextFormat();
var casinoBrandingFirstLine:TextFormat = new TextFormat();
// ... apply formatting options

function onLoaded(e:Event):void 
    winnerText.defaultTextFormat = casinoBranding;
    winnerText.text = e.target.data;
    winnerText.setTextFormat(casinoBrandingFirstLine, 0, winnerText.getLineOffset(1));

请注意,如果涉及自动换行,它会改变“第一行”的真正含义。

【讨论】:

您能否将其与我现有的代码集成以便我可以粘贴它?我已经尝试过,但它似乎与我的代码冲突。您还忘记了 CasinoBranding 和 firstLine 之间的时间段。而且我认为 firstLine 适用于不同类型的文本框.... 不,我没有“忘记句号”,也没有“适用于不同类型的文本框”。 casinoBrandingFirstLine 只是一个不同的 TextFormat,因为您希望 winnerText 的第一行文本看起来像。只需设置您想要的任何格式属性。您可以将 3 行 winnerText 代码复制粘贴到您的 onLoaded 处理程序中,其余代码相同。 亚伦。我欠你一杯啤酒或一杯咖啡。【参考方案2】:

您可以像@Aaron 建议的那样应用 TextFormat。另一种方法是使用样式表。这是一个例子

http://snipplr.com/view/39474/as3-textfield-and-stylesheet-example-created-in-actionscript/

【讨论】:

谢谢,但我相信一定有其他方法。我找到了一个解决方案,即使用文本范围,例如 myTextField.setTextFormat(myformat, 49, 65);但不幸的是,范围会根据文本文档中的文本而改变......(请告诉我如何在 cmets 中格式化代码) @user2442016 您可以使用反引号 (`code`) 来格式化 cmets 中的代码。 (点击评论输入区域旁边的“帮助”链接。) @SameerJain TextFormat 不必应用于整个文本。 这是一个错误的答案。否决,删除它。可以在一个文本字段中将不同的 TextFormat 应用于文本的任意多个不同部分。 抱歉错过了范围部分。我会修改答案。像@Aaron 建议你也可以使用文本格式

以上是关于如何以不同的方式格式化不同的文本行,从在 AS3 中创建的文本字段,从 txt 文件填充文本?的主要内容,如果未能解决你的问题,请参考以下文章

合并 MSER 中的区域以识别 OCR 中的文本行

动态调整文本大小以使整个文本行适合文本字段

如何在 C++ 程序中的 2 个特定字符之间比较 2 个文件中的文本行

在 C++ 中计算文本文件中的文本行数时出错

C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )

如何突出显示离鼠标最近的文本行?