Flash 的 debugging mode 不好用,試了好幾次都沒成功。索性用 Mamp ( Apache, PHP ) 寫了個遠端除錯功能,適合在區域網路內使用。
PHP 簡單三個檔: index.php (顯示), log.php (接收) 和 clear.php (清除)。log.php 接收資料記錄到文字檔裡,由 index.php 顯示文字檔內容。
log.php
<?php
date_default_timezone_set('Asia/Taipei');
if(isset($_REQUEST['log'])) {
$fp = fopen('log.txt', 'a+');
$time = date("H:i:s ::: ");
fwrite($fp, $time . $_REQUEST['log'] . "\n");
fclose($fp);
}
index.php
<?php
echo '<meta charset="UTF-8"><pre>';
$log = file_get_contents('log.txt');
echo $log;
echo '</pre>';
clear.php
<?php
unlink('log.txt');
AS 的部份是發出 HTTP request, 使用 lin.shinder.utils.FarLog 類別的 log() 靜態方法。2013-05-28 修改
package lin.shinder.utils
{
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.utils.getTimer;
import flash.events.Event;
import flash.events.IOErrorEvent;
// import flash.events.HTTPStatusEvent;
// import flash.events.SecurityErrorEvent;
/**
* @date 2013-05-27
* @author shinder.lin@gmail.com
*/
public class FarLog
{
public static var requestEnabled:Boolean = true;
private static const LOG_URL = "http://192.168.0.103:8888/farlog/log.php";
public static function log(msg:String) {
if(requestEnabled) {
var req:URLRequest = new URLRequest( LOG_URL );
var vars:URLVariables = new URLVariables;
var loa:URLLoader = new URLLoader;
vars.log = getTimer() + ' : ' + msg;
req.method = URLRequestMethod.POST;
req.data = vars;
loa.addEventListener(IOErrorEvent.IO_ERROR, eventHandler, false, 0, true);
loa.load(req);
}
trace(msg);
}
private static function eventHandler(event:Event):void {
// trace(event);
}
}
}
初步使用情況還算滿意。
1 則留言:
用 server 的時間做為識別是不智的決定,應該用 client 的時間。
張貼留言