Home > Archives > 2009-10

2009-10

FlashDevelopで簡単なプラグインを作ってみる


FlashDevelopのプラグインを作る際に、躓いたことなんかのメモ

プラグインを作成する際に、とても参考になる記事

C#なんて今回初めて触るって人間なんで、上記の記事をまずは熟読。

で、とりあえず、マイクロソフトからVisual C#をダウンロード、GoogleCodeからFlashDevelopのコードを落としてきて、準備を整えておきます。

最初にいろいろと…

手始めに出力パネルに、文字を表示させてみよう! ということなんですが、(上記の記事を読むと、新規ファイルから作ろうとすると)いろいろ設定が面倒みたいなので、SamplePluginを元に、作ってみることに…

落としてきたコード内の、External>Plugins>SamplePluginをフォルダ毎コピーして、CustomPluginと名前を変更。

フォルダ内のファイル名も、SamplePluginからCustomPluginに変更しておきます。

スタートアッププロジェクトを変更

リネームしたCustomPlugin.csprojを開くと、「参照コンポーネント’PluginCore’が見つかりません」と怒られるので、ソリューションエクスプローラパネル内のソリューション(CustomPlugin)を右クリック>追加>既存のプロジェクトからPluginCoreを選択します。

すると、怒られなくなります。

あと(記事にも書かれていますが)、追加>既存のプロジェクトからFlashdevelopを選択し、FlashDevelopを右クリックから、スタートアッププロジェクトに設定しておきます。

スタートアッププロジェクトに設定

すると、それまでCustomPluginが太字だったのが、FlashDevelopが太字になります。

FlashDevelopが太字になった

ファイルの中身も変更しておく

コード内もSamplePluginになっている箇所があるので、それもCustomPluginに変更しておきます。

  • AssemblyInfo.cs(CustomPlugin>Properties)
  • PluginMain.cs
  • Settings.cs
  • PluginUI.cs
  • Resourcesフォルダ内のファイル

PluginMain.csに、いろいろ処理が書かれていますが、今回は出力パネルに文字を表示させるだけなので、Initialize内に以下のコードを記述。

TraceManager.Add("Custom Pluginのテスト!");

これはFlashDevelop.JPのページに書かれていたので、そのまま使ってみました。

あと、Initialize内に書かれている関数は、(今回は)とりあえず必要ないので、コメントアウトor消去。

それに伴い、PluginMain.csに書かれているInitialize内の関数の設定とかも、コメントアウトor消去。

で、デバッグを開始してみると、無事成功! FlashDevelopが立ち上がりました。

ハマッた箇所・その1

作成したプラグインは、(デフォルトのままだと)以下の場所に作成されます。

GoogleCodeから落としてきたフォルダ\FlashDevelop\Bin\Debug\Plugins\

で、そこを見てみると、dllファイルは作成されているんだけど、ファイル名が「SamplePlugin.dll」になっている…

何で?

ファイル名&コード内は全て、リネームしたはずなのに…

あれこれやっていたら、原因判明。

ソリューションエクスプローラパネル内のCustomPluginを右クリック>プロパティ>アプリケーションを開く。

すると、アセンブリ名と既定の名前空間がどちらも「SamplePlugin」になっていました…

ここを「CustomPlugin」に変更して、もう一度デバッグしてみたら…

無事ファイル名が「CustomPlugin.dll」になってくれました!

ここで設定したものが、(dllの)ファイル名に反映させるっぽいです…

ハマッた箇所・その2

デバッグを行うと、FlashDevelopは無事立ち上がったのに、出力パネルが表示されない…

これまた、何で?

作成されたCustomPlugin.dllを、C:\Program Files\FlashDevelop\Pluginsに入れて、FlashDevelopを立ち上げると、きちんと出力パネルに文字が表示されます。

う~ん、と思っていたら…

出力パネル自体が、プラグインだったと気がつきました。(C:\Program Files\FlashDevelop\Pluginsフォルダ内に、OutputPanel.dllがあるので…)

で、こっちのフォルダ(GoogleCodeから落としてきたフォルダ\FlashDevelop\Bin\Debug\Plugins\)を見てみたら…

OutputPanel.dllが入っていない…

そりゃ、表示されないってことです!

なので、ここにOutputPanel.dllを入れてあげて、デバッグを再度行ってみたら…

アウトプットパネルに文字が表示された!

こんな感じで、簡単なプラグインが出来ました!

アンケートにご協力ください!


Spark67 Beginners』で喋る際の参考にさせて頂きたいので、Subversionに関するアンケートにご協力願えますでしょうか?

11月3日に締め切り&集計させて頂きます。

お手数ですが、宜しくお願い致します!

★追記(2009/10/29)

アンケートの締め切り日時を、11月10日から11月3日に変更しました。

★追記(2009/11/3)

アンケートを締め切らせて頂きました。ご協力ありがとうございました!

『Spark67 Beginners』で喋ることになりました!


ひょんなことから、12月4日(金)にSpark projectさんロクナナさん共催のイベント『Spark67 Beginners』でお話させて頂くことになりました。

一通のメールが…

ある日、一通の(イベントへの出演依頼の)メールが…

Spark67のイベントは、過去に二度(Part1Part2)行われているんですが、どちらも出演者が物凄いですよねぇ…

メールを読んで、真っ先に思ったのは、「何で僕なの?」ということでした。

その後、お話を伺ってみて、自分なりに(イロイロ)考えた結果、出演させて頂くことに…

Spark67 Beginners

spark67・ビギナー編

Beginners編の詳細&申し込みは、こちらからどうぞ!

セッション順はこんな感じです。

  1. yossyさん(BeInteractive!
  2. 僕(flabaka)
  3. Yasuさん(ClockMaker

何だかもの凄い人に挟まれていて、メチャクチャ肩身が狭いですが…

セッション1・ライブラリって何なの?

そもそもライブラリって何? といったところから、Spark projectにあるライブラリの使い方&使うとどのような利点があるのか? などを、yossyさんが詳しく説明してくださいます。

セッション2・ライブラリをどうやって取得するのか?

yossyさんのセッションで、ライブラリの使い方や利点を理解しました。

そこで新たな疑問が…

そのライブラリをどうやって取得すればいいのか?

僕のセッションでは、Subversionを使ってのライブラリの取得方法を詳しく説明させて頂きます。

僕も以前は、『Subversionって便利なのは知ってるけど、(結局)プログラマの人が使うもんでしょ?』とノータッチでした…

しかし、必要に迫られて使ってみると、Subversionは思っていたほど難しくなく、とっても便利なものだと気がついた次第でして…

今となっては、無くてはならないものになりつつあります!

レポジトリ、チェックアウト、エクスポート…など、(非プログラマの方にとって)普段あまり聞き慣れない言葉が出てきて、「ムズカシイ」と感じてしまっているところもあるんじゃないかと…(←僕がそうでした!)

見方をちょっと変えることで、割とすんなり受け入れることが出来るようになると思います。

『見方を変えてあげる』という箇所に重点を置いて、「Subversionってムズカシイ!」と断念してしまった方にも、分かりやすくお話させて頂くつもりです。

Subversionに加え、Spark projectやProgressionでも使われている、プロジェクト管理ツールtracの使い方についても、触れさせて頂きたいと思っています。

セッション3・ステップアップしたい!

yossyさんと僕のセッションで、ライブラリの使い方と取得方法は分かったけど、どうやって次の段階に進めばいいの? といった方達に向けてのセッションです。

Yasuさんが『Beautifl』というActionScriptのギャラリーサイトを使っての、(ActionScriptの)勉強方法を教えてくださいます。

セッション終了後には…

3つのセッション終了後には、Spark projectにあるライブラリを使うとこんなものが出来ますよ~! という、ライブコーディングなんかもやっちゃいますよ!

最後に

僕がこのようなイベントで喋ることは、最初で最後(?)かと思いますので、平日の日中という難しい時間帯ではありますが、お越し頂ければと思います。

Spark67 Deep

spark67・deep編

Deep編はSoundKitchenさんとyossyさんの強力ツートップによる、とても濃ゆ~い内容となっております。

Deep編の詳細&申し込みは、こちらからどうぞ!

こちらは夕方~夜にかけての開催となっていますので、皆さん参加しやすいかもしれません!

Deep編も是非是非!

それでは当日、会場でお会いしましょう!

『WCAN mini ActionScript Vol.13』


10月31日(土)に『WCAN mini ActionScript Vol.13』が開催されますよ~!

お題は『Progression』!

今回はちょっと参加出来そうにないので、ネタだけ提供させて頂こうかと思っています。

他の参加者の方のセッション内容をみたところ、クラスベースでやられる方が多そうなので、僕(のネタ)はコンポーネントベースにしようかと…

まだ10名くらい空きがあるみたいなので、名古屋近郊にお住まいのProgressionに興味がある方は、参加されてみては如何でしょうか?

Progression4のリストクラスあれこれ


Progression4になって、リストクラス(●●List)に新たなものが加わりましたねぇ…

おさらいも兼ねて、ちょっとまとめてみました。

SerialListクラス

Progression3からあったクラスです。

クラス名からも分かるように、登録したものは上から順番に処理されます。

var sList:SerialList = new SerialList( null,
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
);
			
sList.execute();

上記のコードを実行すると、以下の順番で実行されます。

  1. Progression4
  2. 2秒待って
  3. Beta版1.1です!

Progression4になっても、3のときのようなショートハンドが使えます。

var sList:SerialList = new SerialList( null,
	[
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
	]
);
			
sList.execute();

こうすることで、ParallelListとして処理されます。

Progression4とBeta版1.1です! が同時に出力パネルに表示されます。

ParallelListクラス

登録したものが同時に処理されます。

var pList:ParallelList = new ParallelList( null,
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
);
			
pList.execute();

上記のコードを実行すると、Progression4とBeta版1.1です! が同時に出力パネルに表示されます。

こちらもProgression4になっても、ショートハンドが使えます。

var pList:ParallelList = new ParallelList( null,
	[
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
	]
);
			
pList.execute();

こうすることで、SerialListとして処理されます。

LoopListクラス

Progression4から新たに加わったクラスです。

引数に0を指定した場合は、stopメソッドを実行するまで、処理を繰り返します。

var lpList:LoopList = new LoopList(0,null,
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
);
			
lpList.execute();

これを実行すると、以下の様になります。

  1. Progression4
  2. 2秒待って
  3. Beta版1.1です!
  4. 1に戻る

最後のリストが実行されると、リストの先頭に戻って、再び処理を続けることになります。

引数を例えば1に設定すると、上記の1~3の処理を1回だけ実行します。

ShuttleListクラス

これもProgression4から新たに加わったクラスです。

引数に0を指定した場合は、こちらもstopメソッドを実行するまで、Shuttle(往復)の処理を繰り返します。

var shtList:ShuttleList = new ShuttleList(0,null,
	function():void {
		trace( "Progression4");
	},
	new Wait(2),
	function():void {
		trace("Beta版1.1です!")
	}
);
			
shtList.execute();

これを実行すると、以下の様になります。

  1. Progression4
  2. 2秒待って
  3. Beta版1.1です!
  4. Beta版1.1です!
  5. 2秒待って
  6. Progression4

このように、行って帰ってくる(往復)処理を、stopメソッドが実行されるまで、ずっと繰り返します。

ちなみに引数を1と指定すると、行ってくる処理のみ実行されます。

  1. Progression4
  2. 2秒待って
  3. Beta版1.1です!

つまり、こういうことですね。

行って、帰ってくる処理(往復)を行いたい場合は、引数を2にしてあげる必要があります。

TweenListクラス

これもProgression4から新たに加わったクラスです。

asdocを見たら、登録したコマンドの開始のタイミングをずらして実行するとありました。

公式サイトからProgression4のBeta版をダウンロードしてきたフォルダ内に、TweenListの素敵なサンプルが入っていますよねぇ…

詳しい使い方はそちらを参考にして頂くとして、ここでは、先に出てきたコードをTweenListを使うと、どうなるのか? を試してみました。

var tList:TweenList = new TweenList(2,null,null,
	function():void {
		trace( "Progression4");
	},
	function():void {
		trace("Beta版1.1です!")
	}
);
			
tList.execute();

処理の実行遅延時間に2秒と設定することで、new Wait(2)を使わずに、SerialListを使った場合と同じことが可能になります。

注意点

注意点としては、(Progression4では)コマンドの遅延時間やエフェクトの適用時間の設定が、(Progression3までの)ミリ秒から秒に変更になったということです。

Progression3では、処理を2秒停止するという際、こんなコードを書いていたかと思います。

var sList:SerialList = new SerialList( null,
	function():void {
		trace( "Progression4");
	},
	new Wait(2000),
	function():void {
		trace("Beta版1.1です!")
	}
);
			
sList.execute();

しかし、Progression4からは、秒で指定することになります。

var sList:SerialList = new SerialList( null,
	(略)
	new Wait(2),
	(略)
);
			
sList.execute();

気をつけましょう!

Home > Archives > 2009-10

Search
Feeds
Meta

flashDevelopスポンサー

Return to page top