acitonscript 3.0 flash播放器制作。

本人开始的时候是参考http://www.knowsky.com/441541.html,进行制作的。可以看到其中的actionscript代码为

//创建一个名为nc的NetConnection对象
var nc:NetConnection = new NetConnection();
nc.connect(null);
//创建一个名为ns的NetStream对象,并将nc作为参数填写在括号内
var ns:NetStream = new NetStream(nc);
//创建一个名为myVideo的Video对象
var myVideo:Video;
//将myVideo播放的视频指定为ns
myVideo.attachVideo(ns);
//让ns执行play()方法,括号内填写flv文件的路径,这里我用的是本地路径
ns.play("1.flv");


1 第一个错误

但是你会发现直接运行会有下面的错误,参考下面的两个文章:

http://flashascript.wordpress.com/2010/11/08/flash-custom-video-player-tutorial-part-1/

http://glqhappywithyou.blog.163.com/blog/static/1184761912011101243029906/

可以知道原因是myVideo.attachVideo(ns)这个方法在actionscript3.0里面已经没有了,其实上面是actionscript2.0的方法,所以并不适用。

于是将这句话修改为:myVideo.attachNetStream (ns); 这样就不会报错了。


2 第二个错误

但是还是无法正常的播放视频,上面百度空间的也遇到这个问题,但是没有继续查找原因。

通过按ctrl+shift+enter,会得到下面的错误:

TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at flashplayer_fla::MainTimeline/frame1()[flashplayer_fla.MainTimeline::frame1:23]

可以发现是myVideo.attachNetStream (ns);这句话出现了问题,这里空对象引用出现了问题,说明myVideo是个空对象。

因为我没用过actionscript2.0,不明白语法,有达人知道为什么2.0是ok可以在下面告诉我。

但是对于actionscript3.0这里的错误就是因为myVideo是空对象,应该修改为var myVideo:Video = new Video();


3 第三个错误

你可以发现播放器能够播放视频,但是播放的时候存在下面的问题

Error #2044: 未处理的 AsyncErrorEvent:。 text=Error #2095: flash.net.NetStream 无法调用回调 onMetaData。 error=ReferenceError: Error #1069: 在 flash.net.NetStream 上找不到属性 onMetaData,且没有默认值。
at flashplayer_fla::MainTimeline/frame1()


为什么会报错,由于在下也是初学,不知道所以然,有高手可以回复一下,或者以后找到原因也会写上去。

如何解决呢?

我参考了

http://tian-qi.iteye.com/blog/604759

http://bbs.9ria.com/thread-31175-1-1.html

下面是完整的acitonscript3.0代码

//创建一个名为nc的NetConnection对象

var nc:NetConnection = new NetConnection();

nc.connect(null);

var customClient:Object = new Object(); 
customClient.onMetaData = metaDataHandler;

//创建一个名为ns的NetStream对象,并将nc作为参数填写在括号内

var ns:NetStream = new NetStream(nc);

ns.client=customClient;
//创建一个名为myVideo的Video对象

var myVideo:Video = new Video();
addChild(myVideo);

//将myVideo播放的视频指定为ns

myVideo.attachNetStream (ns);

//让ns执行play()方法,括号内填写flv文件的路径,这里我用的是本地路径

ns.play("1.flv");


//onMetaData回调函数的事件 
function metaDataHandler(infoObject:Object):void {} 

这样就可以在本地播放视频了。


所有代码可以参考https://github.com/destinym/flashplayer.git


你可能感兴趣的:(Flash,视频播放器,acitonscript3.)