無限滾屏效果,高階視差滾屏

2021-09-01 13:12:18 字數 1480 閱讀 6746

ccparallaxnode不適用於生成無限滾屏效果。

使用ccspritebatchnode來提高背景的渲染速度。

單獨的層檔案:

滾屏效果中的所有單獨的條紋檔案都是480x320畫素的,乍看起來很浪費,但是並不是要把這些單獨的檔案載入到遊戲中去,而是要把它們放到紋理貼圖集中去。zwoptex可以移除每個的透明部分,但zwoptex不能清除一張上影象之間存在的大塊空間,所以

對於上述型別的最好分成單獨的檔案,以後透明部分暴露出來給zwoptex。避免了「全景渲染造成的浪費」(overdraw),之間很少重疊,有效降低重複繪製的畫素,提高幀率。

這些都是以480x320尺寸儲存的,zwoptext知道它們之間的間距。我們要做的就是把所有的放在zwoptex畫布**,軟體會把放到正確的位置上。

呼叫乙個儲存在成員變數裡的節點比通過getnodebytag方法來呼叫要來的快。如果在每一幀中都這樣做的話,就可以省下幾個cpu處理週期。但是,如果要儲存幾十甚至上百個這樣的成員變數的話,那就不值得這樣做了。

cctexture2d* gamearttexture = [[cctexturecache sharedtexturecache] addimage:@"game-art.png"];

把相同一張貼圖 再次新增到cctexturecache中是唯一乙個獲取已被快取的貼圖的方法。第二次呼叫這個操作不會將貼圖再次載入;cctexturecache這個單例知道這個貼圖已被載入過, 會直接呼叫已被快取的版本,這個操作速度很快。為什麼沒有乙個像gettexturebyname這樣的方法來呼叫已經被快取的貼圖,不過現在確實是沒有這樣的方法可用。

用乙個相同數量大小的陣列來儲存對應每一層的移動速度因子,相似層的速度應該相同。

續屏:方法是把每一種背景條紋再加乙個到原先的右邊,與原先的尾部相接。這就讓原先的背景條紋的長度增加了一倍,滿足了無限滾屏的要求。根據不同的背景,可以選擇對平鋪還是翻轉。

前面一組的完全超出螢幕後,把它們定位到後面,來實現無限滾動效果。

重複貼圖

可以在一塊指定大小的正方形區域裡讓貼圖重複出現。如果你把這塊指定的正方形區域設定的夠大,你可以達到讓背景無限滾屏的效果。至少可以用重複的貼圖覆蓋幾千個畫素或者幾十個螢幕大小的區域,而不至於影響遊戲的執行效率和記憶體佔用率。

要用到的是opengl支援的gl_repeat貼圖引數。不過這個方法只適用於正方形的區域,而且要滿足「2的n次方」規則,比如32x32或者128x128畫素。

例:用gl_repeat重複背景貼圖

cgrect repeatrect = cgrectmake(-5000, -5000, 5000, 5000);

ccsprite* sprite = [ccsprite sp ritewithfile:@」square.png」 rect:repeatrect];

cctexparams params =

; [sprite.texture settexparameters:¶ms];

重複貼圖可以使一片由小平鋪而成,但它不能解決無限滾屏。

高階視點 摘錄

突然發現能看的懂程式設計師雜誌了,有些文章 語言對自己似乎有所觸動和啟發,有種字字珠璣的感覺。摘錄部份文章片斷以做收藏。一 軟體不是 二 面向服務體系的理念 以上兩段摘於 soa 從應用開始 普元軟體公司創始人 董事 兼首席技術官 黃枊青 四 按照建立的價值高低及所造成的影響可分為三個層面 持續創新...

我們理解高階視覺嗎? 讀後總結

高階視覺缺乏乙個唯一的,一致性的定義。最近幾十年的工作大多數都集中在物件的識別問題上,主要是在視覺系統的乙個場景當中去識別乙個或者一群物件。重要的是在其中忽略了物件的位置 大小 光線以及它周圍所呈現的物體。當物件識別作為了高層視覺的操作框架的時候,僅僅通過視覺神經來解決問題顯然已經不足以解決問題了。...

瀑布流 無限載入效果

缺點 影響效能 主要實現步驟 1.區分第一行和後面的行 2.第一行浮動 3.獲取第一行所有的高度 4.找到最小高度的 5.後面進行定位 6.定位到上一行最矮的位置下 7.修改當前最小值 後面的一次加上最矮的高度 8.從步驟4開始迴圈 css cont 這裡不用margin是因為offset識別不了m...