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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     flv制御について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
みみみぃ
Åê¹ÆNo.36382
投稿日時: 2007-11-20 20:07
新米
居住地: 埼玉県
投稿: 10
使用環境:
WinXP,Flash8
Re: flv制御について
度々のご回答、ありがとうございます。

さっそく試して見た所、しっかり移動した位置で再生されました。

ですが、つまみ(marker)をbarの最後(133の位置)まで一気に移動すると、若干前の位置に戻ってしまったり、つまみを話してもflvが再生されない場合が発生してしまいました・・・。

私の書き方がおかしいのでしょうか、申し訳ありませんがご教授頂けると幸いです。


1フレーム目
//動画変数
flv01 = "01.flv";

//ローカル接続を確立
connect_obj = new NetConnection();
connect_obj.connect( null );

//ストリーミングの準備
stream_obj = new NetStream( connect_obj );
flv_view.attachVideo( stream_obj );

//メタデータを取得
stream_obj.onMetaData = function( meta:Object )
{
//メタデータから全体の長さを取得
total_time = meta.duration;
};

//動画の読み込み
stream_obj.setBufferTime(5);
stream_obj.play(this.flv01);
stream_obj.onStatus = function(infoObject:Object):Void {
if(infoObject.code =="NetStream.Seek.Notify"){
_root.stream_obj.play();
_root.marker = true;
trace("シーク後のフラグ" + _root.marker);
}
};


//再生ポジションナビゲータ
total_time = 0;

//マーカーフラグをオン
marker = true;

1フレーム目のステージにはstream_objというビデオオブジェクトが配置してあります。

同ステージにseekというMCを配置し、中にはbar、markerというMCをそれぞれ配置してあります。


seekのMCのコードは
onClipEvent(enterFrame) {
if(_root.marker){
var pos;
if( _root.total_time != 0 ) {
pos = _root.stream_obj.time / _root.total_time;
marker._x = Math.ceil(bar._width * pos);
}
}
}

その中のmarkerのMCには

on (press) {
_root.stream_obj.pause();
this.startDrag(false, 0, 6, 133, 6);
_root.marker = false;
trace(_root.marker);
}

on (release, releaseOutside) {
this.stopDrag();
_root.stream_obj.seek(Math.floor(_root.total_time * (this._x / 133)));
Math.floor(_root.total_time*(this._x/133)));
}

onClipEvent (mouseMove) {
updateAfterEvent();
}

と記述してあります。


現在おかしくなってしまっている箇所は

markerをonReleaseしているはずなのにFLVが停止したまま。
markerを動かすと稀に動かした位置より少し前に戻ってしまう。(seekのほうで指定しているmarkerのx座標指定とmarkerをドラッグした時のx座標指定が食い違ってしまっているから?)

何度も試してみたのですが、どうしてもわかりません。
どうか、よろしくお願いします。
あにぃ
Åê¹ÆNo.36383
投稿日時: 2007-11-20 20:21
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: flv制御について
seekのMC側の処理が

pos = _root.stream_obj.time / _root.total_time;
marker._x = Math.ceil(bar._width * pos);

で切り上げているのに対し、


on (release, releaseOutside) {
    this.stopDrag();
    _root.stream_obj.seek(Math.floor(_root.total_time * (this._x / 133)));
}

で切り捨てているためかと思います。


_root.stream_obj.seek(Math.ceil(_root.total_time * (this._x / 133)));

にしてみてはいかがでしょうか?


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

みみみぃ
Åê¹ÆNo.36512
投稿日時: 2007-11-28 14:22
新米
居住地: 埼玉県
投稿: 10
使用環境:
WinXP,Flash8
Re: flv制御について
お返事が遅れてしまってすみません・・。

ご指摘を受けた箇所を修正、若干調整したところ思い通りの動作が実現できました。

おつきあいいただいてありがとうございました。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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