2010-02-14 1 views
0

Я создаю игру, в которой используется sharedObject, чтобы сохранить ход каждого игрока локально. Он также подключается к центральной базе данных для создания онлайн-табло. Когда пользователь впервые вводит оценку, уникальный идентификатор отправляется из базы данных в swf и сохраняется как часть данных sharedObject.Flash AS2 - Помогите сохранить переменную, импортированную из mySQL, используя PHP в sharedObject?

Абсолютно все работает, и идентификатор сохраняется в sharedObject, однако при перезапуске swf идентификатор не загружается (даже если другие переменные, сохраненные в sharedObject, загружаются).

Я думаю, что это может быть связано с тем, как он отформатирован, возможно, с XML, но я не уверен.

FLASH КОД

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 КОД

<?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); 
?> 

ответ

0

Если я м понимание хорошо, вы shuld попробовать заменить playerID на currID в вашем объекте XML приемника, потому что atm вы помещаете xml-ответ в playerID var и строку после вас вызовите saveGame с currID как аргумент, который не определен.

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

} 

Вы должны добавить правильный тип контента на страницу PHP

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

Наконец, я думаю, было бы лучше, чтобы хранить ваши данные по-другому (для Exemple с помощью объекта savedgame, который содержит все связанные с игрой свойства для одного и того же ИД)

0

Спасибо за ответ, но это не проблема.

Я думаю, проблема заключалась в том, что когда у sharedObject возникали проблемы с хранением переменной в качестве истинных чисел, а просто преобразовывал все в строки, что было хорошо для оценки, но не для идентификатора, поскольку это должно было быть передано на PHP ,

Решил его с помощью String ('number') преобразовать идентификатор в строку, которая будет храниться в sharedObject, а затем Number ('string'), чтобы преобразовать ее обратно в число при вытаскивании из sharedObject.