在我的上一篇Status 2的文章中给大家简单介绍了Stratus 2 一对多视频直播,今天给大家演示一下如何在NetGroup中共享文件。在原来的Strtuas 1 中,我们也可以发送文件,不过发送的方式很单一,只能通过NetStream.send的方式将文件发送给选定的对象。这样的文件发送问题很多。
- 发送过程中无法知道文件发送的情况。
- 很麻烦才可以将文件拆分发送。
- 发送的过程中很容易造成数据包丢失。
- 一次只能发送给一个用户,如果要发送到第二个用户,需要额外的连接。
以上这些问题因为Stratus 1 只支持点对点的传输,所以这些问题很难解决。而现在的Stratus 2,因为支持了Application level Multicast (应用层多播,关于应用层多播是什么因为不会影响我们的教程,这里就不多解释了,有兴趣的朋友可以问下google),所以我们的文件发送变得更加的强大,或者说更加的P2P,具体来说有这些优点。
- 支持文件拆分发送。你可以将你的文件拆分至N份。
- 多用户间共享文件块 。A用户发送文件,B用户接收,C用户再接收时C用户从A与B中接收
- 相对稳定的传输 (因为Stratus 2 现在也是Beta阶段,我也没有试过真实环境下大量用户共享文件的情况所以稳定情况有待考证)
- 文件传输反馈。更方便的监控传送的过程
了解了以上这些,我们来看下面这个例子,代码我是在前一个例子的基础上添加,所以对已有的代码就不重复解释,只解释文件发送相关的代码。
(more…)
终于有时间试下Strtaus 2的p2p多播功能了。之前看的视频介绍中,Adobe描述一个非常理想的多人P2P数据共享方式。但是今天试了一下后发现视频的速度非常慢(视频的发布和接收端都在一台机器上),感觉上视频被发送到了什么地方后才传了回来。这这……好吧,就当是BETA的问题了,WAIT AND SEE. (2/25日更新,2/23日发布的Flash player 10.1 beta 3 看来解决了这个问题,Demo的速度现在非常正常)
准备工作:
先了解一下什么是stratus以及什么是RTMFP,你可以到http://labs.adobe.com/technologies/stratus/看下官方的解释或者直接看我原来的 Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)(2)(3) 先学习一下Flash p2p的基础. 简单的说原来的Stratus 实现了flash player之间点对点的传输数据,而今天要讲的stratus 2 不仅支持单个的点对点数据传说,还引入了多播的概念。
在原来的stratus中如果我们要做一个多人同时在线的应用,比如多人视频。那么我们需要把在线的所有人都链接起来,类似蜘蛛网的结构,网中的每个人需要与其他所有人链接,这样数据才能在所有人中共享。这种模式在多人连线中是不可取的。假设我们用户A发布一个视频想让其他10个用户观看,那么10个用户都需要链接到他。就中国的普通用户的网络带宽来说,这就是极限了。而Stratus 2 中 “组” 的概念解决了这个问题。用户A发布视频让同一个组中的其他10个人观看。他们并都从A处获取视频。而有可能通过组中的其他用户获取A的视频。这也就是P2P的模式了,每个人都可以作为数据的发出者,数据以最优的方式被观看者收到,参与的人越多,数据的副本就越多。视频的速度也就越快。 (more…)
在项目中我们对DataGrid的要求是很高的,但很不幸的Flex 的DataGird的功能是很傻的,这就催生了AdvancedDatgrid, 它确实解决了很多DataGrid不能做的事,比如多级排序,单元格选择,树状显示数据,合并表头等,但是不知道为什么它确忘记了 “合并单元格”这么重要的事。好在牛人是很多的,于是出现了MecGrid, NecGrid这样不错的能解决单元格合并的DataGrid, 不过他们都各有缺点。
MecGrid: (http://www.mechansp.com/index.php)
1. 不支持itemrender。
2. 单元格选择时无法获知整行数据。
3. 不支持xxxFunction设置比如(labelFunction)
4. 设置很不方便。在column设置中大量使用 number作为参数,非常非常的不利于使用,在线文档对这个ResourceXML的设置也没有提到具体细节,这个很头痛.
总结: MecGrid的使用非常不方便,而且完全不支持复杂数据类型,虽然实现了很多功能但都是固定功能,扩展性不强。这让他局限在只能作为表格使用。
NEC Grid (http://www.necst.co.jp/product/ibiz/column/ibizblock/chap7.html)

1. 不能改变行高。
2. 破换了itemrender的使用,我增加了一个ComboBox作为itemrender,但是他的显示完全不正常。如果itemrender的高度大于他的默认行高,显示会被切断。
3. 不支持单元格选择。
总结:这个DataGrid的使用非常方便,不过缺点也比较明显,尤其是对itemrender这条,要命的是他不能改变行高,但实际中我们的数据是很有可能换行的。另外他居然不支持单元格选择,作为一个AdvancedDatagird,单元格选择在很多时候是必要的。总的来说这个DataGrid用于对数据操作没有特殊要求的用户是不错的选择。
—————————-废话结束,教程开始的分割线—————————————
(more…)
继续第二章,布局
简介
这篇教程中我们将通过一些简单的例子初步的学习Flex SDK 4中新的布局方式。
学习目标
- 初步了解SDK4中布局有哪些变化。
- 学会使用新的布局方式。
准备工作
下载并安装Flash Builder 4
实现步骤
在之前的Flex SDK中,布局是在控件或者容器中单独定义的,因此我们的控件,比如List, TileList, and HorizontalList,他们全都有完全相同的方法,只是布局方式不同。在Flex 4中,布局已经从控件中剥离出来。这样我们可以更加灵活的对控件进行布局,比如在运行时将容器的布局方式由横向改为纵向。这在Flex 3中是很难实现的, 因为我们很难在运行时把List改为TileList 或者将Hbox改为Vbox。 (more…)
这次的教程主要针对Flex SDK 4的新特性,一共有12篇。会全部收录在airia.cn出品的《Flash Builder 4 入门教学》中,这本电子教程现正在编辑阶段,里面包含了所有Flash Builder 4新增加内容的介绍,使用教程等,希望在它发布之后大家能够喜欢。现在我将部分的内容提前放出,也算是预告片
简介
学习Flex SDK 4的新特性 — 主题
学习目标
- 切换Flash Builder 4自带的多款主题。
- 知道主题的存放位置。
- 知道主题应用的原理。 (more…)
从 Flex SDK3.2开始,Adobe 对所有可视化控件增加了3D控制属性 rotationX, rotationY, rotaionZ, Z等。今天就用这四个属性模拟亚马逊的Windowshop (http://www.windowshop.com/),当然这里只是为了演示在Flex SDK 3.2+中我们可以比较容易的实现这样的效果,代码中并没有研究自动对焦到任意图片的算法,只是模拟对焦到两张图片。 (more…)
实现DataGird行颜色的改变不难,网上也有很多类似的教程,不过有的太罗嗦,有的说的又太简单,我稍微折中了一下。
首先继承DataGrid做一点简单的扩展。扩展的目的是:
- 添加一个rowColorFunction,根据当前行的值设置行的颜色,用法与labelFunction一样。
- 覆写drawRowBackground, 让其能用rowColorFunction返回的颜色设置当前行。
附件的RowColorDataGrid.as 是国外一个家伙写的,我没改(实在没什么可改的了),只添加了注释帮助大家理解。
下面是一个简单的Demo, 将check box钩中的行高亮显示: (more…)
在Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)中我们已经知道如何链接一个客户端并且互相发送短信,今天来扩展下面的这些内容
- 呼叫时在被呼叫端显示 “接受”,点击接受后双方建立链接。
- 呼叫试或者接通后可以挂机。
- 添加视频与音频通信。
首先来看看Demo:
Demo 操作:
1. 输入任意名称,点击链接 (两台机器或者两个浏览器)
2. 输入对方的peerId,点击呼叫
3. 被呼叫方点击 “接受” 建立链接。
4. 开始语音,视频,文字通讯.
5. 挂机
Demo地址:
http://flextheworld.com/flash/p2p/P2pPhoneDemo.html
(more…)
接上篇,这一讲里我告诉大家如何链接另一个flash客户端,并且发送文字信息,在下一讲中会引入更多的内容,比如,“是否接收对方呼叫”,“语音和视频的发送” 等等。
看这篇教程时一定要把自己分成“呼叫者”和“被呼叫者”两个身份来看,否者有可能会看得头晕,呵呵。现在我们开始。
1. 首先了解一下我们会用到的变量, 这里要最主要的四个NetStream,他们的作用请看注释。
(more…)
前些天把Adobe官方的p2p Video phone demo的研究了一遍,了解了这个基于Stratus的video phone是如何工作的。由于Adobe的demo需要运行一个python写的web service才可以运行 — 这个web service用于用户名与peer ID之间的转换,真实项目中我们不可能用256-bit 的 peer ID作为联系人的用户名,所以做一个用户名到Peer ID之间的转换是很用必要的,打电话时只需要知道对方的登陆用户名就可以联系,不需要知道这个超长的不可能记住的Peer ID。可能很多不熟悉python的人没有成功运行源代码,现在我就从我的角度告诉大家如何创建这么一个 P2P 电话。(当然不需要额外的web service) (more…)