2012-03-30 15 views
1

私はAIRアプリケーションと通信する必要があるWebサイトを開発しています。私はjavascriptを使って開発しており、actionscriptについて詳しくは分かりません。私はこれの初期段階にあり、Adobe Flashの試用版を使用してjavascriptと通信できるswfファイルを作成しています。アクションウィンドウのコードは次のようになっています(ほとんどの例はWebの例から抜粋しています)。このすべてがやっているAdob​​e FlashからFlashDevelopへの移動

import flash.external.ExternalInterface; 

var myText:String = "Example String"; 

ExternalInterface.addCallback("sendOutput", sendStaticTextFromAS3); 
function sendStaticTextFromAS3():void { 
    ExternalInterface.call("receiveTextFromAS3", myText); 
} 

は、JavaScriptから呼び出しを受けて、文字列を返送し、それに対処する関数を呼び出すことである(それはより複雑になります)。

私の問題は、Flashがすぐに期限切れになることです。将来はFlashDevelopに移行したいと思っています。私が必要とするすべてのオブジェクトをステージ上に必要としないので、actionscriptを編集する必要があるので、FlashDevelopだけで十分です。私はFlashDevelopの中に新しいAS3プロジェクトを作成し、私はこのコードを与えます:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 

    /** 
    * ... 
    * @author Will Thomas 
    */ 
    public class Main extends Sprite 
    { 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 
      // entry point 
     } 

    } 

} 

私は、AdobeのFlashを推測している、これは自動的に追加されますswfファイルをコンパイルするときに、私はを除いて、私のコードが行くことになっている見当がつかないをimport flash.external.ExternalInterfaceを追加します。頂点で?

ご協力いただければ幸いですが、単純なコピー&ペーストのことです。

ありがとうございます。

答えて

8

あなたが見ているのは、トップレベルのクラスドキュメントです。この場合は、Spriteを拡張するMainというクラスを記述する.asファイル(.swfsにコンパイルされるすべてのトップレベルドキュメントは、SpriteまたはMovieClipを拡張します) )。

Flash Professionalは基本的にこれを隠しています(ただし、あなたが掘り下げた場合はドキュメントクラスにアクセスできます)。しかし、Flash Professionalは実際には(描画/アニメーション用の)創造的なツールです。 ActionScriptコードを記述するためにそれを使用することは可能ですが、それは必ずしもその強みではありません。

FlashDevelopは、アドビのFlash Builderと競合する無料のIDEです(Windowsの場合は残念ですが)。これらは、アクションスクリプトソフトウェア開発に向けられています。これらのIDEは初心者にとっては非常に便利で、必要なSDKを自動的にダウンロードしてインストールし、ビルドプロセスを自動化し、プロジェクトテンプレート、コード補完、デバッグなどをIDEに提供します。

IDEを使い始めることをお勧めしたい場合は、これらのいずれかがうまくいくはずです(ただしFlash Builderは商用ツールですが、Flash Developは無料です)。

ただし、IDEが不要で完全に無料のAdobeツールを使用して.asソースコードファイルを.swfファイルにコンパイルできることに注意してください。Adobe Flex SDKを使用してください。これは、Windows、Mac、Linuxで動作するコマンドラインコンパイラです。したがって、選択したテキストエディタを使用して.asファイルを編集します。優先ワークフローの場合は、this tutorialを参照してください。

また、フラッシュゲーム開発を開始するにはthis excellent articleをお勧めします。これは素晴らしい情報とチュートリアルのリンクでいっぱいです。

あなたのコードがどこに行くのかという質問は、他のコードとの間ではimportが上になり、addCallback文は "entry point"コメントの下にあり、関数はMainクラスの関数になりますinit関数のように、クラス内ではpublic、protected、privateのようなスコープ宣言が必要です。どこMYTEXT変数は、あなたがそれを変更したいことがありますときに依存して置きますが、これは今のために行う必要があります:私はExternalInterface.addCallbackがどのように機能するかを思い出して

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.external.ExternalInterface; 

    /** 
    * ... 
    * @author Will Thomas 
    */ 
    public class Main extends Sprite 
    { 
    public function Main():void 
    { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 
     // entry point 

     ExternalInterface.addCallback("sendOutput", sendStaticTextFromAS3); 
    } 

    protected function sendStaticTextFromAS3():void { 
     var myText:String = "Example String"; 
     ExternalInterface.call("receiveTextFromAS3", myText); 
    } 

    } 

} 

が、それはこれが何をするかのように見え、 javascriptからsendOutput()を呼び出すとActionScriptのsendStaticTextFromAS3メソッドが呼び出され、 "Example String"がreceiveTextFromAS3()JavaScript関数に返されます。で

private function init(e:Event = null):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 
     // entry point 

     // Setup js-to-as listener 
     ExternalInterface.addCallback("sendTextToAS3", receiveTextFromJS); 

     // Send example text to js 
     sendTextFromAS3("Hello from ActionScript!"); 
    } 

    protected function receiveTextFromJS(text:String):void { 
     trace("Received text from js: "+text); 
     // TODO: do something with it 
    } 

    protected function sendTextFromAS3(text:String):void { 
     ExternalInterface.call("receiveTextFromAS3", text); 
    } 

あなたはまた、addCallbackを使用してセキュリティ上の制限があることに注意してください説明:あなたは別の関数は、あなたのAS3からJavaScriptへの通信を処理しながら、あなたのjavascriptツーAS3の通信を処理するための1つの機能がかもしれませんExternalInterface documentation(allowScriptAccessパラメータを設定してSWFをウェブページに埋め込む必要があります)。

これが役に立ちます。 =)

+0

本当に助けてくれてありがとう、私に足をあげてください。 – will900

+0

素敵な詳細な答え! +1 –

関連する問題