[AS3]as3侦听视频类的metaData和cuePoint用法提示
AS3.0监听视频的metaData和cuePoint时,使用了onMetaData()和onCuePoint()类AS2.0的形式,而没用addEventListener这种更"现代化"的形式,为什么?
AS提供的NetStream类比较特殊。它既支持本地Video对象播放,也支持基于HTTP的流媒体播放。最重要的,是它支持Adobe自家的Flash Media Server的实时流和点播流。
Flash Media Server(以下简称FMS)是一个重量级的产品,它在AS 1.0/2.0时代就推出了。FMS最初叫做Flash Communication Server(以下简称FCS),它当时是和(Flash MX/Flash MX 2004)|(Flash Player 6.0/7.0)|(AS1.0/2.0)配合使用的。
上面一段的括号、斜杠、分隔符很多,如果看不懂,可以先看这篇文章:
Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系http://zengrong.net/post/1295.htm
不要怪我,Adobe的产品线确实就是如此的混乱(这和收购Macromedia无关)。
FMS 是个服务器,它的升级不可能与Flash Player这个客户端同步。这就导致了可能出现Flash 6/AS1的客户端程序连接目前最新的FMS 5.0服务器的情况;当然也可能会出现Flash 11.5/AS 3.0客户端程序连接FCS 1.5的情况。为了保证语法一致性和向下兼容,Adobe估计就只能在NetStream这个特殊的类上保持这种特殊的语法了。
其实这种语法也不算怎么“特殊”。同样的情况也还发生在NetConnection类上。可以参考NetConnection的client属性和call方法:http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/net/NetConnection.html#client
为了向下兼容,AS3 的继承机制本来就是两套:固定属性继承和原型(prototype)继承。client这种特殊对象的存在,在原型继承的基础上是很合理的。可以参考这里:http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f3f.html
况且,FMS中使用的语言是Javascript。Javascript采用的是原型继承。所以对于一个服务器端和客户端都要使用的功能/类/方法,而且要兼顾客户端的AS1/AS2/AS3的变迁,采用这种方式应该是再合理不过。
以上全是我的猜测。可能不正确。知乎好像有几位Adobe员工,正确答案你可以问问他们。
附:FMS中的NetStream、Stream、NetConnectioin、Client
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例