dp.SyntaxHighlighterはJavaScriptベースでコードを色分けしていく。
クライアントでの処理の為、色分けすべきストリングの量が多くなればなるほど、行数が多くなればなるほど表示までに時間が掛かってしまう。
ActionScript全てのグローバル関数を入れた結果、表示が劇的に遅くなってしまった。
そこで、PHPでコードを色分けしてくれるiG:Syntax Hiliterを試してみることに。 同梱のGeSHiライブラリはActionScript 2.0のみ対応だったので、ついでにActionScript 3.0にも対応してみた。
ActionScript 2.0の場合
- ActionScript
- Source
- /**
- * ActionScript2 powered by iG:Syntax Hiliter
- */
- function test():Void {
- var mc:MovieClip = new MovieClip();
- var str:String = "test";
- mc._visible = false;
- }
- function test():* {
- mc._visible = false;
- }
ActionScript 3.0の場合
- ActionScript
- Source
- /**
- * ActionScript3 powered by iG:Syntax Hiliter
- */
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- // 円を描画し、表示リストに追加する。
- var sprCircle:Sprite = new Sprite();
- sprCircle.graphics.beginFill(0x990000);
- sprCircle.graphics.drawCircle(50, 50, 50);
- sprCircle.graphics.endFill();
- addChild(sprCircle);
- function fadeCircle(event:Event):void {
- sprCircle.alpha -= .05;
- if (sprCircle.alpha <= 0) {
- sprCircle.removeEventListener(Event.ENTER_FRAME, fadeCircle);
- }
- }
- function startAnimation(event:MouseEvent):void {
- sprCircle.addEventListener(Event.ENTER_FRAME, fadeCircle);
- }
- sprCircle.addEventListener(MouseEvent.CLICK, startAnimation);
- 感想
-
- AS2とAS3で3000ワードとマッチングしてるけど表示が早い。(同じコードをdp.SyntaxHighlighterで表示したところ6秒くらいかかったのが、iG:Syntax Hiliterだと2秒くらいで表示された。)
- 吐かれるhtmlソース内にスタイル押し付けてるのが惜しい。クラスだけ押し付けて、スタイル部分はCSSに託す(dp.SyntaxHighlighter形式)ように再開発されないかな・・・
- コレ自体にスタイル反映させるのがわりと簡単。(ただしここでもやっぱり吐かれるhtmlソース自体にスタイル押し付けてる部分があるので、改変が必要。)
- 3000ワードマッチングとかするんだとiG:Syntax Hiliterがよいかと。
ActionScript 3.0に対応したactionscript.phpは整理し終わったら公開します。
追記 08/02/04 公開しました。 - iG:Syntax HiliterでActionScript 3.0をハイライト




