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関連 第3回 「画像の表示処理 解説」

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

エフェクト

Cocos2d-x エフェクトアニメーションの終了と同時にエフェクトを消す方法

この記事では、アニメーションを表示し終わった後に、アニメーション表示を消す方法を紹介します。   ゲーム中であれば、アニメーションが1ループしたら消してしまいたいことも多いと思います。 方法 …

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

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

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

ゲーム制作 Cocos2d-x関連 第16回 「パズル要素を実装する」

ちょっと待って、パズル要素はどこなの???   ・・・ですよね・・・「パズル&ストライク」ですもんね・・・   それではパズル要素の仕様を決めていきましょう。   仕様の …

Cocos2d-x モーダルレイヤーの作り方

この記事ではCocos2d-xによるモーダルレイヤー実装のやり方について説明します。     モーダルレイヤーとは モーダルとは操作が完了するまで親への操作を受け付けなくさせるとい …