cocos2d-x 声音,粒子,数据本地化

本文介绍了如何在cocos2d-x游戏中使用SimpleAudioEngine进行背景音乐和音效的播放控制,以及粒子系统创建各种粒子效果。同时,详细讲解了数据本地化的方法,包括使用UserDefault进行数据存储和读取,以及XML文件存储和读取的基本操作。
摘要由CSDN通过智能技术生成




bool myAudio::init() {
Layer::init();
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("start.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect("onclick.wav");
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("start.wav");


return true;
};
Scene* myAudio::scene() {
Scene * p = Scene::create();
myAudio * q = myAudio::create();
p->addChild(q);
return p;
}
bool myAudio::onTouchBegan(Touch *touch, Event *unused_event) {


static bool flag = true;
if (flag)
// SimpleAudioEngine::sharedEngine()->playBackgroundMusic("start.wav");
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
else //SimpleAudioEngine::sharedEngine()->stopBackgroundMusic("start.wav");
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
flag = !flag;
return true;
};

 bool myParticle::init() {
Layer::init();
// ParticleExplosion *particle = ParticleExplosion::create();
// ParticleFireworks *particle = ParticleFireworks::create();
// ParticleFire * particle = ParticleFire::create();
// ParticleSpiral * particle = ParticleSpiral::create();
// ParticleMeteor * particle = ParticleMeteor::create();
// ParticleSnow *particle = ParticleSnow::create();
//ParticleSmoke * particle = ParticleSmoke::create();
//ParticleSun *particle = ParticleSun::create();
//ParticleRain *particle = ParticleRain::create();
ParticleSystemQuad * particle = ParticleSystemQuad::create("ring.plist");   //这个是自定义的粒子效果
particle->setPosition(Vec2(240, 160));
addChild(particle);
return true;
 };


数据本地化:


STL里面的string    a; a.str_C(); 可以转换为char*;

cocos2d里面的是 String gettostring

Layer::init();
UserDefault::sharedUserDefault()->setIntegerForKey("nihao", 100);
UserDefault::sharedUserDefault()->flush();
int  getNum = UserDefault::sharedUserDefault()->getIntegerForKey("nihao",120);
String a = "1314520";
int m = a.intValue();
log("%d", m);

bool datatransform::init() {
Layer::init();
UserDefault::sharedUserDefault()->setIntegerForKey("nihao", 100);   //前面是KEY,后面是VALUE
UserDefault::sharedUserDefault()->flush();
int  getNum = UserDefault::sharedUserDefault()->getIntegerForKey("nihao",120);
String a = "1314520";
int m = a.intValue();
log("%d", m);
//log("%s", FileUtils::getInstance()->getWritablePath().c_str());
std::string str = UserDefault::sharedUserDefault()->getXMLFilePath();
log("%s", str.c_str());

String mystring = UserDefault::sharedUserDefault()->getStringForKey("heiniao");
log("%s", mystring.getCString());
return true;
};

remove是吧一个数组中某一个数删除了,把这个数后面的所有数字都向前移一位。

fastremove就是吧最后 一个复制一份填补到前面删除的那一个位置

// XML文件

<?xml version="1.0" encoding="UTF-8"?>
<userDefaultRoot>
    <nihao>100</nihao>
<heiniao>myheiniao</heiniao>
</userDefaultRoot>


当申请一个array的时候,如果需要你先  retian一下,在程序退出的时候在release, 

可以在头文件中写入 void OnExit(){

array->release();

}


//字典是后面是KEY,前面是VALUE










Dictionary *mydic = Dictionary::create();
mydic->retain();


mydic->retain();


String *value = String::create("102332320");
String *value1 = String::create("200");




mydic->setObject(value, 23);
mydic->setObject(value1,24);




String * getinfo =(String *) mydic->objectForKey(23);

log("%s",  getinfo->getCString());



<plist>
<dict>
<key>people</key>
<string>出品人</string>
<key>people</key>
<string>我的出品人</string>
<key>people</key>
<string>我爱的出品人</string>
</dict>
</plist>



Dictionary *mydic = Dictionary::createWithContentsOfFile("mydic.xml");
String * mystring =(String *)mydic->objectForKey("people");
log("%s",mystring->getCString());

如果在XML里面有 相同的key,那么久会显示出最后一个如上,  我爱的出品人


Dictionary *mydic = Dictionary::create();
mydic->retain();


String *value = String::create("102332320");
String *value1 = String::create("200");




mydic->setObject(value, 23);   //23,24是key为int类型的,注意同一个mydic字典中,前后的key类型要一样。 同时也可以为string
mydic->setObject(value1,24);




String * getinfo =(String *) mydic->objectForKey(23);
log("%s", getinfo->getCString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值