Cocos2d-x

Cocos2d-x Http通信の完了に同期して処理を実行する

投稿日:2017年3月22日 更新日:

cocos2dx

 

こんにちは、akiです。

この記事ではHttp通信処理の完了に同期して任意の処理を実行するやり方を説明します。

やり方は簡単でHttp通信のコールバックの中にカスタムイベントを発行する処理を記述するだけです。カスタムイベント発行先に任意の処理を記述してやりましょう。

 

■環境

XCode:8.2.1

Cocos2d-x:3.9

 

カスタムイベントについてはこちらの記事(内部リンク)を参照して下さい。

こんにちは、akiです。この記事ではカスタムイベントの使い方について説明します。 カスタムイベントとは、ユーザが自由に処理を記述できるイベントのことです。イベントを発行するディスパッチャと、発行されたイベントを受け取るイベントリスナーの2つから構...

 

 

ソースコード

void sendHttpRequestAndExecEvent(){
    auto r = new cocos2d::network::HttpRequest();
    r->setUrl("リクエスト送信先のURL");
    std::vector<std::string> h;
    h.push_back("Content-Type: application/json");
    r->setHeaders(h);
    r->setRequestType(HttpRequest::Type::POST);
    
    // データの設定(json形式)
    std::string userId = "userId";
    std::string password = "password";
    std::string data = "[{\"userId\":\"" + userId + "\", \"password\":\"" + password + "\"}]";
    const char* buffer = data.c_str();
    r->setRequestData(buffer, strlen(buffer));
 
    // コールバックの設定
    r->setResponseCallback([this, eventId](cocos2d::network::HttpClient* client, cocos2d::network::HttpResponse* response){
        if(response->isSucceed()){
            // カスタムイベントの発行
            auto event = EventCustom(eventId);
            Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);

            return true;
        }else{
            return false;
        }
    });
 
    // データ送信
    network::HttpClient::getInstance()->send(r);
    r->release();
}

 

 

その他ポイント

Http通信中もクライアント側のメインループは動いているので、タップイベントなどを取得することができてしまう。

・ですので、通信中に操作させたくない場合はタップイベントを停止したり、モーダルレイヤなどを現在のレイヤの上にかぶせるなどの対応が必要。

 

 

以上です。

 

PrainGoogleAdSense

PrainGoogleAdSense

-Cocos2d-x
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Cocos2d-x iOS アプリ名(アプリのアイコン名)のローカライズ方法

こんにちは。akiです。 この記事ではCocos2d-xでのアプリ名(アプリのアイコン名)のローカライズについて説明します。デバイスの環境に応じて一つのアプリのタイトル名を、日本語と英語でそれぞれ表示 …

シミュレータ

ゲーム制作 Cocos2d-x関連 第3回 「画像の表示処理 解説」

今回はCocos2d-xにおける画像表示コードの解説です。   画像表示処理の解説 前回 第2回 「Cocos2d-xで作ろう!!~画像の表示処理」 の続きです。   先ほどの画像 …

cocos2dx

Cocos2d-x クライアント側の処理とデータ送信(Httpリクエスト)

この記事は「Cocos2d-x セーブデータをサーバに送信して保存する」の続きになります。   ・第1回 : サーバにデータを保存したい理由と全体の流れ ・第2回 : クライアント側の処理と …

cocos2dx

Cocos2d-x セーブデータをサーバに送信して保存する

こんにちは、akiです。 この記事ではクライアントからサーバにセーブデータを送信して、サーバ側にデータを保存しておく方法を説明します。   ■環境 XCode:8.2.1 Cocos2d-x …

動作確認画像

Cocos2d-x アプリ起動画面(スプラッシュ画像)の変更方法について

この記事では、アプリの起動画面(スプラッシュ画像)の変更のやり方について説明します。     このスプラッシュ画像、どうやって変更するのか結構わかりづらいと思います。私もしばらくや …