2012-04-08 2 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

답변

0

데이터의 양이 적은 경우 SharedObjects를 사용하여 automaticoo의 솔루션을 사용하는 것이 가장 좋습니다. 설치하는 데 최소한의 시간이 걸리고 소량의 데이터를 저장하는 효율적인 방법입니다.

그러나, 그렇지 않은 경우 언제든지 텍스트 파일을로드하거나 저장할 수 있습니다. ByteArrays 및 FileReferences를 사용하여이 작업을 수행 할 수 있습니다.

단어 파일로 저장 한 것이므로 텍스트 파일로 저장하면 목표를 달성하는 가장 좋은 방법이 될 것이라고 제안합니다. 단, 의사가 아닌 단어 제안. 일종의 불분명 함)

여기 텍스트 파일에 저장하는 방법에 대한 간단한 설명이 있습니다 ..로드하는 데 도움이 필요하면 알려주세요.

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

+0

걱정하지 마세요. 안타깝게도 파일에 저장하는 것은 보안 위험 때문에 사용자에게 묻지 않고 물리적으로 수행 할 수 없습니다 (다행스럽게도). 우리가 성취 할 수있는 것이 아닙니다. 귀하의 다른 질문에 관해서는, 나는 몇 가지 대답으로 위의 내 대답을 편집합니다. :) – hazdog

+0

안녕하세요, 페이지 상단에 내 질문을 편집하여 내가 본 코드가 무엇인지 보여줍니다. 웬일인지 그것이 올라 오지 않는다. 그렇지 않으면 아무것도 저장하지 않느냐? 죄송합니다. 문제가 뭔가 누락되었습니다. – Ant

관련 문제