cocos2dx 竖屏怎么在游戏中切换横竖屏

1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读7278人阅读
懒骨头(& QQ 青岛 )
有点困了,从桌子换到床上,刚要开敲,豆瓣电台传来的传来奇怪的歌声“马的~马的~”
看看歌词,应该是“慢慢等”,好吧,继续
首先看下vs中的文件
整个项目就这些代码,这样来看逻辑结构比较清晰。
-----------------------------------------------------------------------------------------------------------
首先看下菜单界面:
-----------------------------------------------------------------------------------------------------------
这个游戏菜单界面有很多&#20540;得学习的地方
在init初始化里,先添加背景图,setScaleX方法可以让背景图根据手机屏幕来自适应。&
winSize = CCDirector::sharedDirector()-&getWinSize();
//添加背景 0 ;1;
CCSprite* sl = CCSprite::create(s_loading);
sl-&setScaleX(winSize.width/sl-&getContentSize().width);
sl-&setScaleY(winSize.height/sl-&getContentSize().height);
sl-&setAnchorPoint(ccp(0, 0));
this-&addChild(sl,0,1);然后添加时那个菜单按钮,这里使用CCSprite来初始化的CCMenuItemSprite。
CCSprite* aboutNormal = CCSprite::create(s_menu, CCRectMake(252, 0, 126, 33));
CCSprite* aboutSelected = CCSprite::create(s_menu, CCRectMake(252, 33, 126, 33));
CCSprite* aboutDesabled = CCSprite::create(s_menu, CCRectMake(252, 33*2, 126, 33));
CCMenuItemSprite* about = CCMenuItemSprite::create(aboutNormal, aboutSelected, aboutDesabled,
this, menu_selector(StartMenu::menuCallback));//StartMenu::menuCallback
//“关于”按钮tag为21
about-&setTag(21);把item添加到menu里之后,再添加到界面上。
下面语句作用是,让menu的所有按钮竖着排列,并且设置间距为20.
menu-&alignItemsVerticallyWithPadding(20);
菜单里有个飞机一直在抢镜头,是这样实现的:
首先添加一个update函数,调用频率是0.1秒。
//添加update回调函数 &
this-&schedule(schedule_selector(StartMenu::update), 0.1);
//飞船在初始界面移动函数
void StartMenu::update(float dt)
if (m_ship-&getPosition().y & winSize.height)
CCPoint pos = ccp(CCRANDOM_0_1() * winSize.width, 10);
m_ship-&setPosition(pos);
m_ship-&runAction(CCMoveBy::create(floor(5 * CCRANDOM_0_1()), ccp(CCRANDOM_0_1() * winSize.width, pos.y + winSize.height)));
}然后在update里,根据小飞机的y坐标,来添加动画,
先把小飞机放在最底下,x坐标的位置是随机的。
然后以随机速度往上飞行。
按钮点击时还播放一个特效,而且点击开始游戏后,会有一个太阳光的特效划过屏幕,以一个demo的角度来看,这是非常炫的!
//选择按钮时的音乐
void StartMenu::onButtonEffect()
if (Config::sharedConfig()-&getAudioState()) {
SimpleAudioEngine::sharedEngine()-&playEffect(s_buttonEffect);
}//选择开始游戏之后的效果
void StartMenu::flareEffect(CCObject* pSender)
onButtonEffect();
CCLog(&begin&&&StartMenu::flareEffect&,n);
Effect* flareEffect = Effect::create();
CCCallFunc *callback =
CCCallFunc::create(this, callfunc_selector(StartMenu::newGame));
CCLog(&begin&&&StartMenu::flareEffect&&1&,n);
flareEffect-&flareEffect(this, callback);
CCLog(&begin&&&StartMenu::flareEffect&&2&,n);
}在这个例子中,按钮事件是指定同一个回调函数,然后根据tag判断点击的是哪个menuItem的。
void StartMenu::menuCallback(CCObject* pSender)
onButtonEffect();
int tag = dynamic_cast&CCNode*&(pSender)-&getTag();
if (tag == 20) {
//转到&Options&
CCScene *scene = Options::scene();
CCDirector::sharedDirector()-&replaceScene(CCTransitionFade::create(1.2, scene));
-----------------------------------------------------------------------------------------------------------
紧接着,看下Effect类里这个动画效果
-----------------------------------------------------------------------------------------------------------
就是这种太阳光效果,在点击开始游戏之后,播放这个特效,并且加入回调。
Effect* flareEffect = Effect::create();
CCCallFunc *callback =
CCCallFunc::create(this, callfunc_selector(StartMenu::newGame));
CCLog(&begin&&&StartMenu::flareEffect&&1&,n);
flareEffect-&flareEffect(this, callback);以下是 flareEffect方法:
//执行完这个函数跳到StartMenu::newGame()开始游戏
void Effect::flareEffect(CCNode *parent, CCCallFunc *callback)
CCSize winSize = CCDirector::sharedDirector()-&getWinSize();
// 特效图片
CCSprite *flare = CCSprite::create(s_flare);
// 设置混合模式
ccBlendFunc cbl = {GL_SRC_ALPHA, GL_ONE};
flare-&setBlendFunc(cbl);
// 添加到父节点
parent-&addChild(flare, 10);
// 设置初始透明度
flare-&setOpacity(0);
// 设置初始位置
flare-&setPosition(ccp(-30, winSize.height - 130));
// 设置初始角度
flare-&setRotation(-120);
// 设置初始放大系数
flare-&setScale(0.2);
// 透明度渐变
CCActionInterval *opacityAnim = CCFadeTo::create(0.5, 255);
CCActionInterval *opacDim = CCFadeTo::create(1, 0);
// 大小渐变
CCActionInterval *bigAnim = CCScaleBy::create(0.7, 1.2, 1.2);
// 渐变速度
CCEaseSineOut *biggerEase = CCEaseSineOut::create(bigAnim);
CCActionInterval *moveAnim = CCMoveBy::create(0.5, ccp(328, 0));
CCEaseSineOut *moveEase = CCEaseSineOut::create(moveAnim);
// 角度旋转
CCActionInterval *roteAnim = CCRotateBy::create(2.5, 90);
// 角度旋转速度,指数变化
CCEaseExponentialOut * rotateEase = CCEaseExponentialOut::create(roteAnim);
// 放大到原大小
CCScaleTo *bigger = CCScaleTo::create(0.5, 1);
// 动画完成后回调函数,干掉精灵
CCCallFuncN *removeFunc =
CCCallFuncN::create(flare, callfuncN_selector(Effect::killSprite));
// 执行动画和回调函数
flare-&runAction(CCSequence::create(opacityAnim, biggerEase, opacDim, removeFunc, callback,
flare-&runAction(moveEase);
flare-&runAction(rotateEase);
flare-&runAction(bigger);
CCLog(&end&&&Effect::flareEffect()&,n);
资源就这几个,其实分解起来也很简单,就是旋转、缩放、渐隐、位置等。
好了休息会,过会去爸妈家吃饭:)
------------------- 飞船起飞-------------------- & &
-------------------- 飞船降落--------------------&
最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)
//添加update回调函数 this-&schedule(schedule_selector(StartMenu::update), 0.1)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:437357次
积分:5235
积分:5235
排名:第1851名
原创:75篇
译文:26篇
评论:475条
家里到处都挂着可爱的小物件
而这所有的
都是哲哲一针一线用心做的
骨头喜欢这些手作
更喜欢热爱生活的哲哲cocos2dx基础 | 其他(游戏存档,切换高清,图片处理)
摘要: 到此,cocos2d-x的test范例介绍的差不多了,本系列的文章更新也会暂时暂停,之后会在每周新写一篇cocos2d-x的实例(个人写的一些游戏效果),敬请期待。本篇介绍剩下的一些小知识。1.游戏存档游戏存档是游戏中不可缺 ...
到此,的范例介绍的差不多了,本系列的文章更新也会暂时暂停,之后会在每周新写一篇的实例(个人写的一些游戏效果),敬请期待。本篇介绍剩下的一些小知识。1.游戏存档游戏存档是游戏中不可缺少的一部分,引擎中有一种很简单的实现存档的方法CCUserDefault存入:CCUserDefault::sharedUserDefault()-&setStringForKey("uername",&"bill_man");第一个参数为键值,第二个参数为存入的值,可以存入其他类型的值,如下图获得:ret&=&CCUserDefault::sharedUserDefault()-&getStringForKey("uername");CCLog("string&is&%s",&ret.c_str());第二行就是用打印出来信息,也有取出其他类型的值的方法,如下图:2.切换高清随着硬件技术的提高,提供了更好的画面,我们可以通过如下的方法来切换高清CCDirector::sharedDirector()-&enableRetinaDisplay(true);参数是,就是开启高清,为就是关闭高清,当然目前应该是和及以上支持这种“视网膜”显示。当你开启这个时,你的游戏图片会自动变为“原图片名(除后缀名后缀名),如果文件不存在会继续使用原图。3.图片处理(抗锯齿,)当我们缩放图的时候,我们总会遇到图片出现失真和锯齿的时候,支持一些方法可以解决这些问题(1)加入抗锯齿,解决放大时的锯齿左边抗锯齿,右边正常,效果队比,左边使用sprite-&getTexture()-&setAntiAliasTexParameters();就可以达到这个效果,右边使用的是sprite2-&getTexture()-&setAliasTexParameters();(2)&使用,缩小时效果会更好,左边使用如下的方法在定义贴图时生成即可然后用贴图去声明精灵即可
最新动态信息......
摘要: 到此,cocos2d-x的test范例介绍的差不多了,本系列的文章更新也会暂时暂停,之后会在每周新写一篇cocos2d-x的实例(个人写的一些游戏效果),敬请期待。本篇介绍剩下的一些小知识。1.游戏存档游戏存档是游戏中不可缺 ...
到此,的范例介绍的差不多了,本系列的文章更新也会暂时暂停,之后会在每周新写一篇的实例(个人写的一些游戏效果),敬请期待。本篇介绍剩下的一些小知识。1.游戏存档游戏存档是游戏中不可缺少的一部分,引擎中有一种很简单的实现存档的方法CCUserDefault存入:CCUserDefault::sharedUserDefault()-&setStringForKey("uername",&"bill_man");第一个参数为键值,第二个参数为存入的值,可以存入其他类型的值,如下图获得:ret&=&CCUserDefault::sharedUserDefault()-&getStringForKey("uername");CCLog("string&is&%s",&ret.c_str());第二行就是用打印出来信息,也有取出其他类型的值的方法,如下图:2.切换高清随着硬件技术的提高,提供了更好的画面,我们可以通过如下的方法来切换高清CCDirector::sharedDirector()-&enableRetinaDisplay(true);参数是,就是开启高清,为就是关闭高清,当然目前应该是和及以上支持这种“视网膜”显示。当你开启这个时,你的游戏图片会自动变为“原图片名(除后缀名后缀名),如果文件不存在会继续使用原图。3.图片处理(抗锯齿,)当我们缩放图的时候,我们总会遇到图片出现失真和锯齿的时候,支持一些方法可以解决这些问题(1)加入抗锯齿,解决放大时的锯齿左边抗锯齿,右边正常,效果队比,左边使用sprite-&getTexture()-&setAntiAliasTexParameters();就可以达到这个效果,右边使用的是sprite2-&getTexture()-&setAliasTexParameters();(2)&使用,缩小时效果会更好,左边使用如下的方法在定义贴图时生成即可然后用贴图去声明精灵即可
上一篇:下一篇:1313人阅读
一、横屏、竖屏设置
1、android
AndroidManifest.xml文件中,
screenOrientation=&landscape& 为横屏,
screenOrientation=&portrait&为竖屏
二、读写sd卡 AndroidManifest.xml文件中,先增加权限:
FILE *fp = fopen(&/mnt/sdcard/xxx.xxx&, &rb&#43;&);
此时就可以了,切记根目录前缀:/mnt/sdcard/ 指代sd卡的根目录
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8571次
排名:千里之外
原创:11篇
转载:10篇
(4)(2)(1)(1)(2)(3)(2)(4)(1)(1)}

我要回帖

更多关于 cocos2dx屏幕自适应 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信