1

質問をする前に少し説明します... 私は、メイン メニューからロードおよびアンロードするゲームを数多く作成しました。

プレーヤーは、ゲームをプレイする前にメイン メニューに自分の名前を入力します。プレーヤーがゲームを完了すると、時間を節約し (ゲームを完了するために必要な時間)、この時間をメイン メニューにアンロードします。

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

2 に答える 2

2

この目的のために Cookie(sharedObject) を使用できます。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;

startTime が再度必要な場合は、Cookie と変数名で取得できます。

于 2012-04-08T22:28:22.120 に答える
1

少量のデータの場合は、SharedObjects を使用してautomaticoo のソリューションを使用するのが最善です。セットアップにかかる時間は最小限で、少量のデータを保存する効率的な方法です。

ただし、そうでない場合は、いつでもテキスト ファイルを読み込んで保存することができます。これは、ByteArrays と FileReferences を使用して行うことができます。

Wordファイルへの保存を取り上げたので、テキストファイルに保存することが目標を達成するための最良の方法であることをお勧めします(ただし、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 行上)

ロードするには、データを行ごとに分割するだけで、文字列と整数/数値でいっぱいの配列になります (ただし、スコアが機能する場合があります)。繰り返しますが、それを行うのに助けが必要な場合はお知らせください。

あなたの目標は私には完全に明確ではないので、これがあなたが求めているものを達成するための最も効率的な方法であるかどうかはわかりませんが、大量のデータを保存するのに非常に便利な方法でした.プレーヤーのすべてのスコアを合成している場合は、やりたいと思っていると思います。

編集:

さて、あなたが以下に提起した質問に:

  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")
}

これが行うことは、既存の保存データを取得し、それを配列 (保存ファイルの 1 行が 1 つの配列データ エントリ) にプッシュし、適切なデータを追加して、保存ファイルに戻すことです。

(2) メイン メニューでこれをロードするには、このコードをメイン メニューのフレームに配置するだけです。

dataloader.load(new URLRequest("savedata.txt"));
dataloader.addEventListener(Event.COMPLETE,loaddata);
function loaddata (event:Event) {
    dataarray = event.target.data.split(/\n/);
}

これにより、既存のすべてのデータが配列にロードされます。そこからどうするかはあなた次第です。

于 2012-04-09T03:34:02.723 に答える