我正在繪製應用程序,現在有一個問題。 有幾千條線,必須繪製,但我也需要以某種方式逐一清除它們。或者,也許 - 清除Sprite圖形內的一個正方形區域。 現在我想想使用數組並將每行都推入新的Sprite,所以我可以將這些新的Sprite添加到父項中。但是這個解決方案看起來很糟糕,會導致爲每一行創建一個新的精靈對象。 有沒有辦法管理沒有創建精靈的行呢?我可以管理雪碧內部的單行嗎?
回答
創建一個代表每一行的數據對象。然後創建一個BitmapData對象,在其中繪製所有行(例如,可以使用fillRect()爲每一行繪製一個非常窄的矩形)。在需要更改表示之前清除矩形(使用fillRect()或floodFill()),然後繪製仍然適用的線條。
用該BitmapData創建一個位圖,並將其添加到舞臺上。
請注意,您應該能夠輕鬆地表現出幾千條性能良好的線路。如果您發現自己創建並銷燬代表每行的數據對象,請查看object pooling。
'fillRect()'只適用於正交對齊的行,對於常見的行使用'draw()'。否則,這是一個好方法。 – Vesper 2013-03-13 05:29:18
爲'graphics'對象設置'moveTo()'和'lineTo()'方法時爲什麼'fillRect()'? – Gio 2013-03-13 11:54:27
@Vesper fillRect()僅作爲示例給出。對於對角線,我會在自己的BitmapData上創建一行,並使用比draw()更快的copyPixels()。對於copyPixels()和draw(),你必須有一個源對象,但是對於fillRect(),你不需要。 – 2013-03-13 12:54:02
- 1. Three.js:可以翻轉雪碧嗎?
- 2. 我可以在Haxe NME HTML5目標中屏蔽雪碧嗎?
- 3. (Cocos2D)雪碧不是完全坐在其他雪碧的頂部?
- 4. 將雪碧到最近的雪碧
- 5. XNA雪碧的可見性
- 6. 雪碧
- 7. AS3雪碧處理器
- 8. 隨機雪碧與雪碧池
- 9. Python - 雪碧追逐另一個雪碧
- 10. 雪碧牀單VS動畫
- 11. cocos2dx當我設置setPhysicsBody雪碧,雪碧了
- 12. java - 我們可以做我們自己的內存管理嗎?
- 13. 雪碧位置
- 14. 雪碧反射?
- 15. AS3IsoLib雪碧SVG
- 16. 顯示雪碧
- 17. 雪碧優化?
- 18. 雪碧背景
- 19. AS3雪碧片
- 20. 雪碧運動
- 21. 雪碧問題
- 22. 如何渲染雪碧的一部分
- 23. 關於運動的2D雪碧物理
- 24. Swift SKSpriteNode:複雜的雪碧紋理?
- 25. 我可以返回內置管道嗎?
- 26. 雪碧碰撞,不可見的矩形
- 27. 我可以在Windows上以管理員身份運行PyCharm嗎?
- 28. 創建無限的雪碧節點雪碧套件
- 29. cocos2d:交換雪碧
- 30. CSS雪碧按鈕
我現在會警告您,很多行會大幅度地影響應用程序的性能。 – Marty 2013-03-13 01:45:02