• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>flash和WEB程序应用>文章内容
  • Flash P2P 通信技巧(AS-Java-AS)
  • 来源:蓝色理想 作者:hack86 2008-05-16 【


1.4 AS3 与 Java 通信

Action Script 3
最后是传说中的as3了,这里我们用Socket中的writeUTFBytes();来写字符串。首先来看fla版的

var SERVER_PORT:Number = 10086;
var SERVER_IP:String = "127.0.0.1";
var conn:Socket = new Socket(SERVER_IP,SERVER_PORT);
conn.addEventListener("connect",socketConnect);
conn.addEventListener("socketData",socketData);
function socketConnect(event:Event){
    event.target.writeUTFBytes("hello world");
    event.target.writeByte(10);
    event.target.flush();
}
function socketData(event:ProgressEvent){
    trace(event.target.readUTFBytes(event.target.bytesAvailable));
}

看看这个fla版本的是不是在代码上思路更加清晰呢?所有事件已经全部改为监听的方式,并且所有事件将把事件作为参数传入函数。
bytesAvailable为字节长度,而readUTFBytes的参数是从当前指向的位置读取到参数位置,这样写就是读完。
在as2里,如果在事件触发的函数里写this指向的是触发事件的实例,而as3永远指向所在类的实力,触发事件的实例被记录在传入事件参数的target对象中。
as3更加注重的是oop,在fla里已经体现出来了。接下来就来看看DocmentClass的方法

package{class Run{
    private var SERVER_PORT:Number = 10086;
    private var SERVER_IP:String = "127.0.0.1";
    public function Run(){
        //在这里写代码并在flash里设置该类为文档类,和直接写上帧上其实没有区别,入口函数
        new ClientSocket(SERVER_IP,SERVER_PORT);
    }
}}

当然还有一个ClientSocket.as的文件放这个socket客户端类

package {
    import flash.net.Socket;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    public class ClientSocket extends Socket {
        public function ClientSocket(ip:String,port:uint) {
            super(ip,port);
            addEventListener("cennect",socketConnect);
            addEventListener("socketData",socketData);
            addEventListener("ioError",ioError);
        }
        public function send(src:String) {
            writeUTFBytes(src);
            writeByte(10);
            flush();
        }
        private function socketConnect(event:Event) {
            send("hello world");
        }
        private function socketData(event:ProgressEvent) {
            trace(readUTFBytes(bytesAvailable));
        }
        private function ioError(event:IOErrorEvent) {
            trace("connect error");
        }
    }
}

入口函数创建了一个客户端的对象,而具体的类的内部构造如上代码所示:
首先创建父类构造函数,再为自己添加监听,当连接时执行socketConnect();发送字符串,注意writeByte(10)是换行符。
在as3的socket类里还有其他的事件,这里因为教学原因所以没有过多的举例,相关可以查阅socket的帮助
close  在服务器关闭套接字连接时调度。
connect  在建立网络连接后调度。(这个监听在教程里已经实现)
deactivate  Flash Player 失去操作系统焦点并变为非活动状态时调度。
ioError  在出现输入/输出错误并导致发送或加载操作失败时调度。(以前是在onConnect传入false,而这里是直接引发ioError事件,更规范)
securityError  若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 的端口,则进行调度。
socketData  在套接字接收到数据后调度。 (这个监听在教程里已经实现)


上一页 1 2 34 5 下一页

上一篇:flash 结合php 生成jpg/png图   下一篇:amfPHP工作原理
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
推荐内容

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)