- 2010-01-06 (水) 13:14
- FlashDevelop | Progression
FlashDevelopのフォーラムに、新年早々matsumosさんとbkzenさんが素敵なマクロを作成&公開してくださってます。
どんなものかというと、Progressionのコマンド内の選択した箇所のソースを、外部クラスファイルに変換してくれるというマクロです。
マクロってどうやって実行するの? という方がいらっしゃるかもしれないので、一応エントリしておきます。
以前にbkzenさんが、『FlashDevelop Macro ExecuteScript で無限の可能性』という記事をエントリされているので、ご存じの方もいらっしゃるかも知れませんが…
ファイルを保存しておく
フォーラムのトピック内のbkzenさんの「ちょっと改造して、テンプレートが保存されていない場合、新たにテンプレートを保存するようにしました。」と書かれているところのコードをコピーして、拡張子を.csで保存しておきます。(ファイル名:CommandFromSelection.cs)
僕の場合は、『Progression4用FlashDevelopテンプレート』を使っているので、.cs内のテンプレートのパスを以下の様に変更しています。
templatePath = PathHelper.TemplateDir + "\\ProjectFiles\\AS3Project\\Progression4" + TEMP_PATH;
保存したら、任意の箇所(今回はCドライブ直下に、macrosというフォルダを作成)に置いておきます。
FlashDevelop側からマクロを実行
では、早速マクロを実行してみましょう!
Progressionのプロジェクトファイルを起動し、FlashDevelopを立ち上げておきます。
で、外部ファイル化したいコードをドラッグして選択しておいて、Mactos>Execute Scriptを選択します。
protected override function atSceneLoad():void {
addCommand(
// ここから
new Trace("新年"),
new Trace("明けまして"),
new Trace("おめでとう"),
new Trace("ございます!")
// ここまで
);
}
上記の様なコードだったら、//ここから~//ここまでの中身(new Traceの部分)をドラッグして選択しておくってことです。
そうすると、ファイルを開くダイアログボックスが現れるので、そこでC>macros>CommandFromSelection.csを選択します。
ファイル名は何にしますか? と聞かれるので、そこで任意の名前を入力します。(今回は、TraceComとしてみました)
すると先のコードが、以下のように置き換わります。
protected override function atSceneLoad():void {
addCommand(
// ここから
new TraceCom()
// ここまで
);
}
で、プロジェクト内にTraceCom.asファイルが作成されます。
そちらはこんな感じになります。
(略)
public class TraceCom extends SerialList
{
public function TraceCom( initObject:Object = null )
{
super( initObject );
addCommand(
new Trace("新年"),
new Trace("明けまして"),
new Trace("おめでとう"),
new Trace("ございます!")
);
}
(略)
う~ん、凄いっ!
と、まぁ、こんな感じなんですが、毎回実行するファイルを選択するのって、面倒ですよねぇ…
そんな時は、Edit Macrosを設定しておくと楽チンです!
Edit Macrosの設定
Macros>Edit Macrosを選択します。
デフォルトで4つリストがあるかと思います。追加したいので、Addボタンを押します。
Untitledとなっているものを選択して、Labelに任意の名前を設定します。(今回はCommandFromSelectionにしてみました)
次に、Entriesの箇所を選択すると、右側に現れる…というボタンをクリックし、文字列コレクションエディタを開いて、以下のソースを記述します。
ExecuteScript|Development;C:\macros\CommandFromSelection.cs
このように設定してから、もう一度、マクロを実行してみましょう!
外部ファイル化したいコマンドを選択してから、Macros>CommandFromSelectionを選択します。
あとは(先の場合と)一緒です。
メニューから選択するの面倒! っていう方は、ショットカットキーも設定可能です。
Macros>Edit MacrosからCommandFromSelectionを選択し、Shortcutの箇所に任意のキーを割り当てておけばOKです。
Cドライブ直下は…
マクロのファイルをCドライブ直下ではなく、FlashDevelopのフォルダ内に入れておきたいって方は、こうしておくといいかと思います。
★Windows XPの場合
- Local Settingの場合(Tools>Application Fileの方)
- ExecuteScript|Development;$(UserAppDir)\macros\CommandFromSelection.cs
FlashDevelopフォルダ以下に、macrosというフォルダ(Snippetsとかと同一階層)を作成し、そこに.csファイルを設置しておきます。
マクロの文字列コレクションエディタには、$(UserAppDir)という記述を付け加えてあげます。
$(UserAppDir)の箇所を$(BaseDir)にしても、同じように動作するみたいです。
- Program Filesの場合
- ExecuteScript|Development;$(AppDir)\macros\CommandFromSelection.cs
どうしてもProgram Filesの方がいいという方は、Program FilesのFlashDevelopフォルダ内に、macrosフォルダを作成、ファイルを配置した上で、文字列コレクションの$(UserAppDir)を$(AppDir)に変更してあげればOKです。
ついでなので、Edit Macrosのその他の設定も書いておきます。
AutoRun
デフォルトではfalseになっています。
これはFlashDevelopを起動した際に、このマクロを実行するかどうか? の設定です。
試しにこれをtrueにしてみると…
こんな感じで怒られます。
今回は、テキストをドラッグ→外部クラス化するマクロを実行したいので、ここの値はfalseにしておきましょう!
Image
これは何かというと、アイコン画像を適用させる場合に設定します。
試しに、Imageに187と設定してみます。すると…
こんな感じでアイコンが表示されます。
その数値はどっから来たの? と思われた方は、『Icon Composerって便利!』というエントリに詳しく書いてありますので、そちらをご覧ください。
数値は複数アイコンの指定も可能です。
Imageに、37|16|-1|-1と設定してみると…
こんな感じで複数のアイコンを表示させることも可能です。
ここら辺りは、FlashDevelop>Setting>MainMenu.xml内のimageに値を設定するのと、一緒ですね。
追記
マクロ機能を使って作成する外部クラスファイルですが、SerialList限定になっていますよね?
SerialかParallelを選択可能にしたら便利かな? と思ったので、ちょっと試してみました。
CommandFromSelection.csの89行目あたりの記述
public class $(FileName) extends SerialList $(CSLB){
となっているところを、以下のように変更
public class $(FileName) extends $$(ListType=SerialList,ParallelList) $(CSLB){
こうしておくと、コードを選択→マクロを実行→ファイル名を指定の後で、SerialListかParallelListどちらですか? みたいなダイアログが出るので、どちらかを選択してOKを押すと、そちらの値が適用されます。
この方法は、自作Snippetsを作る場合と一緒ですね。
注意点
※テンプレートの保存先(以下のパス)に既にファイルがある場合
templatePath = PathHelper.TemplateDir + "\\ProjectFiles\\AS3Project\\Progression4" + TEMP_PATH;
その場合は、C>macros>CommandFromSelection.csを修正しただけでは、この手法が使えません。
テンプレートの保存先にあるファイルも直接修正、もしくは、(一端)このファイルを削除してあげる必要があります。
- Newer: config.server.phpは、GETしてからPUTする
- Older: 2009年を振り返ってみる


