如何以不同的方式格式化不同的文本行,从在 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 文件填充文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 程序中的 2 个特定字符之间比较 2 个文件中的文本行
C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )