web即时通信的Flex解决方案
提到web即时通信,可能大家立即会想到ajax定时请求、服务器推等解决方案,但这里我要说的是一种综合的解决方案,使用Adobe的Flex XmlSocket、javascript以及服务器端技术,建立真正的web即时通信。当然这还受益于flash的普及,大部分用户的浏览器都安装了Flash player插件,从而保证此方案维持了web技术无须客户端部署的优势。
XmlSocket采用TCP方式与服务器进行连接,首先要编写一个ActionScript通讯组件并编译的成swf格式,并在HTML的DOM中嵌入此组件,以建立与服务器的连接和数据通信,然后使用javascript与AS组件交互,以处理接收到的数据(建议采用javascript容易解析的JSON或XML数据格式),当然也可以使用其他可与flash交互的脚本语言,而服务器端需要建立一个TCP服务器来处理连接请求和发送数据。此处特别要强调的是策略文件,即flex的安全沙箱问题,这是Adobe在Flash Player 9.0.124.0及以后的更高版本中的安全策略,无论连接到哪一个端口(即使连接到提供 SWF 文件的同一主机上的端口),目标主机上都需要套接字策略文件,建议侦听843端口来发送策略文件,当然也可以通过主通信端口来发送,详细策略文件格式请参照http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html。
以下是连接服务器8000端口的ActionScript代码:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.XMLSocket;
public class XMLSocketExample extends Sprite {
private var hostName:String = "localhost";
private var port:uint = 8000;
private var socket:XMLSocket;
public function XMLSocketExample() {
socket = new XMLSocket();
configureListeners(socket);
if (hostName && port) {
&n
相关文档:
Getting Around Bug in Adobe Flex: TabControl Inline Event Handling for TabIndexChange Doesn't Work
I ran into this because I wanted to do something funky. I wanted my Flex app window to change PageStates (and size) whenever the TabIndex changed. Whether doing this kind of thing is wise ......
绑定:
举个例子: 给下面的public变量加上[Bindable]
[Bindable]
public var name:String = "";
作为一个public变量,肯定既可以被赋值,也能赋值给别的变量。绑定的作用就是,当name改变的时候(被赋值了),可能通知其它被name影响(赋值给它们)的变量发生改变。这里的“可能” ......
转自:http://www.cnblogs.com/jiahuafu/archive/2009/03/20/1417679.html
在Flex Application里,是不能直接用addChild添加Sprite,MovieClip等来自flash.display包里的类的。譬如以下代码就会报错:
private function init():void
{
var sp:Sprite = new Sprite();
addChild(sp);
}
TypeEr ......
1. 整体的结构分布:
各模块使用Module来划分,每个模块的页面及其相关的组件元素都是使用Component来划分;
模块的切换使用加载的方式,模块内部的切换使用页面跳转的方式;
技术问题:模块的切换与页面的切换的过程!
ModuleLoader与ModuleManager之间的取舍,选择了后者,可控的更多,但是目前的影响并不大!
关于M ......
第一种:修改下载进度的文字为中文
建立扩展至 mx.preloaders.DownloadProgressBar 的一个类:
01.package myDownPro
02.{
03.import mx.preloaders.DownloadProgressBar;
04.
05.public class myDownProBar extends DownloadProgressBar
06.{
07. public function myDownProBar()
08. {
09. //TODO: impl ......