我有以下代码
var playingStream:NetStream;
function playBytes(bytes:ByteArray): void
{
var connect_nc:NetConnection = new NetConnection();
connect_nc.connect(null);
playingStream=new NetStream(connect_nc);
playingStream.soundTransform= mySound;
playingStream.play(null);
playingStream.appendBytes(bytes);
}
我使用外部接口回调从JS调用此函数
但是,只要我在.fla
文件中编译上面的代码,就会抛出错误。
错误:1061通过静态类型flash.net:NetStream的引用调用可能未定义的方法appendBytes
闪存help page显示该功能在AS3中有效。我要去哪儿拧???
答案 0 :(得分:1)
您拥有的代码应该可以工作,appendBytes方法包含在Flash Player 10.1及更高版本中。如果您正在编译低于10.1的任何值,您将收到类似于您的问题中列出的错误。查看ByteArray.org上的以下博客文章,以及下面的示例。我为不同的帖子构建了示例,我希望它也可以帮助你!
播放初始化:
var video:Video = new Video(width, height);
var video_nc:NetConnection = new NetConnection();
var video_ns:NetStream = new NetStream();
video_nc.connect(null);
video_ns.play(null);
video_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
video.attachNetStream(video_ns);
ProgressEvent.PROGRESS处理程序:
video_ns.appendBytes(bytesAvailable);
这基本上就是它的jist,bytesAvailable将表示来自事件数据缓冲区的读取字节。下面列出了一个完整的例子:
package
{
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.ProgressEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.NetStreamAppendBytesAction;
import flash.net.URLRequest;
import flash.net.URLStream;
import flash.utils.ByteArray;
[SWF(width="1280", height="720")]
public class NetStreamAppendBytes extends Sprite
{
var video:Video;
var video_nc:NetConnection;
var video_ns:NetStream;
var video_stream:URLStream;
public function NetStreamAppendBytes()
{
super();
video_nc = new NetConnection();
video_nc.connect(null);
video_ns = new NetStream(video_nc);
video_ns.client = this;
video_ns.addEventListener(NetStatusEvent.NET_STATUS, ns_statusHandler);
video = new Video(1280, 720);
video.attachNetStream(video_ns);
video.smoothing = true;
video_ns.play(null);
video_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
video_stream = new URLStream();
video_stream.addEventListener(ProgressEvent.PROGRESS, videoStream_progressHandler);
video_stream.load(new URLRequest("path_to_flv"));
addChild(video);
}
private function ns_statusHandler(event:NetStatusEvent):void
{
trace(event.info.code);
}
private function videoStream_progressHandler(event:ProgressEvent):void
{
var bytes:ByteArray = new ByteArray();
video_stream.readBytes(bytes);
video_ns.appendBytes(bytes);
}
}
}
祝你好运!
答案 1 :(得分:0)
乍一看,我没有看到代码有任何问题,但在帮助页面上有一个注释:
AIR 3.0 for iOS中的H.264视频不支持此方法
你在iphone或adobe air上部署这个吗?