Как справиться с этапом? Использование flex для входа в Facebook для ActionScript для мобильного API - PullRequest
2 голосов
/ 07 апреля 2011

Я пытаюсь внедрить API 1.6 Mobile Facebook (http://code.google.com/p/facebook-actionscript-api/downloads/detail?name=GraphAPI_Mobile_1_6.swc) в приложение Air for Android. Я успешно использовал API для веб и рабочего стола, однако в мобильном приложении он ожидает дополнительный параметр для stageReference, см .:

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

Но, пользуясь Flex, а не Flash CS5, я не могу просто пропустить этот этап, этот или что-то в этом роде.

Что бы вы, ребята, подумали, что мне нужно сделать, чтобы использовать Flash Builder Flex? Кажется, я не могу найти никаких примеров для API-интерфейса мобильного действия, так что я вроде как в темноте, у кого-нибудь есть идеи?

Вот информация для входа в Документы Mobile API:

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

1 Ответ

2 голосов
/ 07 апреля 2011

Если вы используете Flex, у вас есть FlexGlobals.topLevelApplication, который будет указывать на ваш mx:Application или s:Application, поэтому вы можете позвонить stage, чтобы получить ссылку на него.

В противном случаедля любого DisplayObject, прикрепленного к сцене или присоединенного к другому DisplayObject, прикрепленному к stage, будет установлено свойство stage (если оно ни к чему не прикреплено, stage будет null).

Кроме того, обычно люди хранят статические данные, к которым они могут получить доступ через код, который устанавливается при запуске программы.Например, ваш типичный основной класс может выглядеть примерно так:

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
            ...
        }

    }

}

После этого в любом месте вашего кода вы можете позвонить Main.stage, чтобы получить доступ к stage.

.
...