• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            專職C++

            不能停止的腳步

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            原文地址:http://www.ityran.com/archives/2911

            DesignResolutionSize

            DesignResolutionSize是一個比較重要的概念,其實2.0版本的適配跟1.0版本原理差不多,都是按比例進行縮放。這個DesignResolutionSize表示設計方案,就是你的游戲完美支持的分辨率方案,一般根據圖片資源的尺寸來定,自適配時會按照這個分辨率計算出縮放因子。因此,它讓一切與坐標,尺寸相關的數據徹底擺脫了屏幕分辨率的束縛,或者說

            由框架層來幫開發者完成轉換,開發者需要的只是設置designResolutionSize。告訴框架你在什么樣尺寸的場景下

            做的資源,比如此例,背景圖原始尺寸480×320,需求是剛好填滿屏幕,那么就應該告訴框架“嗨,我設計時是以

            480×320的屏幕為標準的,你幫我轉轉”,框架就會回答你“放心吧!” 那么框架究竟如何實現的呢? 跟蹤

            pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder);

            可以發現,框架是獲取了實際分辨率和開發者designResolutionSize的比例,渲染的時候把圖片按照這個比例來縮放繪制。

            拿本例來說,屏幕960×640,designResolutionSize為480×320,縮放比例為2,那么原始大小480×320的背景圖,在繪制

            時就會x2來繪制,也就是實際繪制成了960×640的大小,這樣就填滿窗口了!

             

            三種適配策略:

            kResolutionNoBorder:超出屏幕的部分會被裁剪,兩側沒有黑邊,鋪滿屏幕,按圖片原始比例顯示,圖片不變形。實際就是寬高等比縮放,但縮放比例取寬比和高比之中大的那一個。

             

            使用kResolutionNoBorder策略時要注意的

            CCSize szVisible = CCDirector::sharedDirector()->getVisibleSize();

            CCPoint posVisible = CCDirector::sharedDirector()->getVisibleOrigin();

            使用該策略時,因為標準背景圖可能會超出屏幕,所以設置位置時需要已一個可視矩形為基準。

            可以這樣理解,szVisible就是你在實際設備上能看到的有效區域的寬高,posVisible就是這個有效區域的起始坐標,和szVisible構成一個可視矩形,一般來說這個可視矩形是設計分辨率下可視矩形的子集。

             

            kResolutionShowAll:整個游戲界面是可見的,會按原始比例進行縮放,圖片不變形,但兩側可能會留有黑邊,不鋪滿屏幕。實際也是寬高等比縮放,但縮放比例取寬比和高比之中小的那一個。

            kResolutionExactFit:整個游戲界面是可見的,圖片可能會進行拉伸或者壓縮處理,鋪滿屏幕,圖片會變形。

            可以根據自己的要求選擇。1024:768=1.3, 480:320=1.5,寬高比不同,圖片也就無法等比縮放來填滿屏幕,只能變形了。

             

            VisibleSize和VisibleOrigin

            getVisibleSize:表示獲得視口(可視區域)的大小,如果DesignResolutionSize跟屏幕尺寸一樣大,則getVisibleSize等于getWinSize。

            getVisibleOrigin:表示可視區域的起點坐標,這在處理相對位置的時候非常有用,確保節點在不同分辨率下的位置一致。

             

            設置相對位置

            在游戲中使用相對位置設置坐標的好處是顯而易見的,這樣就不需要為每個分辨率都定義一套坐標了。首先得定義一些參考點,引擎的TestCpp例子中就提供了一種方法,

            比如設計分辨率為480×320,設置一個sprite的位置為240,160,在480×320分辨率下會發現它在屏幕正中,

            模擬其他分辨率,960×640,1024×768,會發現它依然在屏幕中心,這就可了解240,160這個值跟實際屏幕分辨率已經無關了,

            只和designResolutionSize有關,理解這一點至關重要,是后續開發正確空間感的基礎!

             

            getWinSize()的變化

            CCDirector::sharedDirector()->getWinSize();

            posted on 2014-02-03 13:22 冬瓜 閱讀(1187) 評論(0)  編輯 收藏 引用 所屬分類: 轉貼cocos2dx
            囯产极品美女高潮无套久久久| 理论片午午伦夜理片久久| 伊人久久无码中文字幕| 久久亚洲美女精品国产精品| 久久99热只有频精品8| 国产亚州精品女人久久久久久 | 久久久久久夜精品精品免费啦| 成人久久精品一区二区三区| 亚洲第一永久AV网站久久精品男人的天堂AV | 婷婷综合久久中文字幕蜜桃三电影 | 99久久精品免费国产大片| 亚洲欧美一级久久精品| 色综合久久精品中文字幕首页| 久久人人爽人人人人片av| 国产精品九九久久免费视频 | 国内精品伊人久久久久网站| 午夜久久久久久禁播电影| 精品久久久久久无码国产| 久久精品一本到99热免费| 久久夜色精品国产亚洲av| 欧美久久综合性欧美| 人妻久久久一区二区三区| 久久亚洲精品无码aⅴ大香| 国产高清国内精品福利99久久| 久久久国产精品亚洲一区| 久久久久久九九99精品| 久久亚洲国产成人精品性色| 久久婷婷五月综合国产尤物app | 免费一级做a爰片久久毛片潮| 久久99国产亚洲高清观看首页| 久久婷婷国产综合精品| 免费精品久久天干天干| 久久人人爽人人人人爽AV| 久久人妻少妇嫩草AV蜜桃| 7777精品伊人久久久大香线蕉 | 亚洲AV日韩精品久久久久久| 无码人妻久久一区二区三区免费丨| 久久人人添人人爽添人人片牛牛| 区久久AAA片69亚洲| 天天躁日日躁狠狠久久| 蜜臀av性久久久久蜜臀aⅴ |