首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Cocos2d-x 多解析度適配:使用可見區域座標與錨點

     編輯:程式設計綜合問答

核心 API

auto visibleSize = Director::getInstance()->getVisibleSize();
auto origin = Director::getInstance()->getVisibleOrigin();
  • visibleSize:OpenGL 視圖實際像素寬高 (扣除狀態欄/導航欄)。
  • origin:視圖左下角在設計分辨率座標系中的偏移量。

座標計算最佳實踐

1. 相對定位 (推薦)

// 螢幕置中
sprite->setPosition(Vec2(origin.x + visibleSize.width/2,
                         origin.y + visibleSize.height/2));

// 右上角對齊
label->setPosition(Vec2(origin.x + visibleSize.width - label->getContentSize().width/2,
                        origin.y + visibleSize.height - label->getContentSize().height/2));

2. 錨點配合

// 左下角錨點 (0,0) → setPosition 即為左下角座標
node->setAnchorPoint(Vec2(0, 0));
node->setPosition(origin); // 貼齊左下角

// 中心錨點 (0.5,0.5) → 預設,setPosition 為中心點

3. 設計分辨率政策

// AppDelegate.cpp
glview->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);
// SHOW_ALL:保持比例縮放,可能出現黑邊
// NO_BORDER:填滿螢幕,可能裁切
// EXACT_FIT:拉伸填滿,變形

跨平台注意事項

UI 適配建議

  • 使用 ui::Widget 百分比佈局 (setPositionPercent)。
  • 圖集資源提供 1x/2x/3x (或 sd/hd/uhd) 多套,SpriteFrameCache 自動選擇。
  • 文字用 Label TTF/BMFont,避免位圖字體縮放模糊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
平台注意點
iOS刘海屏/安全區需用 getSafeAreaRect() (v3.17+)
Android沉浸模式下 origin.y 可能非 0,導航欄隱藏會改變 visibleSize
Windows/Mac窗口可調整大小,監聽 GLViewImpl::onWindowResized 重新佈局