我正在做一個進度條來顯示從場景1 - >場景2轉換時的當前進度,我的進度欄值將根據當前加載的資源大小和總資源大小需要加載場景2 但我不知道如何獲得這2個值。請幫幫我。非常感謝。cocos2d在場景轉換過程中加載的大小和總大小
回答
什麼是「資源大小」給你?
如果您考慮映像文件,那麼該映像文件在磁盤上的大小可能會或可能不會被壓縮,壓縮取決於文件內容。圖像文件被加載到具有內存大小的紋理中。這也可能是壓縮(PVR)或不壓縮。最後,磁盤上的圖像大小,壓縮和內存表示(比特深度等)都會影響加載該圖像需要多長時間。
如果將其擴展到其他資源類型,如聲音文件,屬性列表和數據庫,基於某些任意難以定義的「資源大小」來控制進度條變得非常困難。
長話短說:你可以得到一個文件的大小。你可以根據你的加載欄,但它不會反映實際的加載時間。
您也可以估計或計算資源佔用的內存量,即2048x2048x32bit紋理爲16 MB - 除非它在內存中壓縮(PVR紋理)。但是這需要對每個資產的數據結構有深入的瞭解。另外,例如,如果只加載其中四個紋理,則在每個紋理之後,您的進度條會跳到25%,50%,75%和100% - 您無法知道「裝入紋理的距離」在這種情況下使進度條進展順利。
長話短說:
大多數進度條單純考慮許多資源是如何被加載。這是你從你放入場景的代碼中知道的,也就是說。您加載的圖像,音頻文件等。除非您從數據文件中加載整個場景,例如,如果您使用某種設計工具,則在加載之前,您不會知道運行時的資源數量。
另一種方法是在每個資源塊後更新進度欄,以便您可以將進度條進度分成幾個具體步驟。如果很少的資源需要大部分時間加載,這是特別有用的,它們是原子塊(即2048x2048紋理圖集),它需要幾分之一秒才能加載,而沒有任何更新進度條的機會。
最後,除非實際看到3秒以上的加載時間,否則進度條沒什麼意義。在這種情況下,您最好花時間優化加載時間。例如,通過選擇理想的紋理格式,通過使用紋理地圖集,通過避免冗餘資產負載,推遲某些資產的加載或將它們加載到單獨的線程中,可以完成很多任務。
- 1. 處理場景大小
- 2. JavaFX場景調整大小
- 3. 小學舞臺改變場景大小
- 4. QGraphics場景放大和縮小
- 5. Xcode 6中的場景大小/ SpriteKit/Swift
- 6. Cocos2D-JS場景轉換
- 7. 在javascript中轉換大寫和小寫
- 8. 如何更改場景生成器中的場景大小?
- 9. 設置場景大小以查看大小?
- 10. Javafx場景切換導致舞臺大小增加
- 11. iPhone Cocos2d加載場景
- 12. 調整SpriteKit場景的大小
- 13. cocos2d中的動畫場景轉換(python)
- 14. 最小/最大 「總和」 的
- 15. 轉換轉換爲大寫加載文件與h5py時小寫
- 16. 最大和最小總和
- 17. 如何更改場景過渡動畫中的TextView大小?
- 18. 調整場景節點大小
- 19. Spritekit iAds與場景大小混合
- 20. 在Cocos 2D-X中放大和縮小場景3.2
- 21. 的Cocos2D - 改變CCLabelBMFont大小
- 22. UINavigationController在cocos2d中的大小錯誤
- 23. 背景圖片在不同分辨率下調整大小/加載大小爲
- 24. AndEngine和背景大小
- 25. 背景大小和位置
- 26. 最大大小總和爲n
- 27. 懸停在字體大小和背景大小
- 28. 適合dataGridView大小的行和列的總大小
- 29. 模塊中的總大小
- 30. Unicode大小寫轉換
感謝您的詳細解答,我想出瞭如何從您的建議中做到這一點。 – davidcoder