FlashDevelop のカスタマイズ。クラス作成時の継承元(extends)指定
FlashDevelop 3.0.0 RC2を使用。
ファイル(クラス)新規作成時、次の手順で行っています。
src フォルダ右クリック → New Class
クラス名を指定。
するとこのようなファイルが吐かれます。
クラスの雛形を自動的に作ってくれるのでとても便利。
しかし、使っていくうちに不満も出てきて。例えば、Sprite クラスを継承したクラスを作成したいとしましょう。
雛形に対して、次のような作業を行わなければなりません。
1. いま、カーソルがコンストラクタ部にあるので、クラス宣言部まで移動
2. extends Sprite と入力
3. import flash.display.Sprite; も必要なのだが、これは 2を入力すると自動的に補完してくれる。
何度も同じ作業をしているとさすがに何とかならないものかと考えてしまいます。
そこで、テンプレートをカスタマイズしてみましょう。
Tools → Application Files で開かれるフォルダから Templates\ProjectFiles\AS3Project と進むと、Class.as.fdt というファイルがあります。中身は
package $(Package) $(CSLB){ /** $(CBI)* ... $(CBI)* @author $(DefaultUser) $(CBI)*/ public class $(FileName) $(CSLB){ public function $(FileName)() $(CSLB){ $(EntryPoint) } } }
これに基づいて新規クラスファイルが作られるんですね。これを書き換えていきましょう。念のためにバックアップを忘れずに。
・$(EntryPoint) がカーソルの位置を示します。これをクラス宣言部の直後に移動させる。
・クラス宣言部に、extends $$(ParentClass) という分を追加。$$(変数名) とすると、変数の内容を入力させるダイアログが立ち上がるようになります。(参考ページ:http://blog.bk-zen.com/2009/03/11/132/)
修正後はこうなります。(Class.as.fdt)
package $(Package) $(CSLB){ /** $(CBI)* ... $(CBI)* @author $(DefaultUser) $(CBI)*/ public class $(FileName) extends $$(ParentClass) $(EntryPoint) $(CSLB){ public function $(FileName)() $(CSLB){ } } }
さてどうなるのかな。再びクラス新規作成
ParentClass指定ダイアログが現れました。ここでSpriteと入力。
見事 extends Sprite が追加されました。
しかし問題は import文。import flash.display.Sprite; を手入力はメンドイ。何のためにテンプレートカスタマイズしたんだ、って話です。
でも大丈夫。Sprite のところにカーソルを持ってきて、Shift + Ctrl + 1。Contextual Generator が働いて自動的に import 文が挿入されます。素敵。
Contextual Generator はとても便利なんですが、ショートカットキーが押しづらいので、Tools → Program Settings → ASCompletion → Shortcuts のところでお好きなキーに割り当てるとよいかもしれません。
課題としては、継承したくない場合でも extends が表示されてしまうのでどうするんだろ。とかあります。引き続き調べよう。
あと、人によっては、クラス新規作成時は Ctrl + 2(File → New AS3 Document)を使っている人もいると思います。この際に適用されるテンプレートは Templates\AS3.fdt になります。こちらをカスタマイズするというのもありでしょう。