【问题标题】:Reading remote text file with AIR, spaces and links使用 AIR、空格和链接读取远程文本文件
【发布时间】:2012-07-22 15:51:38
【问题描述】:

我的网络服务器中有一个文本文件 (txt)。我将读取文件内容并将其展示给用户。问题是它没有以正确的方式显示行分隔符和空格。我还需要激活可能的链接。例如,如果有http://www.google.com,那么用户只需点击链接,默认浏览器就会打开它。

到目前为止,我有这个:

var fileContents:String;

            try{

                var myLoader:URLLoader = new URLLoader();
                myLoader.addEventListener(Event.COMPLETE, onFileLoaded);
                myLoader.load(new URLRequest("http://my.website.com/test.txt"));

                function onFileLoaded(e:Event):void
                {
                    fileContents = String(e.currentTarget.data);
                    var alertMessage = fileContents;

我在java中做过同样的事情,但是我对ActionScript不太熟悉。

Java 代码:

URL url = new URL(getString(R.string.url));

                BufferedReader r = new BufferedReader(new InputStreamReader(
                        url.openStream(), "UTF-8"));
                StringBuilder total = new StringBuilder();
                String line;
                while ((line = r.readLine()) != null) {
                    total.append(line);
                    total.append(System.getProperty("line.separator"));

                }
                str = total.toString();
                r.close();

                return str;

java中的链接:

final SpannableString s = new SpannableString(sUrl);
            Linkify.addLinks(s, Linkify.WEB_URLS);

【问题讨论】:

    标签: actionscript air


    【解决方案1】:

    您可以考虑使用 Adob​​e 的文本布局框架 (TLF)。您可以将文本导入为 HTML,它将为文本中找到的任何 URL 创建可点击的链接。 TLF 有点笨拙,但是非常强大。

    private var myTextFlow:TextFlow = TextConverter.importToFlow(sourceText, TextConverter.TEXT_FIELD_HTML_FORMAT);
    

    如果您使用的是 Flex 4,可以将生成的 TextFlow 对象分配给文本组件之一:

    <s:RichText textFlow="{myTextFlow}" />
    

    在 Actionscript 项目中,您必须做更多工作才能使用 TextFlow。 TLF 使用 MVC 方法。 TextFlow 作为模型,你可以使用 Sprite 作为视图,ContainerController 作为控制器:

    private var container:Sprite = new Sprite();
    addChild(container);
    private var controller:ContainerController = new ContainerController(container, 800,600);
    myTextFlow.flowComposer.addController(controller);
    myTextFlow.flowComposer.updateAllControllers();
    

    【讨论】:

    • 感谢您的回答,我使用的是 Air 3.3,当我尝试将源文本添加到 textFlow 对象时,我只能从中读取到 TextFLow: [object TextFlow] 任何想法?
    • TextFlow 是一个复杂的对象,而不是简单的String,因此您不能仅仅尝试从中读取或追踪它的值。您可能应该查找使用 TLF 文本和/或 TextFlow 的其他示例。这是one to get you started...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多