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関連 第2回 「Cocos2d-xで作ろう!!~画像の表示処理」

いきなり知らない単語が!Cocos2d-x?Cocos2d-xで画像を表示しよう!     Cocos2d-xって? 今回はCocos2d-xを使用してゲームを作ります。 Coco …

アプリ 購入画面

Cocos2d-x SDKBoxを使ってアプリ内課金をするやり方 プログラム実装~実機テストまでの13の手順

この記事では、Cocos2d-xのSDKBoxを利用したiOSアプリ内課金のプログラム実装から実機テストのやり方まで、一連の流れで説明します。     アプリ課金の実機テストを、実 …

cocos2dx

Cocos2d-x クライアント側のHttpレスポンス処理

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

ボールの進行方向

ゲーム制作 Cocos2d-x関連 第6回 「画面端でのボールの跳ね返り」

今回は画面端でのボールの跳ね返りを製作していきましょう。   前回ではボールを弾くと、二度と触れられないところまで去って行ってしまいましたね。それでは早速やっていきましょう。   …

アプリ名のローカライズ

Cocos2d-x アプリのアイコン名変更方法について iOS/Android

こんにちは。akiです。 この記事ではCocos2d-xにおけるアプリのアイコン名の変更方法を、iOSとAndroidでそれぞれ紹介します。それでは早速やっていきましょう。     …