<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [?李華明Himi?](http://www.himigame.com/about-himi)原創,轉載務必在明顯處注明: 轉載自[【黑米GameDev街區】](http://www.himigame.com/)?原文鏈接:?[http://www.himigame.com/iphone-cocos2d/507.html](http://www.himigame.com/iphone-cocos2d/507.html "【iOS-Cocos2d游戲開發之十八】解決滾屏背景/拼接地圖有黑邊(縫隙)/動畫播放出現毛邊以及禁止游戲中自動鎖屏問題!") [](http://blog.csdn.net/xiaominghimi/article/details/6926913) 本章節主要為大家介紹在游戲開發過程中經常遇到的兩個問題; 1.解決滾屏背景或拼接地圖有黑邊! 對于游戲開發中,背景(游戲地圖)是必要的元素之一,那么對于大部分游戲的背景都是動態,或者不斷移動的;例如RPG中的背景隨著人物、主角而移動,那么一般情況下背景都是由地圖編輯器(圖塊)拼出來的,要不就是直接一整張大圖去顯示,在或者就是將一張大圖進行裁減成N張,然后再進行拼接完成等等; 那么對于背景(地圖)元素中存在的重復圖塊很少的話基本上就沒有利用地圖編輯器的必要了;在這里Himi不來介紹如何在cocos2d中使用地圖編輯器做背景地圖 ,而是介紹在cocos2d中制作滾動地圖時利用拼接地圖方式遇到的黑邊問題; 如下圖所示,背景是由3張圖片拼接而成,如下3張圖: ![](https://box.kancloud.cn/2016-03-31_56fcd0190bbf7.png) 然后Himi將此3張作為3個精靈然后順次繪制在屏幕上代碼如下:? ~~~ //將三張圖拼成一張完整背景 CGSize screenSize =[[CCDirector sharedDirector]winSize]; CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"]; bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5); CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"]; bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y); CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"]; bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y); [self addChild:bgTile1 z:0 tag:11]; [self addChild:bgTile2 z:0 tag:22]; [self addChild:bgTile3 z:0 tag:33]; ~~~ 此時運行的截圖如下: ![](https://box.kancloud.cn/2016-03-31_56fcd019252cf.png) 從上圖童鞋們就可以看到拼接有裂縫,那么接著讓3個精靈從左向右不斷的x軸+1進行移動,代碼如下: ~~~ //----init函數中 //每0.1秒刷新函數move [self schedule:@selector(move) interval:0.1]; //move函數 -(void)move{ CCSprite *tempSprite =(CCSprite*)[self getChildByTag:11]; tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0)); tempSprite =(CCSprite*)[self getChildByTag:22]; tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0)); tempSprite =(CCSprite*)[self getChildByTag:33]; tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0)); } ~~~ 運行截圖如下: ![](https://box.kancloud.cn/2016-03-31_56fcd0194a2d7.png) 這時當移動到一定距離時候會發現剛才的縫隙消失了,是消失了,通過以上兩張運行效果圖可以說明: 在cocos2d中如圖你使用拼接背景地圖的方式去做的話,每處拼接處在移動時都會時不時的出現黑邊(裂縫),至于如何解決我想童鞋們第一想法就是在裁圖的時候多切出一像素的方法,第一張比如原來是100,故意裁出101,第二張繪制的時候X軸前一個像素...以此類推,還有些童鞋認為是美工的原因,可能在裁圖的時候有透明像素的存在造成,當然美工裁圖的不仔細確實是個不可排除的原因,但是最終解決的方案應該是將精靈設置貼圖無鋸齒的屬性,這樣就可以完美解決此問題,設置精靈貼圖無鋸齒方法如下: ~~~ [CCSprite.texture setAliasTexParameters]; ~~~ 我們將這句添加上之后再次運行,代碼更改如下: ~~~ //將三張圖拼成一張完整背景 CGSize screenSize =[[CCDirector sharedDirector]winSize]; CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"]; bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5); CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"]; bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y); CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"]; bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y); //讓3個精靈都設置貼圖無鋸齒 [bgTile1.texture setAliasTexParameters]; [bgTile2.texture setAliasTexParameters]; [bgTile3.texture setAliasTexParameters]; [self addChild:bgTile1 z:0 tag:11]; [self addChild:bgTile2 z:0 tag:22]; [self addChild:bgTile3 z:0 tag:33]; ~~~ 再次運行效果圖如下: ![](https://box.kancloud.cn/2016-03-31_56fcd0197fbaa.png) OK,完美解決; 【2013年12月13日補充】: 對于裂縫、黑邊、模糊、透明等問題,這里Himi再詳細描述補充下: 1.首先如果你使用TP(Texturepacker)進行的圖片打包的話: 首先確定是否打包時,幀之間保證了>=1像素距離。 然后確定是否勾選了"premultply alhpa" 這一項(應該勾選) 最后確認你項目中是否設置了如下代碼: CCTexture2D::PVRImagesHavePremultipliedAlpha(true); 如上代碼設置的作用是 2.圖片縮放后模糊透明問題 首先cocos2d/cocos2dx引擎中,默認的貼圖設置了抗鋸齒,如下函數: setAntiAliasTexParameters()//設置抗鋸齒 (但是會模糊透明) 那么縮放后的圖片由于設置了抗鋸齒會造成圖片邊緣模糊透明,所以對此的解決方式,我們單獨處理縮放的圖進行設置非抗鋸齒,如下函數: setAliasTexParameters() //設置非抗鋸齒 (但是不抗鋸齒) 3.圖片感覺模糊不清晰 首先對于此問題的原因是:引擎默認使用的是透視投影模式,此模式的效果為近大遠小的效果,所以遠處的則模糊不清晰 所以我們如果想讓整體所有貼圖清晰,那么我們可以設置引擎為正交投影模式即可,如下代碼設置: CCDirector::sharedDirector()->setProjection(kCCDirectorProjection2D); 如果還不行,寶貝們,你們贏了!只要以上方法都嘗試過100%沒問題的!!!!!! 2.下面介紹第二個問題:如何禁止手機自動鎖屏的問題; 對于手機自動鎖屏的問題一般都是在項目尾聲的時候發現由于手機自動鎖屏所帶來的各種問題,例如,在cocos2d中我們調用暫停游戲的函數后,如果用戶無操作,手機自動鎖屏后,解鎖再次進入游戲就會發現游戲不處于暫停了,(如果你有暫停界面的話,你將看到你暫停界面存在,而后面的游戲照常運行- -) 那么這里Himi給出在應用中禁止手機自動鎖屏的代碼,如下: ~~~ [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; ~~~ OK,本章介紹的知識點雖然很少解決的方法也很簡單,但是也是游戲中最容易遇到的兩個問題; 那么這里肯定會有不少童鞋認為本身一句代碼的事情非寫這么多進行說明,嗯 ,確實寫的過于詳細,但是Himi之所以寫這么詳細主要還是想讓還沒有遇到此類問題的童鞋清晰化此類問題出現的原因,這樣能讓更多童鞋減少以后遇到此問題的疑問~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看