最近做的一個小遊戲中需要上傳積分、查看歷史積分、排行榜的功能,但是公司前端與後端進行數據交互的中間語言用的是PHP,本人對PHP不是太瞭解,經過與後端人員交流終於還是做好了,一下貼下代碼:
1.上傳積分:
loader = new URLLoader();
url = "http://127.0.0.1/talesofcrystal/domain/web_mini_domain.php";
urlRequest = new URLRequest(url);
urlRequest.method = URLRequestMethod.POST;
variables = new URLVariables();
variables.method = "update";
variables.miniId = int(PlayerDataContainer.getInstance().user_id);
//赋值积分totalScore
variables.miniScore = totalScore;
urlRequest.data = variables;
//trace(urlRequest.data)
loader.addEventListener(Event.COMPLETE,loaded);
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
function loaded(event:Event):void
{
//trace("loader.data.miniScore"+loader.data.miniScore)
isUpScore = false;
}
loader.load(urlRequest);
2.查看最高積分:
isUpScore = true;
loader = new URLLoader();
url = "http://127.0.0.1/talesofcrystal/domain/web_mini_domain.php";
urlRequest = new URLRequest(url);
urlRequest.method = URLRequestMethod.POST;
variables = new URLVariables();
variables.method = "select";
variables.miniId = int(PlayerDataContainer.getInstance().user_id);
urlRequest.data = variables;
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(event:Event):void
{
highestScore = loader.data.miniScore;
//trace("loader.data.miniScore" + loader.data.miniScore)
highest_score.text = "最高積分 " + highestScore + "";
isUpScore = false;
}
loader.load(urlRequest);
[/code]3.排行榜:[code]
isUpScore = true;
loader = new URLLoader();
url = "http://122.147.41.142/talesofcrystal/domain/web_mini_domain.php";
urlRequest = new URLRequest(url);
urlRequest.method = URLRequestMethod.POST;
variables = new URLVariables();
variables.method = "sort";
variables.miniId = int(PlayerDataContainer.getInstance().user_id);
if (highestScore > totalScore)
variables.miniScore = highestScore;
else
variables.miniScore = totalScore;
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlRequest.data = variables;
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(event:Event):void
{
//玩家昵称
var arr1 = new Array();
var str:String = loader.data.username;
arr1 = str.split(//n/);
preTen(arr1);
//玩家积分
var arr2 = new Array();
var str1:String = loader.data.score;
arr2 = str1.split(//n/);
preTenScore(arr2);
//当前玩家在排行榜的排名
rankNum = loader.data.position;
rank_txt = new ShowText("您在此排行榜的位置是 " + rankNum + " 位");
rank_txt.x = 343;
rank_txt.y = 390;
bank_sprite.addChild(rank_txt);
isUpScore = false;
}
loader.load(urlRequest);
其中上傳積分也做了當前玩家是否為新老註冊玩家的判斷,確保數據庫中保存的當前玩家的ID只有一個。排行榜中的function loaded(event:Event):void{}是通過PHP從數據庫中獲得積分排行前十名的玩家的昵稱以及積分,而排行榜中的arr2 = str1.split(//n/)和arr1 = str.split(//n/)則是通過PHP從數據庫返回的玩家的昵稱和積分的切割存放到數組中,用preTen(arr1)和preTenScore(arr2)自定義的函數顯示積分排行前十名的玩家的昵稱以及積分。由於是第一次這樣做過,所以裏面不免會有寫的不妥之處,望請高手指教一番……