保存文本字段输入
在问我的问题之前,我会稍微解释一下......我已经创建了无数个加载和卸载主菜单的游戏。保存文本字段输入
播放器进入他们的名字在主菜单上玩任何游戏,当玩家完成一个游戏,我想他们节省时间(拍摄完成游戏)和卸载这个时候回到主菜单之前。
是否有使用AS3到Word文档或类似这样的东西节省时间的方法吗?我无法用php将时间发送到我的网站,因为这些游戏将用于竞赛中,并且它们都需要与互联网一起工作。
任何想法家伙?
编辑:
var dataloader:URLLoader = new URLLoader();
var dataarray:Array = new Array(); // do this where you intialise other vars
function preparesave()
{
dataloader.load(new URLRequest("savedata.txt"));
}
dataloader.addEventListener(Event.COMPLETE,savedata);
function savedata (event:Event)
{
dataarray = event.target.data.split(/\n/);
dataarray.push(MyTimer);
var bytes:ByteArray = new ByteArray();
var fileRef:FileReference = new FileReference();
for (var i = 0; i < dataarray.length;i++)
{
bytes.writeMultiByte(dataarray[i] + "\n", "iso-8859-1");
bytes.writeMultiByte('English Game Time: ',"iso-8859-1");
bytes.writeMultiByte(HourText.text.toString(),"iso-8859-1");
bytes.writeMultiByte(':',"iso-8859-1");
bytes.writeMultiByte(MinuteText.text.toString(),"iso-8859-1");
bytes.writeMultiByte(':',"iso-8859-1");
bytes.writeMultiByte(SecondText.text.toString(),"iso-8859-1");
}
fileRef.save(bytes,"savedata.txt")
}
对于少量的数据,你是最好的关闭只是通过使用共享对象与automaticoo的解决方案去..他们需要最少的时间来建立并存储少量数据的有效方式。
但是,如果不适合您,您可以随时加载/保存到文本文件。你可以使用ByteArrays和FileReferences来做到这一点。
既然你提出了保存到一个word文件,我会建议保存到一个文本文件将是实现你的目标的最佳途径(尽管除了你的文字doc。建议,我不知道你的目标是有点不清楚)
这里是保存到一个文本文件的严肃快速演示。如果您需要帮助加载它也让我知道。
function savedata() {
var bytes:ByteArray = new ByteArray();
var fileRef:FileReference = new FileReference();
bytes.writeMultiByte(playername + "\n", "iso-8859-1");
bytes.writeMultiByte(playerscore.toString(),"iso-8859-1");
fileRef.save(bytes,"savedata.txt");
}
这是非常简单的。通过使用writeMultiByte,我们可以写拯救我们的文本文件之前,需要尽可能多的数据!如果你有需要保存的数据数组,这是特别有用的。
无论如何,“iso-8859-1”只是对字符集/文件格式的引用。我不确定你是否可以简单地写utf-16等。我总是刚刚使用它,因为它是上面写的。
结果在文本文件中,这里将是以下:
彼得
9547(但上一行)
加载,就可以导致一个由线只拆分数据,包含字符串和整数/数字的数组(但是您的分数可能有效)。再次,让我知道你是否需要帮助。
我不知道这是否是你实现后,因为你的目标是不完全清楚我在做什么的最有效的方法,但它在存储大量数据的一直是一个非常有用的方式为自己,如果你将所有球员的分数加起来,我猜你会想要做的。
编辑:
好了,到了你的问题提出如下:
- 要保存多个用户的得分非常简单。只需要一个单独的数组来加载文本文件中的数据(如果文本文件存在),然后将新分数添加到数组的末尾,然后保存回文本文件。
下面是一个例子:
var dataloader:URLLoader = new URLLoader();
var dataarray:Array = new Array(); // do this where you intialise other vars
function preparesave() {
dataloader.load(new URLRequest("savedata.txt"));
}
dataloader.addEventListener(Event.COMPLETE,savedata);
function savedata (event:Event) {
dataarray = event.target.data.split(/\n/);
dataarray.push(playername);
dataarray.push(playerscore);
var bytes:ByteArray = new ByteArray();
var fileRef:FileReference = new FileReference();
for (var i = 0; i < dataarray.length;i++) {
bytes.writeMultiByte(dataarray[i] + "\n", "iso-8859-1");
}
fileRef.save(bytes,"savedata.txt")
}
这样做是采取任何现有保存数据,它推到一个数组(其中您保存文件的一行是一个阵列数据输入),将您的适当的数据,并将其推送回保存文件。
(2)向在同时在主菜单中加载此,简单地将这些代码在主菜单的帧..
dataloader.load(new URLRequest("savedata.txt"));
dataloader.addEventListener(Event.COMPLETE,loaddata);
function loaddata (event:Event) {
dataarray = event.target.data.split(/\n/);
}
这将所有现有数据加载到阵列。你从那时起做什么取决于你。
嘿谢谢你的回复。 这段代码可以节省玩家在游戏结束时的时间,并且在完成游戏卸载并重新加载主菜单后需要加载。 我现在有几个问题: 代码要求用户保存,这可以自动完成吗? 如果我想在同一个txt文件中保存多个用户时间,我该怎么做? 最后,我将如何去在主菜单中加载这个? 感谢您的帮助。 – Ant 2012-04-09 10:58:50
不用担心好友。不幸的是,(但也是幸运的),保存到文件不能在没有询问用户的情况下完成,因为这存在安全风险。这不是我们能够实现的。至于你的其他问题,我会用一些答案编辑我的答案。 :) – hazdog 2012-04-09 13:07:46
嘿已编辑我的问题在页面的顶部显示我有什么样的代码。出于某种原因,它不会出现和错误或不存储它?对不起,这是我失去了一些东西的问题。 – Ant 2012-04-09 15:27:48
您可以使用此purpuse一个cookie(共享对象)。见http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html
var data:SharedObject = SharedObject.getLocal("userdata");
data.startTime = new Date().time;
如果您需要的开始时间再次你可以只通过cookie和变量名进行检索。
你能澄清最后一句话吗?因为通过php发送分数听起来像是“在互联网上工作”。 – joncys 2012-04-08 15:25:17