12 月
29
2008
拡張と改変が著しいPV3D。頼りのドキュメントが自分の使ってるバージョンと違ったりすると、思わぬ混乱を招いたりします(…しました)。
そんなわけで、各バージョンのオンラインドキュメントURLをまとめておきます。なお最近のリビジョンだと、ダウンロードしたライブラリの docs ディレクトリ以下にドキュメントが同梱されているようです。
12 月
26
2008
OS、バージョンによっても違うかもしれませんが一応メモメモ。ちなみに私の環境は Windows Vista / Flash CS3 です。

Flashのパブリッシュ設定でフォルダアイコンをクリックすると、書き出し先を任意のフォルダ(絶対パス)に指定できますよね。
実はその左のパス設定欄は直接入力が可能で、しかも相対パスでもOKみたいです。
書き出し先を相対パスにしてみたところ、パブリッシュもプロジェクト保存も問題なくできました。(「../」で上層フォルダにもアクセスできます。)
フォルダに階層をもたせながら、Flashの作業ファイルをやりとりするときにはちょっと便利、かも。そういう状況がよくあるかは、知らない(^^;
技術ネタ |
flash |
12 月
21
2008
» ゲームをプレイする (要:Flash Player 9.0.124.0以降)
ナビゲーションを追加してみました。レースゲームらしくなってきたでしょうか?
Flash CS3でUIを作成
実は結構どうしようか迷ってたのがUIの作り方。
生産性を上げるために、3Dとか画像のファイルはすべて外部化、Flash CS3 は使わず FlashDevelop と Flex で開発…ってしてきたんだけど、ナビゲーション系はどう考えても Flash で作った方がやりやすい。。
調べてもどうしたらいいのかピンとこなかったので適当にやってみました。
それで結局、「UI専用のSWFをメインSWFに読み込んで、そのインスタンスからムービークリップを取り出して配置」という流れに。
外部SWFのライブラリにあるムービークリップへ、アクセス
UI用Flashファイルのドキュメントクラスで、ライブラリにあるムービークリップを一度インスタンス化して、それをゲッターで返すようにしておきます。その状態でSWFファイルにパブリッシュ!
一方メイン側では、UI用SWFを Object 型インスタンスとして読み込むと、「(インスタンス名).(ゲッター名)」でライブラリにあるムービークリップにアクセスできるわけです。分かりにくッ!
***
ええと、具体的には。
たとえばFlash CS3上にこんな感じの「map」っていうクラス名のムービークリップがあったとします。

ドキュメントクラスでは「インスタンス化 → ゲッター」で外部からこのムービークリップを参照できるようにしておきます。
package
{
import flash.display.*;
public class UI extends Sprite
{
private var _mapMC:MovieClip
public function UI()
{
_mapMC = new map();
}
public function get mapMC():MovieClip
{
return _mapMC;
}
}
}
そして今まで作ってたメインの方からは、_loader にSWFを読み込んだとして
var _ui:Object = Object(_loader.content);
var _mapMC:MovieClip = _ui.mapMC;
addChild(_mapMC);
という風にアクセスできました。
Loader.content で子SWFのルートにアクセスできるけど、ここではステージに配置せずにゲッターを使っているわけです。
さらに、先ほどのムービークリップに配置されていたマルポチが実は「myPoint」という名前のインスタンスだったとすると、
_mapMC.myPoint.x = 100;
のように階層化されたムービークリップも操作できます。
こうしておけば、UIを増やしたりデザインを修正するときはFlashのライブラリをいじってパブリッシュし直すだけ、制御系は今までどおりFlashDevelopからFlexコンパイルするだけ、とまあ、作業が別々になってわたし的には扱いやすくなってくれました、と。
(もっといい方法もあるのかなぁ。)
レースゲーム制作記 |
actionscript3, flash |