当前位置:软件学习 > Flash >>

flash as3获取php的变量值实现方法

HP代码 (test1.php):

不推荐写成这种含html代码的形式:

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>测试as3如何读取php的变量值</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php  

    /**
     * 使用本方法的缺点是向as传值的输出语句(下文的echo语句)之后不能再有输出。
     * 解决办法:可以在该输出语句的最后面再加上一个变量,而这个变量在as3中是不需要接收的,例如改成:   
     * echo "&coun=".$country."&pro=".$province."&city=";
     */
    $country = "中国<br />";
    $province = "福建";
    //as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
    echo "&coun=".$country."&pro=".$province;
?>
<!-- 注意:本行及后面的行也会当做是pro属性的值被as3接收,所以本行及以后的行是多余的 -->
</body>
</html>

 

推荐改成这种纯php代码的形式:

 代码如下 复制代码
<?php
    $country = "中国<br />";
    $province = "福建";
    //as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
    echo "&coun=".$country."&pro=".$province;
?>

 

AS3代码 (Test1.as):

 代码如下 复制代码

package
{
 import fl.controls.Button;
 
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.net.URLLoader;
 import flash.net.URLLoaderDataFormat;
 import flash.net.URLRequest;
 import flash.net.URLVariables;
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.text.TextFormat;
 
 /**
  * 测试as3与php之间的交互方法1
  * 本方法通过加载远程php来读取其中输出的变量值
  * @author Administrator
  */
 public class Test1 extends Sprite
 {
 
  /**
   * 定义点击按钮
   */ 
  private var _btn:Button;
 
  /**
   * 文本框
   */ 
  private var _showTf:TextField;
 
  /**
   * 测试as3与php之间的交互
   */ 
  public function Test1() {
   _btn = new Button();
   _btn.label = "请点击";
   _btn.move(0, 0);
   addChild(_btn);
  
   _showTf = new TextField();
   _showTf.autoSize = TextFieldAutoSize.LEFT;
   _showTf.defaultTextFormat = new TextFormat(null, 12, 0xff0000);
   _showTf.wordWrap = true;
   _showTf.border = true;
   _showTf.text = "内容文本框1";
   _showTf.width = 660;
   _showTf.x = 110;
   _showTf.y = 0;
   addChild(_showTf);
  
   _btn.addEventListener(MouseEvent.CLICK, loadPhp);
  }
 
  /**
   * 开始加载php
   * @param event
   */ 
  private function loadPhp(event:MouseEvent):void {
   _showTf.text = "";
  
   var urlLoader:URLLoader = new URLLoader();
   urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;

   //注意此处是使用http请求的方式作为加载地址,而不能直接写成相对位置或绝对位置,例如“/test1.php”
   urlLoader.load(new URLRequest("http://localhost:8081/as3php/test1.php"));
   urlLoader.addEventListener(Event.COMPLETE, onCompletedHandle);
  }
 
  /**
   * 加载php完成
   * @param event
   */ 
  private function onCompletedHandle(event:Event):void {
   var mydata:URLVariables = URLVariables((event.currentTarget as URLLoader).data);
   _showTf.text = "国家是:" + mydata.coun + " 省份是:" + mydata.pro;
  }
 
 }
}


上一篇文章as3获取php的变量值(1)中讲了如何用as3获取php的变量值,本文将继续对这个内容进行研究,以找出用这种方法获取php变量值的本质所在。

上面中使用的php代码如下:

 代码如下 复制代码
<?php
    $country = "中国<br />";
    $province = "福建";
    //as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
    echo "&coun=".$country."&pro=".$province;
?>

 

用浏览器访问这个php文件后会在浏览器上显示:

&coun=中国<br />&pro=福建

看到这里,你想到了什么?这不就是一个简单的网页文字吗?是的,的确是这样的,为了验证我们的想法,做如下测试:

新建一个html文件,写上“&coun=中国<br />&pro=福建”,再次用as3代码远程加载这个html文件,你会发现和前面加载php代码得到的结果完全相同。这就说明了一个问题——as3用这种方式获取php变量其实是先将php文件解析成html文件后再从html文件中读取相应的值。因此,这个方法不仅仅可以获取php的变量值,同样也可以用于获取jsp、asp等的变量值。

例如下面的jsp也同样可以用这种方式进行变量值获取:

 代码如下 复制代码

<%

    String country = "中国<br />";
    String province = "福建";
    //as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
    out.print("&coun=" + country + "&pro=" + province);

%>

补充:flash教程,As3.0 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,