返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >AS3与PHP通信
  • 539
分享到

AS3与PHP通信

通信PHP 2023-01-31 02:01:42 539人浏览 独家记忆
摘要

目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到来,flash和外部交互的方式也越来越简便和合理化。今天就在这里谈谈as3和后台数据的交互(这里选

目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到来,flash和外部交互的方式也越来越简便和合理化。今天就在这里谈谈as3和后台数据的交互(这里选择as3 PHP架构,其他配置同理)。


在as3里,原来的loadVars方法已经被废弃,而改用一系列的类来实现与后台数据的交互,这些类是:URLLoader,URLLoaderDataFORMat,URLStream,URLVariables。
URLLoader 类和原来的loadVars类似,是加载文本,2进制数据,xml,URL数据等信息的有力工具。URLLoader接受一个URLRequest 作为构造的参数,使用load方法来加载数据。URLLoder也可以进行监听,这点也loadVars不同,一个简单的示例如下:

1. //////////////////actionscript code//////////////////////////////////////////
2. //声明一个URLLoader
3. var loader:URLLoader = new URLLoader();
4. //监听数载加载完成事件
5. loader.addEventListener(Event.COMPLETE,loaded);
6. //事件相应函数
7. function loaded(e:Event){
8. trace(loader.data);
9. // output : this data is from php!
10. }
11. //加载test.php
12. loader.load(new URLRequest("test.php"));

1. // ////////////////test.php code/////////////////////////////////
2. <?php
3. //声明一个变量并赋给一个字符串
4. $data ='this data is form php!';
5. //输出这个变量给flash
6. echo $data;
7. ?>

从上面的示例可以看出,as3和后台交互是多么简单,但这只是单项的交互,如果要flash向后台发送数据并传回数据该如何去做呢?这个时候你可能会把代码该成这样:

1. //actionscript code
2. var loader:URLLoader = new URLLoader();
3. loader.data={message:"hello im flash!"};
4. loader.addEventListener(Event.COMPLETE,loaded);
5. function loaded(e:Event){
6. trace(loader.data);
7. // output : this is flash say:
8. }
9. loader.load(new URLRequest("test.php"));

1. //test.php code//
2. <?php
3. $flashData = $_POST['message'];
4. echo "this is flash say:$flashData";
5. ?>

看看输出的代码,你得到了什么?是的,信息并没有传输到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。好了,现在我们来看看它们是怎么工作的:

1. //actionscript code
2. var loader:URLLoader = new URLLoader();
3. //声明一个URLRequest
4. var url:URLRequest = new URLRequest("test.php");
5. //设置传输方式为POST
6. url.method = URLRequestMethod.POST;
7. //声明一个URLVariables
8. var values:URLVariables = new URLVariables();
9. //设置要传输的信息
10. values.message="hello im flash!";
11. url.data = values;
12. loader.addEventListener(Event.COMPLETE,loaded);
13. function loaded(e:Event){
14. trace(loader.data);
15. // output : this is flash say:hello im flash!
16. }
17. loader.load(url);

1. //test.php code//
2. <?php
3. $flashData = $_POST['message'];
4. echo "this is flash say:$flashData";
5. ?>

怎么样,是不是也很方便的实现了as3和后台的数据传输?恩,现在我们的程序可以双向交互数据了,但这只是一些简单的数据,如果你要传输带有结构的数据,(熟悉as2的人都知道loadVars可以自动解析下载数据的结构),让我们先按loadVars的方式来尝试下,看看URLLoader是不是能自动的解析下载的数据。

1. //actionscript code
2. var loader:URLLoader = new URLLoader();
3. //声明一个URLRequest
4. var url:URLRequest = new URLRequest("test.php");
5. //设置传输方式为POST
6. url.method = URLRequestMethod.POST;
7. //声明一个URLVariables
8. var values:URLVariables = new URLVariables();
9. //设置要传输的信息
10. values.message="hello im flash!";
11. url.data = values;
12. loader.addEventListener(Event.COMPLETE,loaded);
13. function loaded(e:Event){
14. trace(loader.data);
15. //outPut: phpMessage=im php message!&flashMessage=hello im flash!
16. trace(loader.data.phpMessage);
17. // thorw Error;
18. trace(loader.data.flashMessage);
19. // thorw Error;
20. }
21. loader.load(url);

1. //test.php code//
2. <?php
3. $flashData = $_POST['message'];
4. $phpMessage = 'im php message!';
5. echo "phpMessage=$phpMessage&flashMessage=$flashData";
6. ?>

可以看到,数据被完全下载下来了,但是却没有被解析,还抛出了异常,那么是不是URLLoader就不能自动解析数据了呢?不是,相反URLLoader 提供了多种数据解析方式供你选择。这些数据解析方式都在URLLoaderDataFormat里,他们是:BINARY-以2进制的方式解析 TEXT-以文本的方式解析 VARIABLES-以变量-值配对的方式解析。URLLoader的dataFormat属性提供了对解析方式的选择,好,我们再来修改下程序使它变的更完美些:

1. //actionscript code
2. var loader:URLLoader = new URLLoader();
3. //声明一个URLRequest
4. var url:URLRequest = new URLRequest("test.php");
5. //设置传输方式为POST
6. url.method = URLRequestMethod.POST;
7. //声明一个URLVariables
8. var values:URLVariables = new URLVariables();
9. //设置要传输的信息
10. values.message="hello im flash!";
11. url.data = values;
12. //设置以变量-值配对的方式解析数据
13. loader.dataFormat = URLLoaderDataFormat.VARIABLES;
14. loader.addEventListener(Event.COMPLETE,loaded);
15. function loaded(e:Event){
16. trace(loader.data);
17. //outPut: phpMessage=im php message!&flashMessage=hello im flash!
18. trace(loader.data.phpMessage);
19. // im php message!
20. trace(loader.data.flashMessage);
21. // hello im flash!
22. }
23. loader.load(url);

1. //test.php code//
2. <?php
3. $flashData = $_POST['message'];
4. $phpMessage = 'im php message!';
5. echo "phpMessage=$phpMessage&flashMessage=$flashData";
6. ?>

以上这些就是as3里和后台交互的基础内容,现在你可以在as3里创建这样的交互,获取动态数据来丰富你的程序,在你开始自己动手实验之前,还有一些东西值得注意:
1,记得捕获和处理异常(上述的例子里都是假定在完美的测试环境下运行,所以没有加上异常捕获和处理的代码,但现实中你可能会遇到各种各样的情况)URLLoader可能引发好几种异常情况(详细请参见说明文档)
你应该通过监听ioError和securityError事件,或者通过try-catch来处理他们,即使你确信不会发生这样的问题。
2,文件的编码,这是个常见的问题,经常很多数据变成了乱码,或者解析出错,都是因为编码的问题,我的做法是确保发送的数据和后台传回的数据都是UTF-8格式(因为flash默认编码为utf-8)
最后希望这篇文章能对你有所帮助,也欢迎你留言讨论相关的问题。

--结束END--

本文标题: AS3与PHP通信

本文链接: https://lsjlt.com/news/185828.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AS3与PHP通信
    目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到来,flash和外部交互的方式也越来越简便和合理化。今天就在这里谈谈as3和后台数据的交互(这里选...
    99+
    2023-01-31
    通信 PHP
  • java与as3的socket通信
    as3 与java 都提供了Socket类用于网络通信, 但两者的使用也有较大的不同. 为了方便两者的通信, 我在做了一些实验的基础上, 写下获得的经验,以免忘记.as3 的socket 读写数据方法常用的有四个: readUTF, wri...
    99+
    2023-01-31
    通信 java socket
  • AS3和JS通信
    运行环境:需要安装IIS,创建网站目录AS3和外部容器通信方法比较简单:import flash.text.TextField; var txt:TextField = new TextField(); this.addChild(txt...
    99+
    2023-01-31
    通信 JS
  • PHP学习笔记:实时通信与Web Socket
    引言:在当今互联网世界中,实时通信已经成为了一种必不可少的需求。无论是社交网络、在线聊天、多人游戏还是在线协作,实时通信都扮演着重要的角色。在过去,实现实时通信往往需要使用轮询或长轮询等方式,这种方式存在效率低下、实时性差等问题。而Web ...
    99+
    2023-10-21
    PHP 实时通信 Web Socket
  • PHP实现Socket通信的方法与技巧
    PHP是一种常用的开发语言,可以用于开发各种 Web 应用程序。除了常见的 HTTP 请求和响应以外,PHP 也支持通过 Socket 进行网络通信,实现更为灵活和高效的数据交互。本文...
    99+
    2024-03-07
    php 通信 socket
  • AS3 角度算法与实现
    学习as3制作动画的时候发现一个好例子,箭头指向鼠标方向很有意思跟大家分享一下,都很简单的例子,箭头实体类代码如下 package {   import flash.display.Sprite;   public class Arrow...
    99+
    2023-01-31
    算法 角度
  • Snort安装与使用 as3+apach
    系统环境:rh as3+apache+php+snort+base所需snort相关软件包:adodb462.tgzbase-1.2.6.tar.gzImage_Canvas-0.3.0.tar.gz//Image_Color-1.0.2....
    99+
    2023-01-31
    Snort apach
  • Nginx与php-fpm的通信机制如何配置
    这篇文章主要介绍Nginx与php-fpm的通信机制如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP-FPM 介绍CGI 协议与 FastCGI 协议每种动态语言( PHP,Python 等)的代码文件需...
    99+
    2023-06-29
  • PHP Session 跨域与AJAX的异步通信优化
    随着互联网的发展,跨域访问和异步通信已成为现代web应用开发中的常见需求。本文将重点介绍如何使用PHP Session实现跨域访问,并提供一些优化的方法来改善AJAX的异步通信效率。一、跨域访问的问题在Web开发中,当浏览器从一个域名的网页...
    99+
    2023-10-21
    PHP session ajax
  • PHP学习笔记:网络编程与Socket通信
    在当今互联网时代,网络编程是一项非常重要的技能。它允许我们在不同的计算机之间进行通信和数据交换。而PHP作为一种强大的服务器端脚本语言,提供了丰富的网络编程功能,其中包括Socket通信。Socket通信是一种基于TCP/IP协议的网络编程...
    99+
    2023-10-21
    PHP网络编程 学习笔记 Socket通信
  • PHP商城开发中如何协作与通信
    随着互联网的高速发展,电子商务行业也愈加繁荣。而在电子商务中,开发PHP商城已经成为了一项重要的任务。对于团队合作开发PHP商城的开发者来说,协作和良好的沟通是成功的必备条件。本文将介绍一些PHP商城开发团队应该遵循的协作和通信实践。建立明...
    99+
    2023-05-14
    PHP 商城开发 协作与通信
  • PHP开发中Socket通信的应用与实践
    PHP开发中Socket通信的应用与实践 Socket通信是一种在网络编程中广泛应用的技术,通过在客户端和服务器端之间建立Socket连接,可以在它们之间进行双向通信。在PHP开发中,...
    99+
    2024-03-08
    php 通信 socket 网络编程
  • Docker容器间通信与外网通信的操作
    一 容器间通信 1.容器的网络共享 处于这个模式下的docker容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信。 使用于web服务器与应用服务器之间的通...
    99+
    2024-04-02
  • Unity与Android交互通信
    前言 最近在研究Unity与Android通信的方法,网上也看了很多相关帖子,记录一下自己的研习所得,如有所言不到之处欢迎指正。 软件版本 1.Android Studio 3...
    99+
    2022-06-06
    unity 通信 Android
  • 如何在 Windows 上使用 PHP 接口与 Linux 通信?
    在如今的互联网时代,不同的服务器之间需要互相通信以实现不同的功能。本文将介绍如何在 Windows 上使用 PHP 接口与 Linux 通信。 在开始之前,我们需要了解一些基础知识。首先,PHP 是一种流行的服务器端编程语言,用于构建动态网...
    99+
    2023-06-17
    windows linux 接口
  • Spring 框架中如何与 PHP 进行同步通信?
    Spring 是一个流行的 Java 开发框架,它提供了许多强大的功能,包括依赖注入、面向切面编程和模板设计模式等。然而,有时候我们需要与其他编程语言进行通信,比如 PHP。那么,在 Spring 框架中如何实现与 PHP 的同步通信呢?...
    99+
    2023-10-29
    同步 linux spring
  • PHP中的网络通信
    PHP是一种流行的服务器端编程语言,其在网络通信方面也有较为广泛的应用。本文将介绍PHP中的网络通信相关知识,包括Socket编程、HTTP请求和响应、XML-RPC以及SOAP等方面。一、Socket编程Socket编程是一种在网络上进行...
    99+
    2023-05-25
    网络协议 PHP网络 通信编程
  • PHP中的加密通信
    随着网络通信的普及,人们越来越注重信息安全问题,特别是在web服务器和客户端之间的数据传输过程中。为了防止敏感信息被窃取、篡改等安全问题,就需要借助加密技术来实现数据的安全传输。PHP作为一门流行的web编程语言,支持多种加密算法,本文就对...
    99+
    2023-05-23
    PHP 通信 加密
  • C#与java TCP通道加密通信实例
    目录1、背景说明2、测试证书3、复制粘贴加密算法4、证书格式转换5、PS1 RSA证书格式6、参考博文1、背景说明 公司收费系统需要与银行做实时代收对接,业务协议使用我们收费系统的...
    99+
    2024-04-02
  • golang函数如何通过channel与goroutine通信?
    go 语言中使用 channel 和 goroutine 通信。创建 channel 后,goroutine 可以通过 Go 语言中通过 channel 与 goroutine 通信...
    99+
    2024-05-01
    channel golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作