一、WinSize、VisibleOrigin、VisibleSize、winSizePixels 与DesignResolutionSize
看以下代码:
//returns the size of the OpenGL vIEw in points.以点的形式返回OpenGL视图大小Vec2 _winSize = Director:: getInstance ()->getWinSize ();//returns visible origin of the OpenGL vIEw in points.以点的形式返回OpenGL视图的可视开始原点Vec2 visibleOriginSize = Director ::getInstance ()-> getVisibleOrigin ();//returns visible size of the OpenGL vIEw in points.以点的形式返回OpenGL视图可视大小//the value is equal to getWinSize if don't invokeVec2 visitSize = Director ::getInstance ()-> getVisibleSize ();//returns the size of the OpenGL vIEw in pixels.以像素形式返回OpenGL视图的大小Vec2 winSizePixels = Director :: getInstance()-> getWinSizeInPixels ();cclOG ("winSize wIDth:%f",_winSize. wIDth );cclOG ("winSize height:%f",_winSize. height );cclOG ("visibleOriginSize wIDth:%f",visibleOriginSize . x);cclOG ("visibleOriginSize height:%f",visibleOriginSize . y);cclOG ("visitSize wIDth:%f",visitSize . x);cclOG ("visitSize height:%f",visitSize. y);cclOG ("winSizePixels wIDth:%f",winSizePixels . x);cclOG ("winSizePixels height:%f",winSizePixels . y);//结果winSize wIDth:960.000000winSize height:640.000000visibleOriginSize wIDth:0.000000visibleOriginSize height:0.000000visitSize wIDth:960.000000visitSize height:640.000000winSizePixels wIDth:960.000000winSizePixels height:640.000000//修改DesignResolutionSize glvIEw->setFrameSize(640,640); //修改cocos2dx的模拟器大小glvIEw -> setDesignResolutionSize (854,468,ResolutionPolicy :: EXACT_FIT);//结果:模拟器变小了但是winSizePixels、winsize与visibleSize的值与DesignResolutionSize一致,所以//winSize并不是指屏幕的大小。winSize wIDth:854.000000winSize height:468.000000visibleOriginSize wIDth:0.000000visibleOriginSize height:0.000000visitSize wIDth:854.000000visitSize height:468.000000winSizePixels wIDth:854.000000winSizePixels height:468.000000
总结: 1、winSizePixels、winSize、visitSize的值与DesignResolutionSize一致。 2、visibleOriginSize 获取OpenGl视图开始点,为Vec2(0,0)。
二、contentSize 返回值为Size类型 getContentSize():获取图像的逻辑大小,并不是像素大小 setContentSize():修改图像的逻辑大小,使用setContentSize修改图像后,getContentSize获取的就是修改后的大小。
三、textureRect 获取纹理大小,返回一个Rect类型,这个Rect由Vec2和Size类型组成,其实Rect就是表示一个矩形,Vec2表示纹理开始位置,默认Vec2(0,0),Size表示边长。 getTextureRect():获取Rect对象
sprite ->getTextureRect ().getMaxX ():获取长度sprite ->getTextureRect (). getMaxY():获取宽度
四、boundingBox 官方解释:Returns an AABB (axis-aligned bounding-Box) in its parent's coordinate system. boundingBox指包围盒(AABB),返回结果类型Rect,但是它与textureRect不同,boundingBox的Vec2值是相对于父节点的。
scene1 ->getBoundingBox ().size.wIDth;scene1 ->getBoundingBox ().size.height;
五、scale 缩放 *** 作: setScale() *** 作对contentSize和textureRect的值没有影响,但是对boundingBox有影响。所以想要获取一个节点缩放后的大小,使用boundingBox。 以下代码可以通过winSize与sprite的宽高比修改sprite的大小与屏幕大小一致:
Size wins = Director :: getInstance()-> getWinSize ();Sprite * sprite = Sprite :: create( filename );float winw = wins .wIDth ; //获取宽度float winh = wins .height ; //获取高度float spx = sprite ->getTextureRect (). getMaxX();float spy = sprite ->getTextureRect (). getMaxY();sprite ->setScaleX ( winw / spx ); //设置精灵宽度缩放比例sprite ->setScaleY ( winh / spy );sprite ->setAnchorPoint ( Vec2( 0,0 ));总结
以上是内存溢出为你收集整理的[6]Cocos2d-x之关于屏幕大小与节点大小、节点缩放问题全部内容,希望文章能够帮你解决[6]Cocos2d-x之关于屏幕大小与节点大小、节点缩放问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)