动作脚本,flash,ns-如果条件为真,则循环flv

动作脚本,flash,ns-如果条件为真,则循环flv,flash,actionscript,loops,flv,netstream,Flash,Actionscript,Loops,Flv,Netstream,大家好 如果条件为真,我需要在flash中循环flv文件 因此,我尝试添加一个侦听器,但id无效。。代码如下: textBox.addEventListener(FocusEvent.FOCUS_IN, focusInListener); var connection:NetConnection = new NetConnection(); var stream:NetStream; var video: Video = new Video(200, 200); var metaObj:

大家好

如果条件为真,我需要在flash中循环flv文件

因此,我尝试添加一个侦听器,但id无效。。代码如下:

textBox.addEventListener(FocusEvent.FOCUS_IN, focusInListener);

var connection:NetConnection = new NetConnection(); 
var stream:NetStream; 
var video:
Video = new Video(200, 200); 
var metaObj:Object = new Object();

function onMetaData(data:Object):void {

}

var checkvid=0;

connection.connect(null); 
stream = new NetStream(connection); 
stream.client = metaObj; 
metaObj.onMetaData = onMetaData; 
video.attachNetStream(stream); 
addChild(video); 
stream.play("Mann ft. 50 Cent - Buzzin 2010-(mrsjs).flv"); 
video.x = 0; 
video.y = 40;

textBox.addEventListener(KeyboardEvent.KEY_DOWN,handler);

function handler(event:KeyboardEvent)
{     
   if(event.charCode == 13) // if the key is ENTER
   {
      switch (textBox.text)
     {
       case "1": 
               stream.play("m1.flv");  
               checkvid=0;
               // Note from Slomojo - You probably wanted a break; here.
           case "2": 
               stream.play("m2.flv");
               checkvid=1; 
               break;
           case "3": 
               stream.play("m3.flv");
               checkvid=0; 
               break;
     }
    }
}

var listener:Object = new Object();
listener.complete = function():Void {
   stream.seek(0);
   stream.play();
}
stream.addEventListener("complete", listener);

任何想法都值得赞赏。谢谢。

NetStream
不会触发
complete
事件,并且您对侦听器对象的操作不正确,您对
NetStream
使用了直接回调函数

请看这里:

基本上,你听的是
onStatus
-给它分配一个回调。。。即:

stream_ns.onStatus = function(infoObject:Object) {
        trace("NetStream.onStatus called: ("+getTimer()+" ms)");
        for (var prop in infoObject) {
            trace("\t"+prop+":\t"+infoObject[prop]);
        }
};

您需要的信息位于
infoObject

中。我建议您使用以下解决方案:

    var stream_ns:NetStream ...
    stream_ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
    ...
    stream_ns.play("video.flv");

    function netStatusHandler(p_evt:NetStatusEvent):void {
        if (p_evt.info.code == "NetStream.FileStructureInvalid") {
            trace("The MP4's file structure is invalid.");
        }
        else if (p_evt.info.code == "NetStream.NoSupportedTrackFound") {
            trace("The MP4 doesn't contain any supported tracks");
        }
        else if (p_evt.info.code == "NetStream.Play.Stop") {
            trace("final of video");
            repeatMethod();
        }
    }
因此,您需要实现repeadMethod,具体如下:

    function repeatMethod():void {
          stream_ns.play("video.flv");
    }

我尝试了var-listener:Object=newobject();listener.play.complete=function():Void{…仍然不起作用。好的,更新我的答案使其更明确。顺便说一句,清理代码并停止在一行上复合多个语句,断行将是零,当您需要返回代码并修复/修改它时,您只是在为自己做额外的工作。