如何在 ActionScript 3.0 中写入文本文件?

Posted

技术标签:

【中文标题】如何在 ActionScript 3.0 中写入文本文件?【英文标题】:How to write to a text file in ActionScript 3.0? 【发布时间】:2012-04-22 05:50:05 【问题描述】:

我正在研究一种身份验证方法,我有 2 个名为“用户名”和“通过”的文本字段 我想这样做,以便当用户输入他们的用户名和密码时,该信息会存储到一个文本文件中。因此,当他们重新登录时,它会从该文本文件中读取用户名和密码以进行登录。 我怎样才能做到这一点? 谢谢:D

【问题讨论】:

如果它是一个 Web 应用程序,请查看 SharedObject 类(创建一个本地共享对象来存储数据)。如果是 AIR 应用程序,请使用 File 类 将用户名和密码保存为纯文本是个坏主意。确保您研究了某种加密。 【参考方案1】:

可以保存到文本文件(使用 AIR 中的 File 类),但这确实不是一个好方法。相反,您应该检查 SharedObject 类

快速示例:

 var sharedObject:SharedObject = SharedObject.getLocal("userInfo"); //this will look for a shared object with the id userInfo and create a new one if it doesn't exist

一旦你对你的 sharedObject 有了句柄

sharedObject.data.userName = "Some username";
sharedObject.data.password= "Some password"; //it's really not a good idea to save a password like this
sharedObject.flush(); //saves everything out

现在在代码的其他地方取回您的数据

var sharedObject:SharedObject = SharedObject.getLocal("userInfo");
trace(sharedObject.data.userName);
trace(sharedObject.data.password);

此对象本地保存到用户计算机。它与浏览器 cookie 非常相似。

现在以纯文本形式保存此对象的密码不是一个好主意。更好的计划是验证服务器上的登录信息并在此对象中存储某种会话 ID。

在伪代码中:

function validateLogin()
    var sessionID = server->checkLogin(username, password); //returns a string if authed, nothing if not
    if(sessionID)
         sharedObject->sessionID = sessionID;
     else 
        //bad login
    

更多阅读:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html

http://www.republicofcode.com/tutorials/flash/as3sharedobject/

【讨论】:

【参考方案2】:

理想情况下,您不能使用 flash 编写文件(除非它是 AIR 应用程序)。FLash 应该在浏览器上运行,因此允许它访问系统资源(如您的文件系统)是一种安全威胁。但是,AIR 是一种将 Flash 作为桌面应用程序运行的技术,在这种情况下,它可以写入文件。

共享对象是一种闪存可以在浏览器环境中保存一些临时数据的方法,但是,如果你清除缓存并删除浏览器文件,我想它也会被刷新。

【讨论】:

以上是关于如何在 ActionScript 3.0 中写入文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 actionscript 3.0 中使用掩码?

如何在 Actionscript 3.0 中使用补间形状?

在 ActionScript (3.0) 中干净地合并两个数组?

如何在 Flash 中使用 Actionscript 3.0 制作动态视频播放器

如何在Actionscript 3.0中获取数组的所有排列?

如何在actionscript 3.0中对钻石,梅花,黑桃,心等卡片进行排序