RIA 開發感想(二)— Flash VS Ajax

來源:互聯網
上載者:User
ajax    說到Flash與Ajax不免要會惹來熱鬧的爭論。用google搜搜就有很多這樣的文章,這裡我就不引用了。不過,我還是想提一下 Luar 寫的 ‘展望2006年,Flash未來未有來!’這篇blog,裡面的看法我很贊同。同時Luar作為Flash的資深開發人員,他的言論是很有見地的。
  看完Luar的文章,你一定會有些悲觀。Flash到底還能走多遠?哎,還是不要想這樣的問題了。我的看法還是比較樂觀的。
  首先,來看看Ajax。經過幾個月的關注,我的理解是:Ajax的重點有兩個,一是與伺服器的無重新整理傳遞訊息,另一個是對dhtml的擴充(或者說是深度開發)。ajax裡,Javascript在瀏覽器中就像FlashPlayer裡的AS2.0,FlashPlayer就好象是MM的瀏覽器。這樣的比喻我認為很適合。這樣想想就會明白,在瀏覽器的環境裡JS可以做很多AS不能做的事,而且JS比AS更加成熟。所以JS的優勢和廣闊的前景是很明顯的。
  通過Flash平台用戶端的開發,我發現Flash的優勢有一部分與Ajax重疊了。比如,與伺服器的無重新整理傳遞訊息,以及使用者離線和線上狀態的無縫切換。除了對CSS的支援和文字表格表現上的劣勢,FLash還是可以媲美Ajax的。另外,Flash最大的有點在於開發的低門檻。Flash有完備的IDE和調試環境,同時在還可以滿足MVC的設計模式,它所見所得的開發環境更得到美工的青睞。
  除了以上的對比,我想象我這樣喜愛Flash的愛好者只所以支援他的主要原因還在與,他的成長速度。從4.0到8.0幾乎每次的升級都讓人為之興奮。
附錄:在這裡貼上,我平台開發中用到的與webserver通訊的類檔案。 import AndyClass.ArrayToXml;
import mx.events.EventDispatcher;
import org.okyere.util.XMD;
class AndyClass.FlashConnAsp extends MovieClip
{
 //該類用於接受Flash發送的Array變數
 //Array變數通過ArrayToXml類轉換為要發送的XML;
 //如果調用成功,則返回my_xml的內容!!!!
 //屬性域
 private var m_Url : String;
 private var m_Params : Array;
 private var m_Params_str : String = "";
 private var m_Result_errormsg : String;
 private var m_NodeName : String
 private var m_urlhead : String;
 private var m_xmd : org.okyere.util.XMD;
 //private var myListener : Object = new Object ();
 private var m_Result : String //具體的結果
 //屬性域
 public var addEventListener : Function;
 public var removeEventListener : Function;
 private var dispatchEvent : Function;
 private static var _mixin1 = EventDispatcher.initialize (AndyClass.FlashConnAsp.prototype);
 public function FlashConnAsp ()
 {
  trace ("  FlashConnAsp 構造 " );
 }
 //Setter Getter
 public function set Url (txt : String) : Void
 {
  m_Url = txt;
 }
 public function get Url () : String
 {
  return m_Url;
 }
 public function set Params (a : Array) : Void
 {
  m_Params = a;
 }
 public function set Params_str (a : String) : Void
 {
  m_Params_str = a;
 }
 public function set ResultMsg (a : String) : Void
 {
  m_Result_errormsg = a;
 }
 public function set NodeName (a : String) : Void
 {
  m_NodeName = a;
 }
 //
 public function sendAndload ()
 {
  if (m_Url != null && m_Url != undefined&&m_urlhead != undefined)
  {
   f_sendAndload ();
  } else if (m_urlhead == undefined)
  {
   trace ("m_urlhead未定義")
   f_load_urlhead ();
  }
 }
 //
 private function f_load_urlhead ()
 {
  var owner : Object = this;
  m_xmd = new XMD ();
  m_xmd.load ("config.xml");
  var myListener = new Object ();
  myListener.onXMDLoad = function (evtObj : Object)
  {
   //trace ("擷取config.xml的參數 urlhead 成功: " + evtObj.data.url);
   owner.m_urlhead = evtObj.data.url;
   owner.f_onDataLoadXml ()
   owner.m_xmd.removeEventListener ("onXMDLoad", myListener);
   owner.f_sendAndload ();
  };
  m_xmd.addEventListener ("onXMDLoad", myListener);
 }
 private function f_sendAndload ()
 {
  var eventObj01 : Object = {
   type : "m_onLoadVars", target : _parent
  };
  dispatchEvent (eventObj01);
  var owner :&nb

[1] [2]  下一頁



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.