LoginSignup
14
13

More than 5 years have passed since last update.

cocos2d-xでスクリーンショットをとってシェアする機能を実装する

Last updated at Posted at 2015-10-04

背景

シェア機能は以前から実装していたのだけれど、固定のイメージだけだった。
用意しても数個という感じだったのだけれど、やっぱりゲームのリアルな感じをシェアできた方が、よいに決まっている。
ユーザにもシェアしてるぞーという感じを体験させてあげられるので、できるようにするために調べてこの記事を書こうと思う。

ちなみに寄稿しようと思ったきっかけはこの記事なのでよければ。
【レビュ学】人気アプリ「俺の校長3D」を分析し面白さを盗む!

cocos2d-xでスクリーンショットをとる

ScreenShot.cpp
// スクリーンショットを取得し、ツイートする
void screenShot() {

    // スクリーンショットのテクスチャを取得する
    Size size = Director::getInstance()->getWinSize();
    RenderTexture* texture = RenderTexture::create((int)size.width, (int)size.height);
    texture->setPosition(Point(size.width/2, size.height/2));
    texture->begin();
    Director::getInstance()->getRunningScene()->visit();
    texture->end();

    // 取得したテクスチャを保存する
    texture->saveToFile("screenshot.png", Image::Format::PNG, true, [&](RenderTexture* rt, const std::string& path) {
        // 保存完了のコールバック処理
        // ツイートをする
        NativeCodeLauncher::postTwitter("ツイート内容", "http://blog.tadamatuapps.com/",path.c_str());
    });
}

ツイートの実装は別記事に委ねるが、これでcocos2d-xでゲーム中などのスクリーンショットをとって、ツイートができるようになった。
参考:
iOSアプリにソーシャル機能を組み込む【実践編】
LINE,Twitterに投稿する機能をつける(Android)

ちなみに、スクリーンショットのタイミングと、ツイートのタイミングをずらす場合は、次のように実装すればよい。

// 取得したテクスチャを保存する
texture->saveToFile("screenshot.png", Image::Format::PNG);

// パスを取得し、ツイートをする
std::string path = FileUtils::getInstance()->getWritablePath().append("screenshot.png");
NativeCodeLauncher::postTwitter("ツイート内容", "http://blog.tadamatuapps.com/", path.c_str());

パシャという音もあればよいかもしれませんね。

お試しあれ。

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13