actionscript 网页游戏开发 php服务器,云风的 BLOG

身边的同事没有人做过 flash 的应用。周末里,也不好意思的打搅那些做 web game 组的同事。所以我只好求助于 google 以及 adobe 的官方网站,花了几个小时时间,稍微摸出点门道来。

我想我是患上了 IDE 恐惧症。一开始搜出的信息是,开发基于 Flash 的网络应用程序,需要在 Adobe 出品的 Flash CS 中工作。我在网上找来几张这个 IDE 的截图就被吓坏了。这是给我这样愚笨的程序员用的吗?离开了命令行、管道这些东西,我写的代码还能被编译运行吗?我不想把生命浪费在拖拽控件、寻找菜单等等的鼠标操作上。

继续搜索,找到两个东西:

一个是 MTASC ,第三方开源项目,可以用来编译 ActionScript 2 的代码。

另一个是 Adobe 自己 Flex SDK ,可以用来编译 ActionScript 3 。

比较了一下 as 2 和 as3 的语法,很明显,as3 更像是设计出来的语言,虽然写起来比 as2 冗长许多。不过我想,as3 更有前途。所以选择了 Flex SDK 里带的 mxmlc 做我的编译器。

btw, 在 Ubuntu 下安装 MTASC 更为方便,用 apt 即可。随手装了一个,感觉编译速度快很多,有空的话,我也多玩一下。

我想试一下,如果用 as3 创建一个长连接跟 server 通讯。搜索的结果是,使用 flash.net.Socket 或是 flash.net.XMLSocket 。

两个差不太多,不过 Socket 可以用 raw binary 的协议,和我以前做的东西跟贴切。所以我用 flash.net.Socket 做的实验。

Socket 类采用的是回调机制,注册一些事件回调去相应网络消息即可。在 Adobe 的官方文档上找到了例子程序,编译通过。(注:如果使用 mxmlc 编译,需要加上编译开关 -use-network)

然后,我用 nc 架了个简单的 server 做测试。

第一次握手,可耻的失败鸟。nc 收到了一个字符串,“policy-file-request” 然后就被 Client 关掉。

从字面上猜想,这个是 Flash 的安全设施之一,保障 flash 程序挂在 web 上,可以让人更安全的使用。比如,你不能做个 web 页面,放个 flash 在上面,骗别人去浏览,然后用这个 flash 程序去访问一些本来不该你可以访问的服务。

举个例子:如果是你发布一个客户端程序,让用户运行,你可以用这个客户端收集用户机器上的资料,并发回 server ,用户是很难知道的(尤其在 Windows 下)。这点,Flash 可以用本地文件访问的限制控制。

如果你的客户端程序去连接用户本地网络(原本是用防火墙阻止外部连接),用户也很可能在不知情的情况下,泄露一些不应该泄露的信息。Flash 作为一个公众安装量极大的 web 控件,必须考虑这类安全问题。

Flash 的安全解决方案就是,在建立任何网络连接时,先询问 server 自己是否有权限建立连接。也就是自我约束。

接下来,随手写了几十行 C 程序提供这个 policy-file-request 服务。我的第一个 as3 程序就可以正确的和 server 通讯了。

剩下来的工作,和别的语言/开发环境下做互联网应用基本没有区别:接收包,分析包、处理包。

Flash 在处理 UI 方面还是很强大的,所以搭建一个诸如聊天室,或者是让一个 sprit 在虚拟场景里跑,并同步各个 client 的位置信息都是很容易的事情。

用 Flash 做所谓“无端网游" 大抵如此。只不过把用 C/C++ 写的东西搬到 as3 里做罢了。至于 Server 那边,该怎么做还是怎么做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值