• <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++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

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

            DesignResolutionSize

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

            由框架層來(lái)幫開發(fā)者完成轉(zhuǎn)換,開發(fā)者需要的只是設(shè)置designResolutionSize。告訴框架你在什么樣尺寸的場(chǎng)景下

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

            480×320的屏幕為標(biāo)準(zhǔn)的,你幫我轉(zhuǎn)轉(zhuǎn)”,框架就會(huì)回答你“放心吧!” 那么框架究竟如何實(shí)現(xiàn)的呢? 跟蹤

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

            可以發(fā)現(xiàn),框架是獲取了實(shí)際分辨率和開發(fā)者designResolutionSize的比例,渲染的時(shí)候把圖片按照這個(gè)比例來(lái)縮放繪制。

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

            時(shí)就會(huì)x2來(lái)繪制,也就是實(shí)際繪制成了960×640的大小,這樣就填滿窗口了!

             

            三種適配策略:

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

             

            使用kResolutionNoBorder策略時(shí)要注意的

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

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

            使用該策略時(shí),因?yàn)闃?biāo)準(zhǔn)背景圖可能會(huì)超出屏幕,所以設(shè)置位置時(shí)需要已一個(gè)可視矩形為基準(zhǔn)。

            可以這樣理解,szVisible就是你在實(shí)際設(shè)備上能看到的有效區(qū)域的寬高,posVisible就是這個(gè)有效區(qū)域的起始坐標(biāo),和szVisible構(gòu)成一個(gè)可視矩形,一般來(lái)說(shuō)這個(gè)可視矩形是設(shè)計(jì)分辨率下可視矩形的子集。

             

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

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

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

             

            VisibleSize和VisibleOrigin

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

            getVisibleOrigin:表示可視區(qū)域的起點(diǎn)坐標(biāo),這在處理相對(duì)位置的時(shí)候非常有用,確保節(jié)點(diǎn)在不同分辨率下的位置一致。

             

            設(shè)置相對(duì)位置

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

            比如設(shè)計(jì)分辨率為480×320,設(shè)置一個(gè)sprite的位置為240,160,在480×320分辨率下會(huì)發(fā)現(xiàn)它在屏幕正中,

            模擬其他分辨率,960×640,1024×768,會(huì)發(fā)現(xiàn)它依然在屏幕中心,這就可了解240,160這個(gè)值跟實(shí)際屏幕分辨率已經(jīng)無(wú)關(guān)了,

            只和designResolutionSize有關(guān),理解這一點(diǎn)至關(guān)重要,是后續(xù)開發(fā)正確空間感的基礎(chǔ)!

             

            getWinSize()的變化

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

            posted on 2014-02-03 13:22 冬瓜 閱讀(1181) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 轉(zhuǎn)貼cocos2dx
            A狠狠久久蜜臀婷色中文网| 久久久婷婷五月亚洲97号色 | 亚洲国产成人久久综合野外| 大蕉久久伊人中文字幕| 激情久久久久久久久久| 国产精品乱码久久久久久软件| 欧美精品九九99久久在观看| 久久精品中文騷妇女内射| 久久久久久a亚洲欧洲aⅴ| 久久久久婷婷| 久久精品中文字幕无码绿巨人| 精品国产91久久久久久久a| 2020久久精品亚洲热综合一本| 99久久久精品| 无码八A片人妻少妇久久| 亚洲国产天堂久久综合网站| 精品久久久久久久久免费影院| 久久99精品综合国产首页| 久久久亚洲裙底偷窥综合| 国产精品青草久久久久福利99| 狠狠色婷婷久久一区二区| 亚洲国产二区三区久久| 中文字幕热久久久久久久| 久久精品免费大片国产大片| 国产精品99精品久久免费| 久久久国产精华液| 色婷婷狠狠久久综合五月| 青青草原综合久久大伊人精品| 麻豆AV一区二区三区久久 | 久久精品无码专区免费青青 | 国产成人久久精品区一区二区| 国产69精品久久久久9999APGF | 欧美牲交A欧牲交aⅴ久久| 国产成人精品久久一区二区三区av| 亚洲午夜久久久久久噜噜噜| 久久91精品国产91久久麻豆| 久久香蕉国产线看观看精品yw| 久久精品国产免费观看| 久久天天躁狠狠躁夜夜不卡| 日韩亚洲国产综合久久久| 久久亚洲国产成人影院|