0

我有以下代码

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

flash帮助页面显示该函数在 AS3 中有效。那我要去哪里拧呢??

4

2 回答 2

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);

这基本上是它的要点,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);
    }

}

}

祝你好运!

于 2011-12-03T07:44:09.270 回答
0

乍一看,我没有看到代码有任何问题,但在帮助页面上它有一个注释:

AIR 3.0 for iOS 中的 H.264 视频不支持此方法

您是在 iphone 上部署它,还是使用 adobe air?

于 2011-12-02T23:25:28.180 回答