2011-05-23 83 views
0

我想將我的flash文件與php代碼整合。我從如何將Flash與Php整合

http://www.kirupa.com/developer/actionscript/flashphpxml_integration2.htm

function lv(l, n, t, e, f) { 
    if (l == undefined) { 
     l = new LoadVars(); 
     l.onLoad = function() { 
      var i; 
      n.htmlText = ""; 
      if (t == undefined) { 
       n.htmlText += "<b>" + this["title" + e] + "</b><br>"; 
      } else { 
       for (i = 0; i < this.n; i++) { 
        n.htmlText += "<a href='" + this["link" + i] + "'>" + this["title" + i] + "</a><br>"; 
       } 
      } 
     }; 
    } 
    l.load(f); 
} 
lv(sites_txt, "cycle", null, "sites.php"); 

我沒有在論壇,但同時考慮到所有步驟運行代碼我得到錯誤,如

1180: Call to a possibly undefined method LoadVars. 

Warning: 1060: Migration issue: The method LoadVars is no longer supported. For more information, see the URLVariables class, the URLRequest.urlVariables and URLRequest.postData properties, and the URLLoader.dataFormat property.. 

1136: Incorrect number of arguments. Expected 5. 

我是新下面的代碼到flash腳本請引導我如何排除這些問題

+0

Load忱是一個AS2班 - 我會告訴你一個AS3的例子。 – Marty 2011-05-23 06:35:53

回答

4

您的示例代碼是AS2,這裏是你如何從和PHP使用AS3使用發送和接收數據:

  1. 的URLRequest
  2. 的URLLoader
  3. 的URLVariables

這裏有一個快速的I類有爲你製作:

package 
{ 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.net.URLVariables; 
    import flash.net.URLRequestMethod; 
    import flash.events.Event; 

    public class PHPData extends Object 
    { 
     /** 
     * Sends data to a PHP script 
     * @param script A URL to the PHP script 
     */ 
     public function send(script:String, vars:URLVariables):void 
     { 
      var req:URLRequest = new URLRequest(script); 

      req.data = vars; 
      req.method = URLRequestMethod.POST; 

      var loader:URLLoader = new URLLoader(); 
      loader.load(req); 

      // listeners 
      loader.addEventListener(Event.COMPLETE, _complete); 
     } 

     /** 
     * Called when a response has been received from a PHP script 
     * @param e Event.COMPLETE 
     */ 
     private function _complete(e:Event):void 
     { 
      var vars:URLVariables = new URLVariables(e.target.data); 

      var i:String; 
      for(i in vars) 
      { 
       trace(i + ": " + vars[i]); 
      } 

      e.target.removeEventListener(Event.COMPLETE, _complete); 
     } 
    } 
} 

有了這個,你可以發送數據到給定的PHP腳本,格式爲URLVariables

URLVariables易於製備,像這樣:

var vars:URLVariables = new URLVariables(); 

vars.myvar = "some value"; 
vars.myothervar = 30; 

下面是一個簡單的例子,我已經嘲笑了你,它發送一個字符串到PHP,然後PHP發回散列爲MD5的字符串,也有一個時間戳附作爲次要價值。

var php:PHPData = new PHPData(); 

var vars:URLVariables = new URLVariables(); 
vars.myvar = "marty"; 

php.send("http://projectavian.com/md5.php", vars); 

你這個輸出將是類似的東西來:

response: bb3761a33402b4f82806178e79ec5261 
time: 1306133172 

只是改變了PHPData類的_complete方法來處理響應所需數據:)


我因爲你的問題有mysql標籤,所以將其扔進去。

所有你需要做的是標準的插入,然後選擇在PHP腳本查詢和你的結果編碼成這種格式:

var=1&other=2&more=three 

所以你可以有..

<?php 
    mysql_connect(/* ?? */); 
    mysql_select_db(/* ?? */); 

    // INSERT example 
    $thing = mysql_real_escape_string($_POST["thing"]); 
    mysql_query("INSERT INTO table VALUES('','$thing')"); 

    // SELECT for response 
    $id = mysql_real_escape_string($_POST["uid"]); 
    $query = mysql_query("SELECT * FROM table WHERE id='$uid' LIMIT 1"); 

    // send response 
    $r = mysql_fetch_assoc($query); 
    echo 'fname=' . $r["first_name"] . '&lname=' . $r["last_name"]; 
?>