2010-11-13 91 views
0

因此創建了一個Sprite,我添加了其他遊戲畫面的Sprites。每個瓷磚是60×60像素大。結果我有200個孩子(那些瓷磚)的雪碧。 當我嘗試startDrag()容器精靈時,移動它的滯後是非常明顯的。在AS3中加入精靈?

有沒有像加入瓦特精靈的方式,所以容器將只有1個孩子雪碧而不是200?因爲它滯後很多可能導致它需要移動(更改x和y)所有這些200個瓷磚。我是否正確?

在這種情況下,我不能使用cacheAsBitmap屬性,導致用戶可以放大或縮小地圖..

回答

3

甘油& Aurel確實觸及真正的解決方案的關鍵。不過,我想補充一點。

順便說一句,當你說移動容器時必須管理如此多的精靈位置。 CacheAsBitmap肯定會在很大程度上解決這個問題,但真正的解決方案是blitting。嘗試此鏈接爲:

http://www.adobe.com/devnet/flash/articles/blitting_mc.html

如果要求用戶放大或諸如此類的東西,因爲你可以隨時位圖數據之間切換不要緊&原來的矢量精靈。你的問題出現在移動,管理大量精靈,所以在做之前使用優化,然後讓他們回到自己。

+0

哇,這看起來很酷!謝謝! :) – Rihards 2010-11-16 13:13:04

+0

加上一個偉大的鏈接。這是我第一次學會訣竅的地方。 – Glycerine 2010-11-16 14:59:04

0

嗯,加入他們居然會是十分困難......你會需要得到圖形,代碼和所有,並把它放入父...

我不認爲這是問題 - 你應該做的其他事情......在這種情況下,我認爲你的意思是「瓷磚」父母是瓦片地圖,對嗎?所以,你可能有一個2維數組(陣列數組),而不是在初始化時分析該數組,而是創建大量Sprites,嘗試在每個幀中重新解析它(更快),但只添加可能看到的精靈。那就是 - 它們的X位置(在添加變焦和相機X之後)大於-sprite.width,其中高度也由縮放比例縮放,並且小於stage.width + sprite.width(同樣,變焦後的寬度)。 Y也一樣,只有高度屬性。

+0

是的,瓷磚貼圖是父項。但是當移動瓷磚貼圖精靈時,如何做到所有這些東西來顯示精靈時,他們應該是可見的?地圖,每個瓷磚,都可以有物品,基本上它很複雜。 ; D – Rihards 2010-11-13 16:39:52

+0

您必須將顯示項目存儲在一個數組中。最有可能的是一個只包含定義所需Sprite的對象的數組。然後 - 遍歷整個數組,只選擇可以看到的項目。從這些物體制作精靈並定位它們......簡單。 – 2010-11-13 17:22:08

1

我以前有過同樣的問題。從某種意義上說,是否有可能將它們「結合」在一起?

當您將200個精靈添加到屏幕上時 - 我假設您將它們全部放入另一個父精靈中。

這一點 - 您將拍攝所有精靈的快照,截圖或照片複製品(無論您想調用它)並將圖像(bitmapData)寫入父精靈。在此刻。刪除/刪除/隱藏/取消原始精靈,你將留下一個包含位圖數據的精靈。

一個大的圖像移動和縮放等是沒有麻煩。

如果您需要代碼 - 問。這是費時的代碼,所以你先告訴我,然後我會寫它:P

+0

嗯,快照的想法也不錯。無論如何,如果我創建整個地圖作爲位圖,我需要創建它3種尺寸(放大一次,放大兩倍和正常大小的一個),並保持那些原因放大正常位圖將使它放大時看起來醜陋。但我相信這不是問題.. – Rihards 2010-11-16 13:27:47

+0

naw ...縮放是好的。將最終產品緩存爲位圖,允許平滑 - 放大FP 9.5和更高版本時,它看起來很平滑。我最喜歡的技巧是使用Z相機而不是縮放。因爲它使用GPU加速。告訴你今晚我會做出一個榜樣 - 提醒我,我會做。 – Glycerine 2010-11-16 14:56:51