C2X (3)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ 、CCArrayにint型を挿入する方法、これがcocos2d-xに見当たらないので、vectorにする

(3)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ 、CCArrayにint型を挿入する方法、これがcocos2d-xに見当たらないので、vectorにする

CCArrayにint型を挿入する方法がわかりました。
CCIntegerを使うみたいです。以下に記載しました。

(1)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ

(2)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモCCTextuer2DからCCSpriteを使う

・アンカーポイント

cocos2d for iPhone
background.anchorPoint=ccp(0,0);

ココス2d−x
background->setAnchorPoint(ccp(0,0));

・ウィンドウサイズの取得

cocos2d for iPhone
CGSize size=[[CCDirector sharedDirector]winSize];

cocos2d-x
CCSize size=CCDirector::sharedDirector()->getWinSize();

size.width
size.height

・CCLabelTTF

CCStringはNSStringの変わりのように利用できません。
char型になります。

cocos2d for iPhone

limitTime=[CCLabelTTF labelWithString:limitTimeString
fontName:@”Helvetica”
fontSize:32 ];
limitTime.position =ccp(140,300);
limitTime.color =(ccc3(200, 0, 0));
[limitTime setString:limitTimeString];
[self addChild:limitTime z:60 ];


cocos2d-x
CCStringはそのままでは使えません。char型にする必要があります。
アンドロイドへのクロスプラットフォームのことがあるので、余計な道に入らない王道で記載します。

const char* climitTimeString;//
CCLabelTTF *limiTime =CCLabelTTF::create(climitTimeString, “Helvetica”, 32);
or
limiTime=new CCLabelTTF();
limiTime->initWithString(climitTimeString, “Helvetica”, 32);
limiTime->autorelease() ;
this->addChild(limiTime,30);
limiTime->setPosition(ccp(size.width/2,size.height-30));
limiTime->setColor(ccc3(200, 0, 0));
limiTime->setString(climitTimeString);

init側ならばリリースができる。

・int から文字列変換

cocos2d for iPhone

int i;
i=10;
NSString* str;
str = [ NSString stringWithFormat : @”%02d”, i];


cocos2d-x

int i;
i=10;
const char* climitTimeString=CCString::createWithFormat(“%d”,i)->getCString();

・スプライトの幅と高さのサイズを取得

cocos2d for iPhone

CCSprite *restSprite=[CCSprite spriteWithFile:@”base.png”];
restSprite.contentSize.height;//これを代入したりますがここでは省略してます。


cocos2d-x

CCSprite * restSprite=new CCSprite();
restSprite->initWithFile(“sample.png”);
restSPrite->autorelease;

restSprite->getContentSize().height;//これを代入したりますがここでは省略してます。

・ランダム

たぶんどっちもあり
int tmpRandom=arc4random_uniform(5);

・CCArrayにint型を挿入する方法、これがcocos2d-xに見当たらないので、vectorにする

CCArray型のarrayにintを追加します。
NSNumberオブジェクト使ってINTを配列に入れます。

[array addObject:[NSNumber numberWithInt:(30)]];


cocos2d-x
オブジェクトであれば、CCArrayに追加、挿入できますが、int型なのでできません。
cocos2d-xに見当たらない、探すのが面倒なので、vectorにする

vector v_ar_speed;
vector::iterator begin,end;

v_ar_speed.push_back( 10 );//追加
v_ar_speed[0];//として呼び出し可能

コンテナ【vector】

その後、CCIntegerを使えば良いみたいです。
[cocos2d-x入門 クロスプラットフォームによるゲーム開発 クロスプラットフォームによるゲーム開発]に書いてありました。
それを参考にしました。

int i=10;
(CCArrayの生成は省略します。)
INT型の追加
array->addobject(CCInteger::create(i));

取り出し
int n=2;
int f=( (CCInteger*)array->objectAtInteger(n) )->getValue();

でもかなり面倒なので、INT型はC++なのでvectorベクターを使った方が簡単に扱えます。
(さらに追記)
なお、vectorは実行速度がlistよりも遅いという記事を読みましたので、今後はlistを使った方が良いかもしれません。
vectorを使ったのは、使った事があったからで、特別の理由はありません。

関連記事

「スポンサーリンク」


ツイートツイート
カテゴリー: Androidアンドロイド携帯アプリ, iPhoneアイフォンアプリ開発 タグ: , , , , , , パーマリンク