Tag Archive for 'actionscript3' Page 2 of 3



08JulBlazeDS - Remotoing(Client)

BlazeDSの主要な機能の一つであるRemotingのクライアントサイドの処理について。

  1. 「ファイル > 新規 > MXML アプリケーション」をクリックして、「ファイル名」にRemoting.mxmlと入力して、「終了」。

    ss_023
    ss_024

  2. remoting.mxmlにクライアントの処理を書く。

    • ActionScript
    • remoting.mxml
    • Source
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="init()" viewSourceURL="srcview/index.html">
    3.    
    4.     <mx:Script>
    5.         <![CDATA[
    6.             import mx.rpc.remoting.RemoteObject;
    7.             import mx.rpc.events.ResultEvent;
    8.             import mx.rpc.events.FaultEvent;
    9.            
    10.             private var remoteObject:RemoteObject = new RemoteObject();
    11.            
    12.             private function init():void {
    13.                 initRemoteObject();
    14.                 initButtons();
    15.             }
    16.            
    17.             private function initRemoteObject():void {
    18.                 remoteObject.destination = "remotingTutorial";
    19.                 remoteObject.addEventListener("result", hdlROResult);
    20.                 remoteObject.addEventListener("fault", hdlROFault);
    21.             }
    22.            
    23.             private function hdlROResult(re:ResultEvent):void {
    24.                 var result:int = re.message.body.result;
    25.                 setResult(result.toString());
    26.             }
    27.            
    28.             private function hdlROFault(fe:FaultEvent):void {
    29.                 setResult("Fail to get responce.");
    30.             }
    31.            
    32.             private function setResult(str:String):void {
    33.                 tiResult.text = str;
    34.             }
    35.            
    36.             private function initButtons():void {
    37.                 btnCalc.addEventListener(MouseEvent.CLICK, hdlGetCalcClick);
    38.                 btnClear.addEventListener(MouseEvent.CLICK, hdlClearClick);
    39.                
    40.                 btnCalc.enabled = true;
    41.                 btnClear.enabled = true;
    42.             }
    43.            
    44.             private function hdlGetCalcClick(me:MouseEvent):void {
    45.                 var obj:Object = new Object();
    46.                
    47.                 obj.param0 = int(tiParam_0.text);
    48.                 obj.param1 = int(tiParam_1.text);
    49.                
    50.                 remoteObject.getCalcResult(obj);
    51.             }
    52.            
    53.             private function hdlClearClick(me:MouseEvent):void {
    54.                 setResult("");
    55.             }
    56.            
    57.         ]]>
    58.     </mx:Script>
    59.    
    60.     <mx:ApplicationControlBar>
    61.         <mx:TextInput id="tiParam_0" text="10"/>
    62.         <mx:Label text="+" textAlign="center"/>
    63.         <mx:TextInput id="tiParam_1" text="20"/>
    64.         <mx:Label text="=" textAlign="center"/>
    65.         <mx:TextInput id="tiResult"/>
    66.     </mx:ApplicationControlBar>
    67.     <mx:ApplicationControlBar>
    68.         <mx:Button label="getCalcResult" id="btnCalc" enabled="false"/>
    69.         <mx:Button label="clear" id="btnClear" enabled="false"/>
    70.     </mx:ApplicationControlBar>
    71.    
    72. </mx:Application>

    ss_025

  3. 「ファイル > エクスポート」より、「Flex Builder > リリースビルド」を選択して「次へ」。「書き出し先フォルダ」をtutorialにして、「終了」。

    ss_026
    ss_027
    ss_028

  4. これで、クライアントの開発は完了。ブラウザでhttp://localhost:8400/tutorial/remoting.htmlにアクセスして確認。

    ss_029

28MarTweenerの最新バージョン

開発中のTweenerの最新バージョンにはFilterの機能が付いているらしい。

リポジトリのURLとかFilterのレビューしてる方のURLとかをメモっとく。

04FebiG:Syntax HiliterでActionScript 3.0をハイライト

iG:Syntax Hiliter同梱のGeSHiライブラリはActionScript 2.0対応だったので、ActionScript 3.0に対応したライブラリを公開します。

表示サンプル
iG:Syntax Hiliterの特徴
  • クライアントサイドではなく、サーバーサイドでワードとのマッチングを行うため高速。
  • cssでコードハイライトを行わず、htmlにスタイルを埋め込む。
  • 大文字・小文字を別のものとしてマッチングしてくれる。('function'と'Function'など)
  • '*'をマッチングしてくれる。
公開しているファイルに関する注意点
  1. 「plugins > ig_syntax_hilite > geshi > actionscript.php」と入れ替えてお使い下さい。(バックアップをお忘れなく。)
  2. GeSHiライブラリ依存のファイルです。
  3. GeSHi本体は付属しません。
  4. ライセンスはファイル内に記述しています。(GNU GPLライセンス)
  5. 'gt','lt'はhtmlの実体参照と競合するため、意図的にコメントアウトしています。
  6. 他に上記5.の様なパターンを発見された場合お知らせ下さい。
ダウンロード

01FebiG:Syntax Hiliterを試す

dp.SyntaxHighlighterはJavaScriptベースでコードを色分けしていく。

クライアントでの処理の為、色分けすべきストリングの量が多くなればなるほど、行数が多くなればなるほど表示までに時間が掛かってしまう。
ActionScript全てのグローバル関数を入れた結果、表示が劇的に遅くなってしまった。

そこで、PHPでコードを色分けしてくれるiG:Syntax Hiliterを試してみることに。
同梱のGeSHiライブラリはActionScript 2.0のみ対応だったので、ついでにActionScript 3.0にも対応してみた。

ActionScript 2.0の場合

  1. /**
  2.  * ActionScript2 powered by iG:Syntax Hiliter
  3.  */
  4. function test():Void {
  5.     var mc:MovieClip = new MovieClip();
  6.     var str:String = "test";
  7.    
  8.     mc._visible = false;
  9. }
  10. function test():* {
  11.     mc._visible = false;
  12. }

ActionScript 3.0の場合

  1. /**
  2.  * ActionScript3 powered by iG:Syntax Hiliter
  3.  */
  4. import flash.display.Sprite;
  5. import flash.events.Event;
  6. import flash.events.MouseEvent;
  7. // 円を描画し、表示リストに追加する。
  8. var sprCircle:Sprite = new Sprite();
  9. sprCircle.graphics.beginFill(0x990000);
  10. sprCircle.graphics.drawCircle(50, 50, 50);
  11. sprCircle.graphics.endFill();
  12. addChild(sprCircle);
  13. function fadeCircle(event:Event):void {
  14.     sprCircle.alpha -= .05;
  15.    
  16.     if (sprCircle.alpha <= 0) {
  17.         sprCircle.removeEventListener(Event.ENTER_FRAME, fadeCircle);
  18.     }
  19. }
  20. function startAnimation(event:MouseEvent):void {
  21.     sprCircle.addEventListener(Event.ENTER_FRAME, fadeCircle);
  22. }
  23. 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をハイライト

22JanActionScriptのキーワード達を列挙

dp.SyntaxHighlighterでActionScriptのコードをハイライトする際に、ActionScriptのキーワード達が列挙されているソースが見つからなかったのでまとめました。

言語エレメントには、グローバル定数・演算子・ステートメント、キーワード、ディレクティブ・特殊な型の単語が格納されています。
コアクラス・グローバル関数には、コアクラスに属するメソッド・プロパティの単語が格納されています。

Flashをお持ちの方にさらに簡易な説明を付け加えておきます。
Flashで「メニュー>編集>環境設定>ActionScript>シンタックスカラー」の、「キーワード」が言語エレメントに相当し、「識別子」がコアクラス・グローバル関数に相当します。

ダウンロード
追記

08/02/04 dp.SyntaxHighlighterからiG:Syntax Hiliterへ移行のため、サポート停止。




Return to page top