(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
vector
v_ar_speed.push_back( 10 );//追加
v_ar_speed[0];//として呼び出し可能
その後、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を使ったのは、使った事があったからで、特別の理由はありません。