通常のFLV再生とFMSストリーミング配信とはどう違うのか? 結論から言うとそんなに大きくは変わりなかったような。 ちょっとボリュームとかの初期化のタイミングなどの注意は必要っぽい。ネットワーク接続をしてから、初期化などしましょうと。 ただ、僕の使っているサーバーでは負荷がかかる?か回線が遅い?せいか、プログレッシブダウンロードのときと比べて再生途中でバッファーを必要としたりしてた。テストしたサイズが640×480やったんでちょっときつかったか。 実際のスクリプトで修正したとこらへんは、 //PathFMSは、rtmp://Service_url/application Name/Stream Name //NetConnectionオブジェクトの作成 _nc = new NetConnection(); _nc.objectEncoding = ObjectEncoding.AMF0; _nc.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler); _nc.connect(PathFMS); で、サーバーに接続してから、 // NetStreamオブジェクトの作成 _ns = new NetStream(_nc); //ロードするFLVファイルを指定 _ns.play(_flvPass); var client:Object = new Object(); client.onMetaData = metaDataHandler; _ns.client = client; _video.attachNetStream(_ns); _ns.bufferTime = 5; ここではまったんが、ロードするFLVファイルの指定。 FMSで、flvファイルの場合は、拡張子(.flv)の指定はいらないんやね。 sample.flvを指定したかったら、_ns.play(“sample”);で良いと。
前に仕事で動画(FLV)のダウンロードに関しての問題が出てた。 何かというと、要は動画を勝手にダウンロードできないようにしたいとのこと。確かアイドルかジャニーズか忘れたけど、その辺の事務所関連がうるさいと。 一番のネックやったんがRealPlayer! これを入れられると、Flash内でFLVを使うと自動的に動画をダウンロードアイコンが出てしまう。 これはかなりのネックで、当時は結局FMSを使う以外に解決法がわからんで、FMS使うにも予算はないしで、swfに埋め込ましてごまかしたような。。 ちなみに設定では、右クリックで「このビデオをRealPlayerにダウンロード」とだけにも出来る。
ちょっとサーバーの移管で、このブログと別のブログの絶対パスを変更する必要があったので、メモ。 WordPress:その他の設定の「アップロードするファイルの保存場所」を修正。 MovableType:設定→公開の「サイトパス」をブログごとに修正。また、mtフォルダに入っているmt-config.cgiの18行目あたりのStaticFilePathも更新する必要あり。 基本画像とかはftpであげているし、今んとこ不具合は無さそう。 ついでにWordPressのバージョンを2.7.1にしてんけど、ダッシュボードからクリック2回で自動更新出来るんや。何て便利!
そういやまだちゃんと触ったことないやん。ってことで、触ってみました。 test 結論から言うと予想通り面白い。思ってた以上に簡単に色々できそうな予感。 Papervision3Dのときも思ったけど、これらはそない難しくはないけど、どう使うのか?が大変。 もう今となっては、これらのライブラリを使って色んなサイトはもうあるし。ユニークな作品をいかに作るか! まぁそうは言ってもまずは触らないとわからんやろけど。 ■物理演算 ・四角形、多角形、円の演算が可能 ■ジョイント ・滑車ジョイント →2つの物体と1つのアンカーで構成、アンカーの場所で回転。 b2RevoluteJointDef.Initialize(Obj1,Obj2,Anchor1); ・距離ジョイント →2つの物体と2つのアンカーで構成、2つのアンカーの距離を保つようにそれぞれの物体が回転。 b2DistanceJointDef.Initialize(Obj1,Obj2,Anchor1,Anchor2); ・滑車ジョイント →2つの物体と4つのアンカーで構成、Anchor1、Anchor2は物体とロープのつながるとこに。他のアンカーは、滑車の位置になる。それぞれのアンカーで回転。 b2PulleyJointDef.Initialize(Obj1,Obj2,gAnchor1,gAnchor2,Anchor1,Anchor2,Balance); ・屈折ジョイント →2つの物体と1つのアンカーで構成、アンカーの位置と角度の方向にObj2が動きが制限される。 b2PrismaticJointDef.Initialize(Obj1,Obj2,Anchor1,Angle); ここでは物体と書いたけど、物体の代わりに空間(ワールド)でも大丈夫みたいや。 あとは、モーターとかデバッグ機能とかがある。 ライブラリに入っているMCで表示したいときは、userDataプロパティを用いて表示、但し大きさをあわせないと、衝突面がおかしくなるので注意。 //
ちょっとAS2の質問をされ、久々に触ったんで一応書いておこ。 やりたいことは、 ・カウンターみたく現在の番号を取得してボタンを押せば次の番号を取得。 ・ボタンは2回目のアクセスからは押せない。一度のみ。 とのこと。 まぁ色々とやり方はあるのだろうけど時間も無かったことで、とりあえずカウンターみたく数を数えるのはLoadVarsを使ってテキストを読み込み→phpでカウントアップ→番号更新として。アクセスの回数はSharedObjectでやってみた。 あんまりリクエストが無い限りソースを晒すのは恥ずかしいんやけど、ソースコードを表示するJS「dp.SyntaxHighlighter」を今更ながら入れてみたので晒してみます。 //メインタイムライン:ステージ上には、 //cnt_txtとclick_btn //Shift-jisを使う System.useCodepage = true; nowNum=0; //SharedObjectを使う mySOcookie = SharedObject.getLocal(“CookieData”); mySOtime_before = SharedObject.getLocal(“CookieTime”); //現在時間 TheDateObj = new Date(); nowtime = TheDateObj.getTime(); // 前回時間+600000ミリ秒 beforeTime = mySOtime_before.data.count + 600000; sa = nowtime – beforeTime; //一定時間がすぎていたら、リセット if (sa > 0) { mySOcookie.data.count = 1; } //現在の番号用LoadVarsオブジェクト text_lv=new LoadVars(); text_lv.onLoad=function(success){ [...]
3dsMaxからPapervision3Dへのエントリーで3dsMaxから直接Papervision3Dへインポートできないかと思ってたら、やっぱりあった。 どうやらデフォルト、標準のままだと無理っぽく、ColladaMAXというプラグインを使えばできるみたい。 入手するには、Feeling Softwareに行って登録が必要。登録してから、右上のDownloads→ColladaTools→3.05(現時点での最新版)→ColladaMax 3.05B(Win32+Source)。 test どうでしょ?前回と綺麗さ変わらんか。 まぁ、直接書き出しが出来るので楽っ! 前回のカメラの設定がおかしかったんで、直しました。 //
とりあえずtweensyの基本的なとこは触ったので、今度はTweensy FXを触ってみる。 前にも書いたけど、炎とかが簡単にできる! test これは、tweensyをDLしたときに入っているサンプルファイルの画像を差し替えて、ちょっと設定をいじっただけ。 一時停止をしようとしたら、emittor.pause()だけではだめっぽい。煙が止まらない。dispが煙部分みたいなので、layer.remove(disp)をして止めてみました。 自分の好きな画像に差し替えたり、EmitterとColorTransformをいじってあげるだけでも色々とポイントで使えそう。 //
ついこないだPapervision3Dを触りだしたばっかの僕ですが、昔、3dsMaxというソフトは使ったことがある。 ということで、何とか3dsMaxでモデリングしたものをPapervision3Dへ移せないかと、google先生に聞いていたら、FPS2008でお世話になった、宇都宮ウエブ制作所の正宗さんがMetasequoiaで作ったものをpapervisionで表示させる方法の記事を書いている! そんなら、3dsMaxからも出来るんやない?と思いつつ試すが、3dsMaxから.mqoファイルへの書き出しは無理。 かと言って、.daeファイルへの書き出しもできない。今のバージョンではわからんけど、僕の使っている3dsMax8では無理。 しゃーないんで、とりあえず ・モデリングは3dsMaxで。.objファイルで書き出し。 ・Metasequoiaでインポートして、テクスチャーを貼って、.mqoファイルで保存。 ・Vixar Motionで、さらにインポートして、.daeファイル書き出し。 ・それをFlashで読み込み。 とした。あー面倒。何かええ方法あるんやろなぁ。 そもそも、昔はMetasequoiaでモデリングして3dsMaxでテクスチャー、アニメーション作成が主流やと思ってたんに、完全に逆や。Metasequoiaもうちょい覚えんと。せめてテクスチャーまでは3dsMaxでやりたい。 test 3dsMaxを使ったことのある人には馴染みのティーポット。 が、なんかおかしいような。。。 Papervision3Dのカメラのせいか。モデリングしているときとPapervision3Dで読み込んだときとのスケール感がようわからん。どうやら今回はでかく作りすぎたみたい。そのせいで、カメラがえらい遠くに置かなければ全体が入らず、ゆがみが発生したと推測。 >>2009.03.19追記 やっぱりカメラの設定でした。swf差し替えました。 //
さっき勉強会のメモを書いたけど、見返すだけやと全然わからん。 ということで、とりあえずカスタムコマンドを触ってみました。 結論から行けば、そんなに難しくはなさそう。 まぁ最初やからというんで、たいしたことないからかもしれんけど。 単純に、テキストフィールドを追加して、メッセージを出すというコマンドを作ってみた。追加したテキストフィールドは、stageのクリックで消えるようにIndexSceneでセット。もっかいクリックしたら現れるようにも。 test 作り方は、 ・テンプレートフォルダのMyCommand.asをコピーしてきて、通常のクラスと同様にパラメータをコンストラクタにセット。 ・execute()のところに、テキストフィールドを作成して、メッセージを表示。 ・clone()のことに、プロパティの値を元のプロパティと一致するように設定。 ・最後に、コマンドを作成したシーンからテキストフィールドにアクセスできるように、get関数を作成する。return _textFieldみたいに。 僕の作ったカスタムコマンドをとりあえずFlowCommandとするとして、 呼び出しは、 var com:FlowCommand= new FlowCommand(progression.container, “michinoko”, 20, 5); com.execute(); progression.containerに、”michinoko”という文字列を、(x,y)=(20,5)の位置に表示。 あとはIndexScene内で、setTextFormatしてあげたり、EventListenerしてあげたり。 何に使うん? と言われると困るねんけど、練習なんでそんなん気にしないで下さいマセ。 //
extendsProgression拡張機能コンテストのための勉強会、Progression 勉強会 in MTLに行ってきました。 内容は、対象がクラススタイルで制作経験のある方以上ということで結構上級向け?ひさびさにtakaさんのお話を聞いたメモ。 ■sec1:カスタムコマンドの作り方 ・基本のコマンドを宣言して使用する。 var com:Command = new Command(function():void { trace(“カスタムコマンド”); } ); ・execute()は、 (1)Commandクラスのサブクラス (2)第一引数に、実行関数 (3)第二引数に、中断関数 (4)clone()、パラメータのセットも忘れずに。 ・コマンドは、executeComplete()を実行しないとコマンド完了扱いにならない。また、処理後時間差で完了させたい場合は、timerを使う。 ・コマンドのエラー発生には、中断処理(interrupt())が必要。interruptComplete()で中断処理を完了。 ・DoTweenerの場合、中断処理されるとそのトゥイーン中に中断されるので、アニメーションの途中で止まることになる。 ■sec2:カスタムシーンの作り方 ・通常に使ってシーンを作成するのもカスタムシーン。ここでは、拡張機能としてのカスタムシーンの作り方。 ・PRML形式のXMLファイルを用いてローダー例。 ・ムラケンさんの作成したカスタムシーンのサンプル例。 ■sec3:カスタムコンポーネントの作り方 ・そもそもコンポーネントを作るのは難しい ・ライブラリから、コンポーネント定義でクラスを設定し、コンポーネント定義のパラメータも。 ・カスタムコンポーネントを作る人は、coreコンポーネントクラスを用いたほうが良い。 ・コンポーネントをswc書き出しするだけでは使えない。 →書き出したswcは直接FLASHでは読み取れない。 →C:\ユーザー\AppData\Local\Adobe\Flash CS4\ja\Configuration\Componentsに入れなきゃダメ。(vistaの場合) ・コンポーネント本体の中には、表示領域として透明なboxなどが必要。サンプル参照。 ・コンポーネントインスタンスは親のexecute()に追加される。 ■sec4:質疑応答 Q1.シーンをまたいだときの深度管理は? A1.AddChildAt()コマンドは、深度を設定出来る。いきなり1000とかでもok。 Q2.他のシーンのオブジェクト制御は? A2.getSceneBySceneId()で他シーンへのアクセス可能。 Q3.子swfへのディープリンク設定は可能? A3.現時点では不可。次回のメジャーアップグレードでは対応するかも。 子のxmlを親へ渡し、それを親で管理することにより出来るみたい。 Q4.コンテストについて。 A4.今回の意図としては、使いやすいや、面白いなどと可能性を重視している。 んー、メモの走り書きを見ているだけでは全然わからん、あってるかどうかも(笑) サンプルも再度アップされたみたいやし、ちょっとづつ見ていくしかないやね。 takaさんありがとうございました!