cocos2dx3.0屏幕适配

前端之家收集整理的这篇文章主要介绍了cocos2dx3.0屏幕适配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近看了几篇关于这个文章,自己试验了一下,这里主要使用FIXED_HEIGHT这种模式,用FIXED_WIDTH也一样。

主要思想是:

ResolutionPolicy::FIXED_HEIGHT
保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
ResolutionPolicy::FIXED_WIDTH
保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。

只要在AppDelegate.cpp的AppDelegate::applicationDidFinishLaunching()方法中加几句代码即可:

  1. bool AppDelegate::applicationDidFinishLaunching() {
  2. // initialize director
  3. auto director = Director::getInstance();
  4. auto glview = director->getOpenGLView();
  5. if(!glview) {
  6. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
  7. //在Win32下面做测试,假设手机分辨率(屏幕尺寸)是800x480
  8. glview = GLViewImpl::createWithRect("My Game",Rect(0,800,480),1.0f);
  9. #endif
  10. }
  11. director->setOpenGLView(glview);
  12. // turn on display FPS
  13. director->setDisplayStats(true);
  14.  
  15. // set FPS. the default value is 1.0/60 if you don't call this
  16. director->setAnimationInterval(1.0 / 30);
  17.  
  18. auto frameSize = glview->getFrameSize();//获取屏幕尺寸,
  19.  
  20. //我们的设计分辨率是800x480
  21. auto winSize = Size(800,480);
  22. //设置设计分辨率的和适配模式,进去看setDesignResolutionSize和updateDesignResolutionSize这两个个方法的源码可以知道,
  23. //下面这句代码走完之后,设计分辨率的高度被设置成480,但是宽度并不是800,而是做了缩放
  24. director->getOpenGLView()->setDesignResolutionSize(winSize.width,winSize.height,ResolutionPolicy::FIXED_HEIGHT);
  25.  
  26. //下面这个是关键
  27. director->setContentScaleFactor(frameSize.width/director->getOpenGLView()->getDesignResolutionSize().width);
  28.  
  29. // create a scene. it's an autorelease object
  30. auto scene = LoginScene::createScene();
  31. // run
  32. director->runWithScene(scene);
  33.  
  34. return true;
  35. }

用到了下面这些接口:

复制代码
  1. Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨率大小及模式
  2. @H_403_52@ Director::getInstance()->setContentScaleFactor() //内容缩放因子 @H_403_52@ FileUtils::getInstance()->setSearchPaths() //资源搜索路径 @H_403_52@ Director::getInstance()->getOpenGLView()->getFrameSize() //屏幕分辨率 @H_403_52@ Director::getInstance()->getWinSize() //设计分辨率 @H_403_52@ Director::getInstance()->getVisibleSize() //设计分辨率可视区域大小 @H_403_52@ Director::getInstance()->getVisibleOrigin() //设计分辨率可视区域起点

猜你在找的Cocos2d-x相关文章