先日、いつもの様にgoogleplayにapk上げて、課金アイテムを登録し、
テストしてみたら何も帰ってきませんでした。
何か設定間違ったのかとしばらくハマってました。
で、ググったらこれが見つかりました。
http://stackoverflow.com/questions/24835180/android-inapp-billing-responselist-is-empty
要は、少なくともアルファかベータ版のapkを"公開"しないとテストも出来ませんってことらしいです。
いつのまにか仕様が変わってました。
古いブログにはこのことが書いてなかったりするので注意が必要です。
2014年8月22日金曜日
2014年1月27日月曜日
【cocos2d-x 2.2】はみ出さないCCLabelBMFont
最近作ってるゲームではBitMapFontしか使ってません。
cocos2d-xなので、CCLabelBMFontを使ってるのですが、widthに合わせて文字がちっちゃくなったりしないので、
文字数オーバーすると画面からはみ出たりでめんどくさいです。
というわけで、widthを制限して超えると縮むラベルを作りました。
見づらいけど、全文記載します。
ScaleLabelBMFont.h
ScaleLabelBMFont.cpp
cocos2d-xなので、CCLabelBMFontを使ってるのですが、widthに合わせて文字がちっちゃくなったりしないので、
文字数オーバーすると画面からはみ出たりでめんどくさいです。
というわけで、widthを制限して超えると縮むラベルを作りました。
見づらいけど、全文記載します。
ScaleLabelBMFont.h
#ifndef __ScaleLabelBMFont__NODE_H__
#define __ScaleLabelBMFont__NODE_H__
#include "cocos2d.h"
USING_NS_CC;
class ScaleLabelBMFont : public CCLabelBMFont
{
public:
    static ScaleLabelBMFont* create(const char *str, const char *fntFile, float limitWidth, float currentScale);
 virtual bool init(const char *str, const char *fntFile, float limitWidth, float currentScale);
    virtual void updateLabel();
    
    CC_SYNTHESIZE(float, _limitWidth, LimitWidth);
    CC_SYNTHESIZE(float, _currentScale, CurrentScale);
};
#endif // __ScaleLabelBMFont__NODE_H__
ScaleLabelBMFont.cpp
#include "ScaleLabelBMFont.h"
ScaleLabelBMFont* ScaleLabelBMFont::create(const char *str, const char *fntFile, float limitWidth, float currentScale)
{
    ScaleLabelBMFont * pRet = new ScaleLabelBMFont();
    if (pRet && pRet->init(str, fntFile, limitWidth, currentScale)) {
        pRet->autorelease();
    } else {
        CC_SAFE_DELETE(pRet);
    }
    return pRet;
}
bool ScaleLabelBMFont::init(const char *str, const char *fntFile, float limitWidth, float currentScale)
{
 if ( !CCLabelBMFont::initWithString(str, fntFile) )
 {
  return false;
 }
    
    _limitWidth = limitWidth;
    _currentScale = currentScale;
    setScale(_currentScale);
 return true;
}
void ScaleLabelBMFont::updateLabel()
{
    CCLabelBMFont::updateLabel();
    if ((getContentSize().width * _currentScale) > _limitWidth) {
        float scaleX = _limitWidth / getContentSize().width;
        if (getScaleX() != scaleX) {
            setScaleX(scaleX);
        }
    }
}
登録:
コメント (Atom)