網站 / 論譠 :
Download the Android SDK
Google Android 論壇
Android手机网 Android软件 Android壁纸 Android游戏 Android下载
Open Android - Android 手機新聞論壇
中文輸入法 :
科科輸入法 (改) : 嘸蝦米輸入法
科科輸入法
嫩輕鬆輸入法
Other :
G1 News Twitter
最近在看Zend framework..
順便把一些找到的資源整理一下。
Zend Framework
Zend Framework 教程大全(英文版)
Zend Framework China - Zend Framework 中文站
陸續再補上。
Tag:
zend framework php
AS3的remoting不支援recordSet囉...那什麼是recordset?
在as2時:
PHP端
$query = 'SELECT * FROM `News`";
return mysql_query($query);
FLASH
function onResult(result:Result)
{
trace(result.items[i].news_title);
//就可以直接得到值了。
}
那到了AS3時,因為改採用AMF3的格式,我們會發現傳回來的資料和以前的不太一樣。
如下圖:
回傳的東西會包在 serverInfo裏。
資料會存在initialData,欄位名稱存在columnNames。
乍看之下,感覺變麻煩了。我們還得自己製作「組合」的動作。
才能像以前一樣的使用。
pdf文件:AMF 3 Specification
以下是我目前正在使用的remoting class
AS3
Remoting.as:
package
{
import flash.events.Event;
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.net.Responder;
import ArrayCollectionDP;
public class Remoting extends NetConnection
{
/*VARIABLE*/
private static var m_instance:Remoting
private static var m_constructorLocked:Boolean = false;
private var m_eventName:String;
private var m_data:Object;
/*CONSTRUCTOR*/
public function Remoting()
{
if( m_constructorLocked )
{
throw new Error( "Remoting is a singleton" );
}
}
/*PUBLIC*/
public static function GetInstance():Remoting
{
if( m_instance == null )
{
m_constructorLocked = false;
Remoting.m_instance = new Remoting();
m_constructorLocked = true;
}
return Remoting.m_instance;
}
public function Init():void
{
objectEncoding = ObjectEncoding.AMF3;
connect(yourGatewayPath);
}
public function GetResult():Object
{
return m_data;
}
public function GetData(a_funcName:String='',a_eventName:String=""):void
{
m_eventName = a_eventName
var responder:Responder = new Responder(onResult, onFault);
this.call(YouServiceName+"."+a_funcName, responder);
}
/*PRIVATE*/
private function onResult(result:Object):void
{
m_data = ArrayCollectionDP.ToObject(result);
if (m_eventName != "")
{
dispatchEvent(new Event(m_eventName));
}
}
private function onFault(fault:Object):void
{
trace(String(fault.description));
//this.dispatchEvent({type:"onDataError"});
}
}
}
ArrayCollectionDP.as:
package{
public class ArrayCollectionDP {
public static function ToObject(a_arrayCollection:Object)
{
var initialData:Array = a_arrayCollection.serverInfo.initialData;
var category:Array = a_arrayCollection.serverInfo.columnNames;
var dataAry:Array = new Array();
var i:int;
for (i = 0; i < initialData.length; i++)
{
dataAry[i] = new Object();
for (var aIndex:* in category)
{
dataAry[i][category[aIndex]] = initialData[i][aIndex];
}
}
return dataAry
}
}
}
其他class要使用Remoting時
Main.as:
package {
import Remoting;
public class Main extends MovieClip
{
public function Main()
{
Remoting.GetInstance().Init();
Remoting.GetInstance().GetData('GetExam','GetData');
Remoting.GetInstance().addEventListener('GetData', GetDataHandler)
}
private function GetDataHandler(e:Event)
{
var m_obj = m_remoting.GetResult()
}
}
提供2個Debuggers的工具。
ServiceCapture
Charles Web Debugging Proxy
ExamBase.as
protected function SetAnsHandler(a_event:Event=null):void
{
mc_submit.visible = true
SetLock(a_event.m_target);
}
Alpha.as extends ExamBase
override function SetAnsHandler(a_event:AlphaEvent):void
{
super.SetAnsHandler(a_event)
//something
}
出現error 1023: Incompatible override.
原因是丟進去的變數,屬性不同的關係。
查了一下資料和文章,發現原來override時,不允許丟進來的參數和父類別不相同
節錄一下help的文字:
To override an inherited method, you must use the override attribute
and ensure that the name, number,
type of parameters, and the return type match exactly.
那如果要達到原本的需要,要朝向overload的方面去做,但as3又不支援overload。
所以有幾篇文章是教如何「模仿」overload的效果。
AS3笔记(8),关于方法重载
[转]AS3类 - 重载的实现
我自己完完全全的使用gmail來收發我所有的email了。
但gmail一直以來麻煩的就是不能任何的在email裏面插入html。
雖然陸陸續續有很多工具像better gmail 但也在升級到2.0版後。
在簽名檔使用html的功能也不見了。
這幾天找了一個外掛叫做GreaseMonkey。
這支外掛乍看之下,好像沒什麼功能。後來從google上找到,才知道這個外掛很厲害的
他可以在網頁裏使用自己的javascript。
Gmail - Insert HTML Signature
要按右上角的Install this Script.
然後到你的gmail,你可以看見左邊會多出一個Html Signature。如圖:
就可以自行編行你的簽名檔啦。
最近在練習寫AS3,要適應一下新的寫法,目前遇到了一個怪現像。
通常要讓movie clip , MOUSE_OVER會有手指頭時,只要下一個
mc.buttonMode= true 就解決了。
但實作上,如果我的class 不extends MovieClip 或Button的話。
卻出不來,程式如下:
/*CONSTRUCTOR*/
public function AlphaItem(a_mc:MovieClip,a_num:Number,a_str:String)
{
m_target = a_mc;
m_target.buttonMode = true
/*加上這個就好了*/
m_target.mouseChildren = false;
m_char=a_str;
m_data=a_num;
m_target.addEventListener(MouseEvent.MOUSE_DOWN,MOUSE_DOWN);
m_target.addEventListener(MouseEvent.MOUSE_OVER,MOUSE_OVER);
m_target.addEventListener(MouseEvent.MOUSE_OUT,MOUSE_OUT);
SetData();
}
2008.04.17
附註:
由於我的MovieClip裏面。除了有一個background之外還有2個文字框。
所以只靠buttonMode=true是不可以的。
奶綠:
因為氣泡事件,所以會去抓到該元件裡的dynamic文字
所以加上mouseChildren = false;
把子系的mouse感應通通取消即可
訂閱:
文章 (Atom)