メイン コーダーズルーム【スクリプト系】 flv制御について | 投稿するにはまず登録を |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
みみみぃ | Åê¹ÆNo.36512 投稿日時: 2007-11-28 14:22 |
新米 居住地: 埼玉県 投稿: 10
使用環境:
WinXP,Flash8 |
Re: flv制御について お返事が遅れてしまってすみません・・。
ご指摘を受けた箇所を修正、若干調整したところ思い通りの動作が実現できました。 おつきあいいただいてありがとうございました。 |
あにぃ | Åê¹ÆNo.36383 投稿日時: 2007-11-20 20:21 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: flv制御について seekのMC側の処理が
で切り上げているのに対し、
で切り捨てているためかと思います。
にしてみてはいかがでしょうか?
|
みみみぃ | Åê¹Æ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.36379 投稿日時: 2007-11-20 18:22 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: flv制御について メタデータよりトータルの時間を取得している様ですので、
等でいけそうな気がします。
|
みみみぃ | Åê¹ÆNo.36376 投稿日時: 2007-11-20 17:38 |
新米 居住地: 埼玉県 投稿: 10
使用環境:
WinXP,Flash8 |
Re: flv制御について すみません、再度質問です・・・。
133秒以外の動画に対応したく、前回ご回答を頂いたソースを若干修正しています。 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._xの位置を整数化することは出来たのですが、 (markerのほうのthis._xは整数で取ってしまっている為です) markerのほうの on (press) { _root.stream_obj.pause(); this.startDrag(false, 0, 0, 133, 0); _root.marker = false; } on (release, releaseOutside) { this.stopDrag(); _root.stream_obj.seek(_root.stream_obj.time = this._x); } onClipEvent (mouseMove) { updateAfterEvent(); } の_root.stream_obj.seek(_root.stream_obj.time = this._x);の部分をどう変更したらがいいかわかりません・・・。 this._xのままでは当然133までしか計れず、困ってしまいました。 色々考慮しstream_obj.timeなどを逆算したりしてみたのですが結局対応は出来ませんでした・・・。 初歩的な質問かもしれませんが、どなたかご教授頂けたら幸いです。 |
みみみぃ | Åê¹ÆNo.36375 投稿日時: 2007-11-20 16:31 |
新米 居住地: 埼玉県 投稿: 10
使用環境:
WinXP,Flash8 |
Re: flv制御について あにぃさん、ひろゆきさん
ご丁寧にありがとうございます。 133秒までの動画しか正常に稼働しないのは _root.stream_obj.seek(_root.stream_obj.time = this._x); によって、markerの位置の0?133までしかはかれないから、ですね・・。 すみません、勉強不足でした・・・。 this._xの箇所を修正して、再度調整してみます。 |
ひろゆき | Åê¹ÆNo.36374 投稿日時: 2007-11-20 15:18 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: flv制御について 引用:
あにぃさんは書きました: loadMovie と同様に、startDrag には、 グローバル関数である startDrag() と MovieClip のメソッドである MovieClip.startDrag() があります。 なので、両方使えます。
|
あにぃ | Åê¹ÆNo.36372 投稿日時: 2007-11-20 15:01 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: flv制御について seek(n)とすると、動画のn秒目に飛ぶことになります。
なので、現在のスクリプトでは133秒の動画でしか正常の動きをしないと思われます。
ではないでしょうか? startDragの第一引数は、ターゲットインスタンスへのパスだったような気がします。最近つかってないのでうろ覚えです。
|
みみみぃ | Åê¹ÆNo.36371 投稿日時: 2007-11-20 14:27 |
新米 居住地: 埼玉県 投稿: 10
使用環境:
WinXP,Flash8 |
Re: flv制御について ご丁寧にありがとうございます。
さっそく試して見たところ、動作はしました。 ですが、this.startDrag(false, 0, 0, 133, 0);のコードの影響か、133秒以上の動画だと動きが不確定になってしまいました・・。 this.startDrag(false, 0, 0, 133, 0);はseekのMCの幅が133の為、markerをonPressした時に0?133間の間でドラッグ可能にするという処理だと思って記述しているのですが(markerのMCはseekの中の0座標に配置してます)、間違っているのでしょうか・・・。 度々の質問申し訳ありませんが、よろしくお願いします。 |
あにぃ | Åê¹ÆNo.36344 投稿日時: 2007-11-19 15:19 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: flv制御について seekに入る値は0~133のようですが、flvはかならず133秒のものしか再生されないということでよろしいでしょうか?
seekのenterFrameでは再生時間でmarkerの位置を変更し、 markerのenterFrameではmarkerの位置で再生時間を変更する。 お互いがお互いをけん制しあっているため、動きませんね。
とし、release時のみseekさせてみてはいかがでしょうか? あと、_root.markerをtrueおよび、再生開始にするタイミングは、シーク処理が終わった後のほうがいいかと思います。
|
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |