uniSWFに関するメモ

ムービークリップしか再生できない

 uniSWFは、ムービークリップしか再生できないが、受け取ったデータはシーンに直接書かれていることが多かったりする。その場合は、シーンの内容を某かのムービークリップにコピーしてやる必要があります。

  1. .fla ファイルを開いて、ライブラリの上で右クリックし「新規シンボル」を選択(挿入>新規シンボルでもOK)
  2. ASリンケージにプログラム側から引くための名前を書いておく(例:MainSceneなど)
  3. シーンのタイムライン上で右クリックし、「すべてのフレームを選択」し、もう一度右クリックして「フレームをコピー」する
  4. 先ほど追加したムービークリックを選び、タイムライン上で右クリック→「フレームをペースト」する

ストップコントロール

 uniSWFではActionScriptそのものは実行できませんが、uniSWF専用の関数を書いておくことで、「stop」「gotoAndStop(ラベル名)」「gotoAndPlay(ラベル名)」の3種類の制御をSWF側に埋めておくことができます。セットアップは、
http://www.uniswf.com/home/manual/sectionName/Timeline%20API::Basic%20uniSWF%20AS3%20API
 のページの通り。少し順を追って説明すると、「パブリッシュ設定」を開いて、右上の「ActionScript3.0」の右側にあるスパナのアイコンをクリックします。

 開いたダイアログの「ライブラリパス」のタブをクリックし、「+」マークのアイコンを押して行を増やしたら、増えた空行をクリックして選択したあと、「ー」マークの右隣にあるfアイコン「SWCファイルを参照」を押し、uniSWFに付随しているfluidlayout.swcを指定します。

 すると、ActionScriptで、

  • uniSWF.stop() ... そのフレームで再生を停止
  • uniSWF.gotoAndStop(ラベル名) ... 指定したラベルへジャンプして再生を停止(つまりプログラム側で再生をコールするとこのラベル位置から始まる)
  • uniSWF.gotoAndPlay(ラベル名) ... 指定したラベルへジャンプして再生を開始・続行(プログラム側から見ると連続再生が行われているように見える)

 の3つの命令を埋め込めるようになります。
 ただし、この命令は Flash や SWF のプレビューでは再現されないため、一緒に ActionScript を埋めておくことも推奨されています。

uniSWF.stop(); this.stop();

ほかのムービークリップを引っ張った場合

 総尺240フレームのムービークリップ中で、総尺300フレームのムービークリップをインクルードすると、uniSWFでは総尺240フレームと解釈され、最後まで再生されません。引用元のタイムラインで空のキーフレームを引いて尺が合うようにしてやる必要があります。
 インクルード先のムービークリップの専用アクションスクリプト埋込は確か解釈されたと思いましたが、忘れた……

よく使うAPI

 uniSWF でムービークリップを再生するゲームオブジェクトを作るには、 MovieClipBehaviour をアタッチしますが、実際に再生や停止の API を受け付けてくれるオブジェクトは movieClip メンバとしてその下にぶら下がっております。

var movieClipComp : MovieClipBehaviour;

function Foo()
{
   movieClipComp.movieClip.play(); // 再生
   movieClipComp.movieClip.stop(); // 停止
   movieClipComp.movieClip.gotoAndPlay("label1"); // 指定ラベルから再生
   movieClipComp.movieClip.gotoAndStop("label1"); // 指定ラベルに飛ばして停止

   // 再生中か調べる
   if (movieClipComp.movieClip.isPlaying) {
      // ...
   }
}