A
自辦活動允許主辦人以 Flash 的形式進行活動,但基於安全性考量目前站上的編輯器是不允許手動內嵌 swf 檔案的,因此若要以 Flash 進行活動,請在製作完成後將檔案或下載連結寄至站務信箱,由站方為您修改後台的關卡內容,即可在活動頁上顯示出內嵌的 Flash 活動。
以 Flash 進行活動可使用遊戲學校提供的 Flash API,串接此 API 可讓玩家在破關時自動將活動狀態設為已破關,並進行加點、發佈動態等動作。(「加點方式」設為「系統自動判斷破關並加點」才會有上述效果;如果設為「由主辦人填寫加點」則只會將該關卡設為已破關,整個活動破關及加點仍然須由主辦人進入"填寫加點名單"頁面手動操作)
與其他類型的自辦活動相同,活動必須至少新增一個關卡,並選擇一個關卡做為「最後一關」,整個活動才能順利開始、結束。關卡中玩家仍然會看到答案輸入框,因此建議可將「如何對答」欄位選擇為「由主辦人手動審答」,而如果有玩家送出答案,不予理會即可。(也就是不需要進「手動審答後台」審核該答案是否答對,若審為答對則該玩家將等同於該關卡已破關)
◎API使用說明
- 請求網址:http://gameschool.cc/ugevent/{id}/flash/?sig={key}&action=pass&score={score}
- 參數說明:(將以上網址的{參數}按照以下說明修改)
- id:申請辦活動後,站方回信中會告知id,範例:85
- key:申請辦活動後,站方回信中會告知key,範例:665e3a7c3a118ac6c803836c19a49651
[注意] key 為存取 API 的重要憑證,請務必不可以外洩給他人
- score:如果希望玩家過關後,該關卡自動設定分數,方便另作統計或決定獎勵點數(可在"關卡分數統計頁"中查看),則可在此參數填入數字;若不使用此功能則留白即可
- 回應格式:success=[成功與否]&msg=[提示訊息]
- success:會回傳「true」或「false」兩種字串;true 表示本次請求為預期中的結果,將會把該名玩家的狀態設為已破關並執行後續操作
- msg:不論 success 回傳值為何,msg 皆會回傳提示訊息,建議可將此訊息顯示在遊戲畫面中
- 附註:由於安全性考量,存取此 API 時請求來源只允許在遊戲學校主機,但為了方便主辦人在設計活動時進行測試,另外還允許放置在 Dropbox 的公開檔案可以存取此 API,因此主辦人在將正式版檔案交給站方前想先測試存取 API 的話,可先將檔案放置在 Dropbox 的 Public 目錄下,並從該檔案的公開連結進入測試。(如下圖)
◎Flash範例程式
以下程式碼執行後即會對 API 發出請求,也就是會立刻使玩家在系統上註記為破關並執行後續操作(加點、發動態等),因此請注意在 Flash 程式中的執行時機,務必在整個活動確認破關後再執行下列程式。
ActionScript 2.0
var myData = new LoadVars();
myData.onLoad = function(s) {
text1.text = this.success;
text2.text = this.msg;
};
myData.load("http://gameschool.cc/ugevent/85/flash/?sig=665e3a7c3a118ac6c803836c19a49651&action=pass");
ActionScript 3.0
var urlRequest:URLRequest = new URLRequest("http://gameschool.cc/ugevent/85/flash/?sig=665e3a7c3a118ac6c803836c19a49651&action=pass");
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(urlRequest);
function urlLoader_complete(e:Event):void {
text1.text = urlLoader.data.success;
text2.text = urlLoader.data.msg;
}
上述程式中的
text1.text = ...
及
text2.text = ...
的意義是「將動態文字 text1 及 text2 的內容設為某文字」,設計程式時可將這兩句改掉,該 function 內的程式可自行運用,即為「收到 API 回應後的處理」。
因此依據 API 使用說明,上述程式便是將回傳結果 success 及 msg 的值皆顯示在畫面上的動態文字中;實務上可以只顯示 msg 即可,success 則用來判斷是否成功將玩家設為已破關。