- 浏览: 350179 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- Flash | as3 (53)
- AIR | Starling (46)
- Android (55)
- Java (10)
- C++ (6)
- PHP (43)
- IOS (9)
- Unity3D (2)
- cocos2d-x (1)
- OpenGL (2)
- WebGL (3)
- Server (4)
- MemCache (13)
- MySql (2)
- NoSql (2)
- PhoneGap (13)
- jQuery | jQuery Mobile (14)
- javaScript | html5 | css3 (14)
- Linux (1)
- Box2D (2)
- SmartFox (1)
- Ruby (0)
- Python (2)
- Golang (11)
- Redis (1)
- 开源项目 (6)
- 游戏策划 (1)
- 云平台 (2)
- 项目管理 (6)
- 听见月光 (32)
最新评论
-
kenkao:
http://www.linuxidc.com/Linux/2 ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
kenkao:
http://blog.csdn.net/yanwushu/a ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
wpy126:
你这种比较根本不公平AppCan 用了多个页面,jqm内容都 ...
AppCan VS PhoneGap - 对比两大移动开发平台 -
kenkao:
zs12593 写道这个,这个
这里只是转载,建议看一下原文, ...
android游戏开发框架libgdx环境搭建 -
zs12593:
这个,这个
android游戏开发框架libgdx环境搭建
转自:http://blog.csdn.net/ahstudy/article/details/6996824
目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到 来,flash和外部交互的方式也越来越简便和合理化。今天就在这里谈谈as3和后台数据的交互(这里选择as3+php架构,其他配置同理)。
在as3里,原来的loadVars方法已经被废弃,而改用一系列的类来实现与后台数据的交互,这些类是:URLLoader,URLLoaderDataFormat,URLStream,URLVariables。
URLLoader 类和原来的loadVars类似,是加载文本,2进制数据,xml,URL数据等信息的有力工具。URLLoader接受一个URLRequest 作为构造的参数,使用load方法来加载数据。URLLoder也可以进行监听,这点也loadVars不同,一个简单的示例如下:
//////////////////actionscript code//////////////////////////////////////////
//声明一个URLLoader
var loader:URLLoader = new URLLoader();
//监听数载加载完成事件
loader.addEventListener(Event.COMPLETE,loaded);
//事件相应函数
function loaded(e:Event){
trace(loader.data);
// output : this data is from php!
}
//加载test.php
loader.load(new URLRequest("test.php"));
// ////////////////test.php code/////////////////////////////////
//声明一个变量并赋给一个字符串
$data ='this data is form php!';
//输出这个变量给flash
echo $data;
?>
从上面的示例可以看出,as3和后台交互是多么简单,但这只是单项的交互,如果要flash向后台发送数据并传回数据该如何去做呢?这个时候你可能会把代码该成这样:
//actionscript code
var loader:URLLoader = new URLLoader();
loader.data={message:"hello im flash!"};
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(e:Event){
trace(loader.data);
// output : this is flash say:
}
loader.load(new URLRequest("test.php"));
//test.php code//
$flashData = $_POST['message'];
echo "this is flash say:$flashData";
?>
看看输出的代码,你得到了什么?是的,信息并没有传输到php,你还是在用loadVars的方式试图传送数据,但as3里已经不是这样了, URLLoader的data只有在数据被下载完时才会被初始化,在数据没有加载完成时,它是等于null的,也就是说,它只包含接受到的数据,而不管要 发送的数据,那么,as3里如何向后台发送数据呢?使用URLVariables。URLVariables允许你在flash和后台程序间传输变量, as3里已经把发送和接受数据分离,再也不像as2的loadVars那样,一个类通吃所有了,那么这个URLVariables如何送要发送的数据呢?
你可能找遍了URLLoader的文档也没有发现与它相关的东西,是的URLLoader并不和URLVariables有关联,而是 URLRequest在使用它,URLRequest包含整个http请求的所有信息,所以我们要发送的数据要放在这里,URLRequest有一个 data属性他接受一个object类型的参数,这就是我们要发送的数据。同时你可能还注意到了,URLRequest也管理用什么样的方式来发送 http请求,它的method属性接受一个字符参数,post或者是get。好了,现在我们来看看它们是怎么工作的:
//actionscript code
var loader:URLLoader = new URLLoader();
//声明一个URLRequest
var url:URLRequest = new URLRequest("test.php");
//设置传输方式为POST
url.method = URLRequestMethod.POST;
//声明一个URLVariables
var values:URLVariables = new URLVariables();
//设置要传输的信息
values.message="hello im flash!";
url.data = values;
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(e:Event){
trace(loader.data);
// output : this is flash say:hello im flash!
}
loader.load(url);
//test.php code//
$flashData = $_POST['message'];
echo "this is flash say:$flashData";
?>
怎么样,是不是也很方便的实现了as3和后台的数据传输?恩,现在我们的程序可以双向交互数据了,但这只是一些简单的数据,如果你要传输带有结构的 数据,(熟悉as2的人都知道loadVars可以自动解析下载数据的结构),让我们先按loadVars的方式来尝试下,看看URLLoader是不是 能自动的解析下载的数据。
//actionscript code
var loader:URLLoader = new URLLoader();
//声明一个URLRequest
var url:URLRequest = new URLRequest("test.php");
//设置传输方式为POST
url.method = URLRequestMethod.POST;
//声明一个URLVariables
var values:URLVariables = new URLVariables();
//设置要传输的信息
values.message="hello im flash!";
url.data = values;
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(e:Event){
trace(loader.data);
//outPut: phpMessage=im php message!&flashMessage=hello im flash!
trace(loader.data.phpMessage);
// thorw Error;
trace(loader.data.flashMessage);
// thorw Error;
}
loader.load(url);
//test.php code//
$flashData = $_POST['message'];
$phpMessage = 'im php message!';
echo "phpMessage=$phpMessage&flashMessage=$flashData";
?>
可以看到,数据被完全下载下来了,但是却没有被解析,还抛出了异常,那么是不是URLLoader就不能自动解析数据了呢?不是,相反 URLLoader提供了多种数据解析方式供你选择。这些数据解析方式都在URLLoaderDataFormat里,他们是:BINARY-以2进制的 方式解析 TEXT-以文本的方式解析 VARIABLES-以变量-值配对的方式解析。URLLoader的dataFormat属性提供了对解析方式的选择,好,我们再来修改下程序使它变的 更完美些:
//actionscript code
var loader:URLLoader = new URLLoader();
//声明一个URLRequest
var url:URLRequest = new URLRequest("test.php");
//设置传输方式为POST
url.method = URLRequestMethod.POST;
//声明一个URLVariables
var values:URLVariables = new URLVariables();
//设置要传输的信息
values.message="hello im flash!";
url.data = values;
//设置以变量-值配对的方式解析数据
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE,loaded);
function loaded(e:Event){
trace(loader.data);
//outPut: phpMessage=im php message!&flashMessage=hello im flash!
trace(loader.data.phpMessage);
// im php message!
trace(loader.data.flashMessage);
// hello im flash!
}
loader.load(url);
//test.php code//
$flashData = $_POST['message'];
$phpMessage = 'im php message!';
echo "phpMessage=$phpMessage&flashMessage=$flashData";
?>
以上这些就是as3里和后台交互的基础内容,现在你可以在as3里创建这样的交互,获取动态数据来丰富你的程序,在你开始自己动手实验之前,还有一些东西值得注意:
1,记得捕获和处理异常(上述的例子里都是假定在完美的测试环境下运行,所以没有加上异常捕获和处理的代码,但现实中你可能会遇到各种各样的情况)URLLoader可能引发好几种异常情况(详细请参见说明文档)
你应该通过监听ioError和securityError事件,或者通过try-catch来处理他们,即使你确信不会发生这样的问题。
2,文件的编码,这是个常见的问题,经常很多数据变成了乱码,或者解析出错,都是因为编码的问题,我的做法是确保发送的数据和后台传回的数据都是UTF-8格式(因为flash默认编码为utf-8)
最后希望这篇文章能对你有所帮助,也欢迎你留言讨论相关的问题。
第一种 不传参 直接读取PHP文件
btn.addEventListener(MouseEvent.CLICK,loadTxt);
function loadTxt(evt:MouseEvent):void
{
var urlLoader:URLLoader=new URLLoader();
urlLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
urlLoader.load(new URLRequest("http://localhost/as3/url2.php"));
urlLoader.addEventListener(Event.COMPLETE,finish);
}
function finish(evt:Event):void
{
var mydata:URLVariables=URLVariables((evt.currentTarget as URLLoader).data);
mytxt.text="国家是:"+mydata.state+"\n";
mytxt.text+="var1是:"+mydata.var1;
}
php端代码:
<?
$state="中华人民共和国";
$var1="我恨你";
echo "state=".$state."&var1=".$var1;
?>
第二种 无参数 读取XML文件
btn.addEventListener(MouseEvent.CLICK,loadTxt);
function loadTxt(evt:MouseEvent):void
{
var urlLoader:URLLoader=new URLLoader();
urlLoader.load(new URLRequest("data.xml"));
urlLoader.addEventListener(Event.COMPLETE,finish);
}
function finish(evt:Event):void
{
var mydatas:XML=XML((evt.currentTarget as URLLoader).data);
mytxt.text=mydatas.c1.toString()+","+mydatas.c2.toString();
}
xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<cities>
<c1>北京</c1>
<c2>上海</c2>
</cities>
上述代码结果:
北京,上海
第三种 无参数 PHP生成XML文件
btn.addEventListener(MouseEvent.CLICK,loadTxt);
function loadTxt(evt:MouseEvent):void
{
var urlLoader:URLLoader=new URLLoader();
urlLoader.load(new URLRequest("http://localhost/as3/xml.php"));
urlLoader.addEventListener(Event.COMPLETE,finish);
}
function finish(evt:Event):void
{
var mydatas:XML=XML((evt.currentTarget as URLLoader).data);
mytxt.text=mydatas.c1.toString()+","+mydatas.c2.toString();
}
php端:
<?
//你可以使用php操作xml的函数
//这里为了简单起见只是echo出来
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<cities>";
echo "<c1>北京</c1>";
echo "<c2>上海</c2>";
echo "</cities>";
?>
第四种 GET 传参
System.useCodePage=true;
btn.addEventListener(MouseEvent.CLICK,loadTxt);
function loadTxt(evt:MouseEvent):void
{
var urlLoader:URLLoader=new URLLoader();
var request:URLRequest=new URLRequest();
request.url="http://www.baidu.com/s";
request.method=URLRequestMethod.GET;
request.data="wd=flash";
urlLoader.load(request);
urlLoader.addEventListener(Event.COMPLETE,finish);
}
function finish(evt:Event):void
{
mytxt.text=(evt.currentTarget as URLLoader).data;
}
第五种 POST 传参
System.useCodePage=true;
btn.addEventListener(MouseEvent.CLICK,loadTxt);
function loadTxt(evt:MouseEvent):void
{
var urlLoader:URLLoader=new URLLoader();
var request:URLRequest=new URLRequest();
var vars:URLVariables=new URLVariables();
vars.wd="flash";
request.url="http://www.baidu.com/s";
request.method=URLRequestMethod.GET;
request.data=vars;
urlLoader.load(request);
urlLoader.addEventListener(Event.COMPLETE,finish);
}
function finish(evt:Event):void
{
mytxt.text=(evt.currentTarget as URLLoader).data;
}
这里data是URLVariables是值对,注意区别。
发表评论
-
淘宝开放平台SDK对接
2017-11-28 15:38 684http://blog.csdn.net/papalian ... -
基于UCenter关联第三方网站与Discuz用户
2017-11-10 16:57 766https://mo2g.com/view/106/ ... -
IIS访问要求输入用户名密码
2017-10-23 14:08 11931. 打开IIS,右击网站--->属性---> ... -
关于”要执行请求的操作,WordPress需要访问您网页服务器的权限”
2017-10-14 15:50 570http://blog.csdn.net/qq_157108 ... -
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2017-04-20 15:12 568http://www.jb51.net/artic ... -
简单的C#&PHP对称加解密
2017-04-01 10:11 398byte[] ctxbytes = Syst ... -
Windows下安装并设置Redis
2017-01-06 09:48 515http://blog.csdn.net/renfufei/ ... -
as3 中文转拼音
2017-01-03 17:27 2486private static const PinYin:Ob ... -
解决flash builder 4.6调试不可用
2016-12-19 09:47 500来自:http://blog.csdn.net/cupi ... -
深入理解require与require_once与include以及include_once的区别
2016-08-18 15:26 376http://www.jb51.net/article/ ... -
php-redis中文参考手册_zset
2016-07-08 10:05 583http://my.oschina.net/cniiliuq ... -
ColorMatrixFilter 色彩矩阵滤镜
2016-05-20 10:34 985包 flash.filters 类 public final ... -
C#兼容PHP的GZip算法
2016-05-10 15:22 839// php GZip压缩 gzencode($data) ... -
C#兼容PHP的MD5算法
2016-05-10 15:18 516md5($str) public sta ... -
怎样增加phpmyadmin导入文件上限
2015-11-27 10:11 595http://jingyan.baidu.com/art ... -
为PHP添加swoole异步并行扩展
2015-08-12 15:17 936为PHP添加swoole异步并行扩展 ... -
PHP-redis中文文档
2015-07-28 14:21 748PHP-redis中文文档 phpredis是p ... -
PHP中include和require的区别详解
2015-07-25 11:15 538PHP中include和require的区别详解 ... -
Win2003 IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
2015-05-08 17:31 2http://www.jb51.net/article/5 ... -
c#保留小数点后位数的方法
2015-04-20 16:22 787Double dValue = 95 ...
相关推荐
在Adobe Flash Professional CS5或更新版本的环境中,ActionScript 3(AS3)提供了一套强大的网络通信工具,包括`URLRequest`、`URLLoader`等类,这些类替代了早期版本中的`LoadVars`方法,使得与服务器的交互更加...
【描述】:描述中提到,这个留言系统是用PHP编写的,目的是为了实现与AS3.0后台的交互,从而提高网站的互动性和用户体验。PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,可以生成动态网页内容。而AS3.0...
2. **Socket通信**:AS3提供了Socket类,可以用来建立TCP连接,实现客户端与服务器之间的双向通信。在聊天室中,客户端会通过Socket连接向服务器发送消息,并接收其他用户的消息。 3. **XMLSocket**:如果服务器端...
本教程将深入探讨如何使用AS3与PHP构建一个简单的留言板系统,帮助开发者理解这两种技术的整合。 一、AS3基础 1. AS3简介:AS3是Flash Professional和Flex Builder等工具中使用的编程语言,它引入了强类型、面向...
本例是PHP和javascript交互的例子,php中的值赋给js变量中,前提是这个php变量必须有值才行,就算是假分支中。比如php中的$flags在本例中为true,如果js中false语句写成:$title_1[removed] = “<?php echo $...
基于提供的标题和描述,我们可以推测这是一个关于使用AS3(ActionScript 3)与PHPRPC进行交互的项目,其中FLEX作为前端UI框架。AS3是Adobe Flash Player和Adobe AIR支持的编程语言,常用于创建富互联网应用程序(RIA...
然而,有时我们需要让Flash内容与网页的其他部分进行交互,比如获取用户输入、更新DOM元素或者实现页面导航,这就需要AS3与JS之间的通信。 二、通信方法 1. **ExternalInterface API**:这是AS3和JS通信的主要方式...
**AS3与PHP的交互** 1. **XMLSocket通信**:AS3可以使用XMLSocket类来与服务器进行双向实时通信。通过创建XMLSocket对象并连接到PHP服务器,AS3可以发送和接收数据。PHP端可以通过socket服务处理这些通信,实现数据...
在IT行业中,将Flash AS3生成的图片保存到服务器通常涉及到客户端与服务器之间的交互,这里主要涉及的技术点包括Flash ActionScript 3 (AS3)、PHP以及文件上传处理。下面我们将详细探讨这些知识点。 首先,Flash AS...
开发者可以通过研究源码了解如何将前端的AS3与后端的PHP协同工作,以及如何组织和管理一个完整的网站项目。同时,这也是一个实际应用示例,展示了如何将多媒体内容与数据服务相结合,以提供丰富的用户体验。
在抽奖系统中,AS3主要用于控制用户界面,包括按钮交互、动画效果、以及与服务器的数据通信。例如,当用户点击“开始抽奖”按钮时,AS3会发送请求到服务器,并接收返回的抽奖结果。此外,AS3的动画功能可以实现抽奖...
通过这种方式,PHP中的事件机制模仿了AS3,实现了事件监听器的注册、触发和解除,使得代码可以根据事件进行响应,增强了组件之间的交互性和解耦性。这种实现允许开发者在不修改原有对象的情况下,通过事件监听来扩展...
本资源"php.rar_as3"包含了一组代码示例,展示了如何实现PHP与AS3之间的通信,这对于构建跨平台的Web应用程序非常有用。下面将详细解释这个知识点以及相关技术。 **PHP(Hypertext Preprocessor)**是一种广泛使用...
标题中的“Flash AS3获取PHP数据(ActionScript3 + php + email)送ActionScript2”表明这个项目涉及了几个关键的技术领域:ActionScript3、PHP和电子邮件处理。ActionScript3是Adobe Flash Player支持的一种编程...
综上所述,这个"as3json资源"提供了AS3与JSON交互的实践案例,对学习和掌握AS3中JSON的使用具有很高的价值。通过深入研究提供的源代码和示例,开发者可以更好地理解和应用JSON技术,提升其在ActionScript 3项目中的...
AS3(ActionScript 3)是Adobe Flash平台上的编程语言,用于实现动态内容和交互性;PHP是一种服务器端脚本语言,常用于处理网页中的数据和逻辑;而MySQL则是常用的开源关系型数据库管理系统,用于存储和管理用户留言...
4. **XML或JSON数据格式**:AS3与PHP交互时,通常使用XML或JSON作为数据交换格式。XML是一种结构化数据格式,而JSON则更轻量且易于解析。 5. **注释**:描述中提到AS3语句全部加上注释,这对于理解代码逻辑和维护...
通过查看和运行这些代码,你可以更深入地了解AS3与Cookie交互的工作原理,这对于开发涉及用户状态管理的Flash应用尤其重要。记住,虽然AS3可以直接处理HTTP请求,但处理Cookie通常需要服务器端的配合。
了解如何使用AS3与服务器端进行数据交换,如XML或JSON格式的数据请求和响应,是提升游戏体验的关键。 5. **网络通信**:游戏的社交功能需要与QQ平台进行实时通信,如发送请求、接收好友信息等。学习AS3中的Socket或...
总结来说,这个"flash/as3 3D SNS社交游戏源码"是一个综合了3D图形、寻路算法、深度排序、光照效果以及社交功能的实例。对于想深入学习AS3游戏开发,尤其是3D社交游戏的开发者而言,这是一个宝贵的资源,可以从中...