NetConnectionはタイムラインに参照がないと動かない?
近頃ビデオ素材をあつかうことが増えてきてました。
だいたいサクッとモックをつくるときは簡易的に下記のようにするのですが、これがなぜかうまくいきません。
//クラス定義 class HogePlayer { function HogePlayer( v:Video, path:String ) { var nc:NetConneciton= new NetConneciton(); nc.connect(null); var ns:NetStream = new NetStream(nc); v.attachVideo(ns); ns.play(path); } }
// タイムライン var _myVideo:Video = this.myVideo; var player:HogePlayer= new HogePlayer( _myVideo, "foo.flv" );
NetStream.onStatusによるとNetStream.Play.Startが取れてるんですが、実際には動画は再生されません。
いろいろやってみた結果、次のようにするとうまくいきました
class HogePlayer { function HogePlayer( v:Video, path:String, nc:NetConnection ) { lc.connect(null); var ns:NetStream = new NetStream(nc); v.attachVideo(ns); ns.play(path); } }
// タイムライン var _myVideo:Video = this.myVideo; var nc:NetConneciton= new NetConneciton(); var player:HogePlayer= new HogePlayer( _myVideo, "foo.flv", nc );
解決方法はタイムラインにNetConnectionの参照を持つことでした。
これが次のようにするとうまくいきません。
// タイムライン var _myVideo:Video = this.myVideo; var player:HogePlayer= new HogePlayer( _myVideo, "foo.flv", new NetConneciton() );
とにかくNetConnectionインスタンスの参照(変数)がタイムライン上にあることがポイントのようです。
あまり詳しく追ってないんですが、調べた範囲では何もでてこなかったのですが、、どこかにバッチリ書いてあるんでしょうか。それともあまり一般的じゃないのでしょうか