Flaş AS2 - SharedObject içine PHP kullanarak MySQL ithal değişken tasarruf Yardım?

2 Cevap php

Her oyuncu lokal ilerleme kaydetmek için SharedObject kullanan bir oyun oluşturma. Aynı zamanda bir online skorbord oluşturmak için merkezi bir veritabanına bağlanır. Bir kullanıcı ilk defa bir puan taktığında benzersiz bir kimliktir swf için veritabanından gönderilen ve SharedObject veri parçası olarak kaydedilir.

Kesinlikle her şey çalışır ve kimlik SharedObject kaydedilir, ancak swf yeniden başlatıldığında kimliği (SharedObject kaydedilen diğer değişkenler yük yapmak olsa bile) yüklemez.

Ben XML ile yapmak için belki biçimlendirilir yolu ile yapmak olabilir düşünüyorum ama emin değilim.

FLASH CODE

function saveGame(currID:Number) {
 gameInfo.data["playername"+currID] = playername;
 gameInfo.data["playerscore"+currID] = playerscore;
 gameInfo.data["playerID"+currID] = playerID;
 gameInfo.data["playerLevel"+currID] = playerLevel;
 for(i=1; i<6; i++){
 gameInfo.data["level"+i+"Score"+currID] = ["level"+i+"Score"];
 }
 gameInfo.flush();
}

function loadGame(currID:Number) {
 playername = gameInfo.data["playername"+currID];
 playerscore = gameInfo.data["playerscore"+currID];
 playerID = gameInfo.data["playerID"+currID];
 playerLevel = gameInfo.data["playerLevel"+currID];
}

function scoreboardSubmit() {

var insertReceive:XML = new XML();
insertReceive.ignoreWhite = true;
insertReceive.onLoad = function() {
playerID = this.firstChild.childNodes[0];
saveGame(currID);
};
insertSend = new LoadVars();
insertSend.playername = playername;
insertSend.playerscore = playerscore;
insertSend.playerID = playerID;
insertSend.sendAndLoad("scoreboardSend.php", insertReceive, "POST");

}

PHP CODE

<?php


$name = strip_tags($_POST['playername']);
$score = $_POST['playerscore'];
$id = $_POST['playerID'];

$con = mysql_connect("localhost","******","******");

mysql_select_db("******", $con);


if ($id == 0)
{

$insert="INSERT INTO scoreboard (Name, Score)
VALUES
('$name','$score')";

mysql_query($insert,$con);


$returnID = mysql_query("SELECT LAST_INSERT_ID()");

$playerID = mysql_result($returnID,0);

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "<returnID>" . $playerID . "</returnID>\n";

}
else
{

$update = mysql_query("UPDATE scoreboard SET Name = '$name', Score = '$score'
WHERE id = '$id'",$con);

}


mysql_close($con);
?> 

2 Cevap

Ben de anlayış m Eğer saveGame ile çağırdıktan sonra atm bir playerID var ve hat xml cevap koymak, çünkü XML alıcı nesne currID tarafından playerid yerine çalışın shuld currID tanımsız arg gibi.

function scoreboardSubmit() {

 var insertReceive:XML = new XML();
 insertReceive.ignoreWhite = true;
 insertReceive.onLoad = function() {
  var currID = this.firstChild.childNodes[0];
  saveGame(currID);
 };
insertSend = new LoadVars();
insertSend.playername = playername;
insertSend.playerscore = playerscore;
insertSend.playerID = playerID;
insertSend.sendAndLoad("scoreboardSend.php", insertReceive, "POST");

}

Eğer php sayfası doğru içerik türü eklemek gerekir

header('Content-type: text/xml');

Nihayet ben (aynı currID için tüm oyunu ile ilgili özelliklerini içeren bir savedgame nesnesi kullanarak Exemple için) farklı bir şekilde veri depolamak için daha iyi olacağını düşünüyorum

Bu ancak cevap için teşekkürler sorun değildi.

Ben sorun olduğunu düşünüyorum SharedObject gerçek sayı olarak değişken depolama sorunlarınız ve PHP geçti gerekiyordu gibi sadece kimliği için skor için iyiydi dizeleri her şeyi, dönüştürme değildi ama ne zaman.

SharedObject saklanacak bir dize kimliği dönüştürmek ve SharedObject çekerek zaman zaman sayısı ('string') bir numaraya geri dönüştürmek için String ('sayı') ile bunu çözdü.