2011-04-07 9 views
2

Android用Airアプリケーションに1.6 Mobile Facebook API(http://code.google.com/p/facebook-actionscript-api/downloads/detail?name=GraphAPI_Mobile_1_6.swc)を実装しようとしています。私正常にそれがstageReferenceに追加のパラメータを期待してのモバイルアプリでしかし、Webを使用してデスクトップAPIのき、以下を参照してくださいステージの参照方法は? FacebookのactionscriptモバイルAPIログインメソッドのフレックスの使用

login(callback:Function, stageRef:Stage, extendedPermissions:Array, webView:StageWebView = null) 

しかし、私はできない、のFlash CS5のFlexを使用していないよ使用してステージやこのようなものをそのまま渡してください。

Flash BuilderのFlexを使用して、私はそれにどのように渡す必要があると思いますか?モバイルアクションスクリプトAPIのサンプルを見つけることができないように見えるので、私は暗闇の中にいるのですが、誰にでもアイデアはありますか?ここで

は、モバイルAPIのドキュメントからのログイン情報です:あなたは、Flexを使用している場合

login () method 
public static function login(callback:Function, stageRef:Stage, extendedPermissions:Array, webView:StageWebView = null):void 
Opens a new login window so the current user can log in to Facebook. 

Parameters 

callback:Function — The method to call when login is successful. The handler must have the signature of callback(success:Object, fail:Object); Success will be a FacebookSession if successful, or null if not. 

stageRef:Stage — A reference to the stage 

extendedPermissions:Array — (Optional) Array of extended permissions to ask the user for once they are logged in. 

webView:StageWebView (default = null) — (Optional) The instance of StageWebView to use for the login window For the most current list of extended permissions, visit http://developers.facebook.com/docs/authentication/permissions 

答えて

2

、あなたはFlexGlobals.topLevelApplicationを持っているあなたが参照を取得することにstageを呼び出すことができますので、あなたのmx:Applications:Applicationを指しなりますそれに。

それ以外の場合は、ステージに取り付けられるかstageに接続された別のDisplayObjectに接続されているすべてのDisplayObjectは、それがstageプロパティセット(それが何にも接続されていない場合、stagenullになります)ですがあります。

これ以外にも、通常、人が行うことは、コードを介してアクセスできる静的な場所をプログラムの開始時に設定することです。たとえば、あなたの典型的なメインクラスのようなものが考えられます。その後

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

    public class Main extends Sprite 
    { 

     public static var stage:Stage = null; 

     public function Main():void 
     { 
      // if we have our stage, go directly to _init(), otherwise wait 
      if (this.stage) this._init(); 
      else this.addEventListener(Event.ADDED_TO_STAGE, this._init); 
     } 

     private function _init(e:Event = null):void 
     { 
      // remove the listener 
      this.removeEventListener(Event.ADDED_TO_STAGE, this._init); 

      // hold the stage 
      Main.stage = this.stage; 

      // do everything else 
      ... 
     } 

    } 

} 

、どこでもあなたのコードでは、あなたはstageへのアクセスを得るためにMain.stageを呼び出すことができます。

+0

私は実際にメインクラスを持っていません、私はmxmlファイルのすべてをやっています。私がFlash Proを使用したときには、ここに表示されているものと同じMainクラスがあることを思い出しました。メインクラスのファイルを作成し、そのように参照するだけですか?または、自分のコードを自分のmxmlファイルのcreationcomplete関数に入れておくだけですか?申し訳ありませんが少し不確かです – brybam

+0

メインクラスがあります。これはmxmlファイルです。メインクラスは、アプリケーションの起動時に実行されるクラスです。あなたはまだクラス内に静的を保つことができますが、Flexを使用しているときには 'FlexGlobals.topLevelApplication.stage'が機能するはずです – divillysausages

+0

FlexGlobals.topLevelApplication.stageはトリックをしたように見え、受け入れてクラッシュしません。しかし、私はちょうど白い画面(facebookの接続ダイアログを表示すると仮定してwebviewを開くように見えるように見えます)を取得してから、戻ってきます。もし私がブレークポイントを追加するだけでは、失敗の結果が得られます。正しい情報が追加されたのかどうか疑問に思う。私はduno、私はあなたがfacebook apiとfamilirだとは思わない。とにかく、あなたが言ったことは、私が思っていたことをしました。感謝の意を表します。 – brybam

関連する問題