Archive : 2008 年 12 月

12 月 29 2008

Papervision3D 各バージョンのオンラインドキュメント

Posted by tanjo at 2:34 AM

拡張と改変が著しいPV3D。頼りのドキュメントが自分の使ってるバージョンと違ったりすると、思わぬ混乱を招いたりします(…しました)。
そんなわけで、各バージョンのオンラインドキュメントURLをまとめておきます。なお最近のリビジョンだと、ダウンロードしたライブラリの docs ディレクトリ以下にドキュメントが同梱されているようです。

12 月 26 2008

Flashのパブリッシュ先を相対パスで指定する

Posted by tanjo at 5:43 PM

OS、バージョンによっても違うかもしれませんが一応メモメモ。ちなみに私の環境は Windows Vista / Flash CS3 です。

publishconf

Flashのパブリッシュ設定でフォルダアイコンをクリックすると、書き出し先を任意のフォルダ(絶対パス)に指定できますよね。
実はその左のパス設定欄は直接入力が可能で、しかも相対パスでもOKみたいです。
書き出し先を相対パスにしてみたところ、パブリッシュもプロジェクト保存も問題なくできました。(「../」で上層フォルダにもアクセスできます。)

フォルダに階層をもたせながら、Flashの作業ファイルをやりとりするときにはちょっと便利、かも。そういう状況がよくあるかは、知らない(^^;

12 月 21 2008

PV3Dでレースゲーム制作 23 - UI作成

Posted by tanjo at 4:03 AM

レースゲームデモ画面

» ゲームをプレイする (要: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」っていうクラス名のムービークリップがあったとします。

mapmcmapmc

ドキュメントクラスでは「インスタンス化 → ゲッター」で外部からこのムービークリップを参照できるようにしておきます。

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コンパイルするだけ、とまあ、作業が別々になってわたし的には扱いやすくなってくれました、と。

(もっといい方法もあるのかなぁ。)