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 アニメーションをバッファリングして、高速で安定した処理を行う方法

この記事では、Cocos2d-xにおけるアニメーションのバッファリングについて説明します。   【前回まで】 ・第1回 : アニメーションを利用した回復エフェクトの表示方法 ・第2回 : 加 …

狼ちゃんボール

ゲーム制作 Cocos2d-x関連 第2回 「Cocos2d-xで作ろう!!~画像の表示処理」

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

SDKBoxを使ってアプリ内課金をするやり方 インストール編

この記事では、アプリ課金のためのSDKBoxインストールのやり方を説明します。   環境 XCode:7.3.1 Cocos2d-x:3.9     SDKBoxについて …

スプライトシート作成

Cocos2d-x スプライトシートを作成して画像を楽に管理したい

Cocos2d-x スプライトシートを作成して画像を楽に管理したい この記事では、スプライトシートの作成方法と、スプライトシートを利用することのメリットについて紹介します。     …

ゲーム制作 Prain プレイン Cocos2d-x

ゲーム制作 Cocos2d-x関連 第17回 「タイトル画面の作成と画面遷移」

  この回ではタイトル画面と画面遷移を実装していきます。画面遷移が実装できれば、リッチなゲームを作りやすくなると思います。       仕様の検討 追加する画面 …