2012-04-08 66 views
0

在问我的问题之前,我会稍微解释一下......我已经创建了无数个加载和卸载主菜单的游戏。保存文本字段输入

播放器进入他们的名字在主菜单上玩任何游戏,当玩家完成一个游戏,我想他们节省时间(拍摄完成游戏)和卸载这个时候回到主菜单之前。

是否有使用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") 
} 
+4

你能澄清最后一句话吗?因为通过php发送分数听起来像是“在互联网上工作”。 – joncys 2012-04-08 15:25:17

回答

0

对于少量的数据,你是最好的关闭只是通过使用共享对象与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(但上一行)

加载,就可以导致一个由线只拆分数据,包含字符串和整数/数字的数组(但是您的分数可能有效)。再次,让我知道你是否需要帮助。

我不知道这是否是你实现后,因为你的目标是不完全清楚我在做什么的最有效的方法,但它在存储大量数据的一直是一个非常有用的方式为自己,如果你将所有球员的分数加起来,我猜你会想要做的。

编辑:

好了,到了你的问题提出如下:

  1. 要保存多个用户的得分非常简单。只需要一个单独的数组来加载文本文件中的数据(如果文本文件存在),然后将新分数添加到数组的末尾,然后保存回文本文件。

下面是一个例子:

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/); 
} 

这将所有现有数据加载到阵列。你从那时起做什么取决于你。

+0

嘿谢谢你的回复。 这段代码可以节省玩家在游戏结束时的时间,并且在完成游戏卸载并重新加载主菜单后需要加载。 我现在有几个问题: 代码要求用户保存,这可以自动完成吗? 如果我想在同一个txt文件中保存多个用户时间,我该怎么做? 最后,我将如何去在主菜单中加载这个? 感谢您的帮助。 – Ant 2012-04-09 10:58:50

+0

不用担心好友。不幸的是,(但也是幸运的),保存到文件不能在没有询问用户的情况下完成,因为这存在安全风险。这不是我们能够实现的。至于你的其他问题,我会用一些答案编辑我的答案。 :) – hazdog 2012-04-09 13:07:46

+0

嘿已编辑我的问题在页面的顶部显示我有什么样的代码。出于某种原因,它不会出现和错误或不存储它?对不起,这是我失去了一些东西的问题。 – Ant 2012-04-09 15:27:48