トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     FLV のプログレッシブ再生終了後のタイムラインの制御について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
knagai
Åê¹ÆNo.36447
投稿日時: 2007-11-26 1:23
職人
居住地: 白馬村
投稿: 796
使用環境:
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について
”受け損ない”に思えるのは、
this.onEnterFrame = function() {
 if ( code =="NetStream.Play.Stop"){
  gotoAndStop(飛ばしたい場所);
 }
};
の部分のせいだと思います。
NetStreamはイベントの発生を見張っているのでonStatusでその状態の変更を受け止めればよいだけです。
onEnterFrameイベントハンドラメソッドだとムービーのfpsが12の場合、1秒間に12回enterFrameイベントが発生しているので、その一瞬のすきまにイベントが発生すると、”受け損なう”ように思えるのではないでしょうか?

長くなりますが、参考までに前に提示した方法と同じ方法で「FLVの再生終了」をとらえるクラスを書いてみました。
ただし前の方法の方がコードは短く、使い方も簡単です。
また(ns.time>=duration)の部分はどっちを大きくすればよいのかはっきりしません。
//VideoComplete.asファイル
import mx.events.EventDispatcher;
import mx.utils.Delegate;
class VideoComplete {
	private var ns:NetStream;
	private var duration:Number;
	private var dispatchEvent:Function;
	private var addEventListener:Function;
	private var removeEventListener:Function;
	public function VideoComplete(netS:NetStream) {
		this.ns = netS;
		init();
	}
	private function init():Void {
		EventDispatcher.initialize(this);
		ns.onMetaData = Delegate.create(this, this.onMetaDataListener);
		ns.onStatus = Delegate.create(this, this.onCompleteListener);
	}
	private function onMetaDataListener(meta:Object):Void {
		duration = meta.duration;
	}
	private function onCompleteListener(info:Object):Void {
		if (duration != undefined) {
			if (info.code == "NetStream.Play.Stop" && (ns.time>=duration)) {
				var eventObject:Object = new Object();
				eventObject.type = "videoCompleted";
				eventObject.target = this;
				eventObject.nsTime = ns.time;
				eventObject.infoCode = info.code;
				this.dispatchEvent(eventObject);
			}
		}
	}
	public function addListener(evt:String, listener:Object) {
		this.addEventListener(evt, listener);
	}
	public function removeListener(evt:String, listener:Object) {
		this.removeEventListener(evt, listener);
	}
}


//メインのタイムライン
var video:Video;
var videocomplete:VideoComplete;
var nc:NetConnection = new NetConnection();

nc.connect(null);
var ns:NetStream = new NetStream(nc);
//
videocomplete = new VideoComplete(ns);
var listener:Object = new Object();
listener.videoCompleted=function(info:Object){
	trace(info.nsTime)
	trace(info.infoCode)
}
videocomplete.addListener("videoCompleted", listener);
//
video.attachVideo(ns);
ns.setBufferTime(5);
ns.play("filePath.flv");


----------------
永井勝則:
himco.jp :

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   FLV のプログレッシブ再生終了後のタイムラインの制御について sanagirock 2007-8-15 21:58
     Re: FLV のプログレッシブ再生終了後のタイムラインの制御について kakujirou 2007-11-25 1:08
       Re: FLV のプログレッシブ再生終了後のタイムラインの制御について knagai 2007-11-25 18:42
         Re: FLV のプログレッシブ再生終了後のタイムラインの制御について kakujirou 2007-11-25 23:46
         » Re: FLV のプログレッシブ再生終了後のタイムラインの制御について knagai 2007-11-26 1:23
             Re: FLV のプログレッシブ再生終了後のタイムラインの制御について kakujirou 2007-11-26 2:33

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops