所以创建了一个Sprite,我添加了其他Sprite,它们是游戏牌。每块瓷砖大60 x 60像素。结果我的Sprite有大约200个孩子(那些瓷砖)。 当我尝试startDrag()时,容器sprite延迟移动它是非常明显的..
有没有办法加入瓷砖Sprites所以容器只有1个子Sprite而不是200个?因为它落后太多可能导致它需要移动(更改x和y)所有这200块瓷砖..我是否正确?
在这种情况下,我无法使用cacheAsBitmap属性,因为用户可以放大或缩小地图..
答案 0 :(得分:3)
甘油& Aurel确实触及了真正解决方案的关键。但是我想补充一下。
顺便说一句,当你说要移动容器时必须管理这么多的精灵位置时,你是正确的。 CacheAsBitmap肯定会在很大程度上解决这个问题,但真正的解决方案是blitting。试试这个链接:
http://www.adobe.com/devnet/flash/articles/blitting_mc.html
如果需要用户缩放或类似的东西并不重要,因为您始终可以在位图数据和放大器之间切换。原始矢量精灵。你的问题出现在move.managing lota sprite中,所以在这之前使用优化,然后让它们回到自己。
答案 1 :(得分:1)
之前我遇到过同样的问题。在某种意义上,是否有可能将它们“加入”在一起。
当您将200个精灵添加到屏幕上时 - 我假设您将它们全部放入另一个父精灵中。
这一点 - 您将拍摄所有精灵的快照,屏幕截图或照片副本(无论您想要调用它),并将图像(bitmapData)写入父精灵。在此刻。删除/删除/隐藏/取消原始精灵,你将留下一个包含位图数据的精灵。
移动和缩放等一个大图像没什么麻烦。
如果您需要代码 - 请询问。这是耗时的代码所以你先告诉我然后我会写它:P
答案 2 :(得分:0)
嗯,加入他们实际上会非常困难......你需要获取图形,代码和所有内容并将其放入父级......
我不认为这是问题 - 你应该做别的事情......在这种情况下,我认为通过“瓷砖”你的意思是父母将是瓷砖地图,对吗?所以,你可能有一个带有tile类型的二维数组(数组数组) - 而不是在初始化时解析那个数组,创建了很多Sprite,尝试在每个帧中重新解析它(它更快),但只添加可以看到的精灵。也就是说 - 它们的X位置(在添加缩放和相机X之后)大于 -sprite.width ,其中高度也由缩放缩放,小于 stage.width + sprite.width (再次,缩放后的宽度)。 Y也是如此,只有高度属性。