关于屏幕自适应问题

在弄屏幕自适应,遇到点问题,向大家求教
以320480为标准分辨率, 把sprite放在左上角边缘处
CCSprite
icon = CCSprite::spriteWithFile(“icon.png”) ;
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCSize iconSize = icon->getContentSize();
icon->setPosition(ccp(iconSize.width/2, winSize.height - iconSize.height/2)) ;
addChild(icon) ;
157
当把屏幕分辨率调成240320时,在layer的init方法里调用setScale(240.0f / 320.0f) ,运行结果158
精灵不在左上角边缘位置了。如果把屏幕分辨率调成480
800的话,按这种方法处理就看不见精灵了。
求大神指点 怎么处理屏幕自适应问题,谢了先

问题就在 icon->setPosition(ccp(iconSize.width/2, winSize.height - iconSize.height/2)) ;
分辨率变了,你既然setScale了, 这个icon的position也应该相应的乘Scale啊

— Begin quote from ____

qilbore 发表于 2012-5-15 22:06 url

问题就在 icon->setPosition(ccp(iconSize.width/2, winSize.height - iconSize.height/2)) ;
分辨率变了, …

— End quote

那样不行的

设置scale后再设置position,position的x,y都乘以scale

— Begin quote from ____

张岛 发表于 2012-5-16 14:09 url

按我那种思路这种方法不行的,我试过position乘以scale的。整个layer被缩放了,layer的(0,0)点已经不是 …

— End quote

用了哪种方法,分享一下啊

— Begin quote from ____

ImRooty 发表于 2012-5-16 15:20 url

用了哪种方法,分享一下啊

— End quote

继承CCLayer,写一个自己的layer类,在addChild的方法里把child setScale。这样就是把layer的每个child缩放,而不是缩放整个layer

  • 本帖最后由 ImRooty 于 2012-5-16 10:40 编辑 *

别人分享的,我没有测试过。
http://cocos2d.cocoachina.com/bbs/forum.php?mod=viewthread&tid=144&extra=page%3D2
http://cocos2d.cocoachina.com/bbs/forum.php?mod=viewthread&tid=549&highlight=自适应

— Begin quote from ____

ImRooty 发表于 2012-5-16 10:33 url

别人分享的,我没有测试过。
http://cocos2d.cocoachina.com/bbs/foru … =144&extra=page%3D2
http://cn.cocos2

— End quote

按我那种思路这种方法不行的,我试过position乘以scale的。整个layer被缩放了,layer的(0,0)点已经不是屏幕的左下角了,所以这种方法不行。不过我已经用其他方法解决了,还是谢谢了 呵呵