2012-02-01 3 views
1

필자는 페이스 북 API를 기반으로 한 꽤 복잡한 플래시 사이트를 개발해야하며 항상 업로드해야하는 것보다 현지에서 개발할 수있는 방법이 있다면 영원히 감사 할 것입니다. Flash AS3 - Facebook API를 로컬로 개발하고 있습니까?

나는 localhost로 뭔가를 설정 언급 게시물을 보았다 그러나 그들은 결코 정확하게 ( is it possible to use facebook API locally?)

이 많은 감사 무엇을 지정하지 않습니다.

답변

1

캡슐화는이 경우 귀하의 친구입니다. 외부/제 3 자 API를 사용할 때 데이터 용으로 자체 래퍼 클래스를 만드는 것을 좋아합니다. 'fbID'와 'userName'에만 관심이 있다고 가정 해 봅시다. 일단 검색되면이 데이터를 보유하는 클래스를 만드십시오 (getters가있는 개인 vars 및 1 개 이상의 setter). 일부 골격 코드는 : 당신이 원하는 경우

class MyUserClass{ 
    //declare vars here (_fbID, _userName) 
    public function setData(userID:String, userName:String):void{ 
    //set the values here. 
    } 
    //getters here (get fbID, get userName) 
} 

당신은 2 개 세터 기능을 사용할 수 있지만 요점은 당신이 원하는 데이터를 호출 할 수있을 것입니다. 전체 애플리케이션이 클래스에서이 정보를 가져오고 API가 직접 가져 오지 않으면 오프라인으로 작업 할 수 있습니다. 오프라인 모드에서는 호환되는 '가짜'데이터를 플러그인하여 제대로 작동하는지 확인할 수 있습니다.

이제는 페이 스북 (Facebook)에 전화 할 때마다 래퍼 유형을 만들어 다음 단계로 가져 가야합니다. 이것이 의미하는 바는 당신이 fb에서 무엇을 기대 하는지를 알기 때문에 실제로 그것을 얻은 척하고 그곳에서부터 진행할 수 있다는 것입니다. 친구 ID 목록 요청하기? 합리적인 가짜 목록을 만들어 응용 프로그램에서 사용하도록하십시오. 더 좋은 방법은 가짜 오프라인 사용자를 원하는만큼 생성하고 가짜 데이터를 이벤트 수신기에 반환하기 전에 서버 호출을 임의의 지연 시간을 지연 시키십시오. 이는 경쟁 조건에 대한 테스트에도 도움이됩니다.

이렇게하는 한 가지 방법은 API 호출을 실행하도록 클래스를 만들고 확장하는 것입니다. 즐겨.

import flash.events.EventDispatcher; 
import flash.events.Event; 
import flash.events.TimerEvent; 
import flash.utils.Timer; 
class MyApiCaller extends EventDispatcher{ 
    //set up vars to hold call result data 
    protected var _someData:String; 
    //make sure to declare some event types for the callbacks 
    public static const SERVERCALL1_COMPLETE:String = "servercall1_complete"; 
    function MyApiCaller(){ 
     //init things.... 
    } 
    public function doServerCall1(...args:*):void { 
     //create the ulrLoader etc... 
     //set up event listener to onServerCall1Complete 
    } 
    public function onServerCall1Complete(event:Event):void { 
     //parse results, save to vars 
     //fire event to notify the caller 
     dispatchEvent(new Event(SERVERCALL1_COMPLETE)); 
    } 
    //getter to be used when the waiting object gets the SERVERCALL1_COMPLETE event 
    public function get someData():String {return _someData;} 
} 


class MyFakeApiCaller extends MyApiCaller{ 
    //set up any additional types (random user data etc..) that would not be found in the base class 
    //no need to redeclare the event types 
    function MyFakeApiCaller(){ 
     //init things.... 
    } 
    override public function doServerCall1(...args:*):void { 
     //wait a random amount of time via Timer, set up event listener to onServerCall1Complete 
    } 
    override public function onServerCall1Complete(event:Event):void { 
     //event is a TimerEvent in this case   
     //generate data/choose random data 
     //save to vars: _someData = ... 
     //fire event to notify the caller 
     dispatchEvent(new Event(MyApiCaller.SERVERCALL1_COMPLETE)); 
    } 
    //getter from base class will be used as usual 
} 
+0

답장을 보내 주셔서 감사합니다! 어제 밤이 마지막 접근법에 대해 생각해 보았습니다. 프로젝트에서 작업 중일 수있는 다른 사람들을 위해 개발을 단순화 할 것이라고 생각합니다. 모든 Facebook 요청에서 데이터 덤프를 수행하여 JSON 파일로 저장해야합니다. 그렇게하면 작업에 고려해야 할 실제 로딩 및 실제 데이터가 있습니다. – maskedbacon

1

나는 최선의 방법이라고 생각합니다.

+0

멋지다! 나는 이것을 시도 할 것이다. – maskedbacon

관련 문제