微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AS3:ScrollRect在没有跳帧内容的情况下不会从两点移动

如何解决AS3:ScrollRect在没有跳帧内容的情况下不会从两点移动

我在AS3项目中使用Spritesheet,并从资源消耗大的方法升级为使用scrollRect,该方法将位图切成每帧然后存储,然后使用scrollRect来显示所需的帧。节省大量资源,效果很好。

那是个问题,因为通过scrollrect显示的精灵现在像疯了似的跳来跳去。 Spritesheets已经过检查并且很好,并且在只有一排sprites的小纸上接缝还可以,所以只移动了X轴。

但是,在较大的字符上(例如主字符),如果有多于一行,则情况会更糟。.加载精灵时,会为其指定所涉及精灵的高度和宽度值,然后计算出工作表中的精灵数量(计算以后将被忽略的空白)并将其值放入点数组中。精灵的大小适中,因此每帧的宽度为480 x 631高度(我知道这不是2的平方,但我看不出有问题)。

用于创建该数组的代码非常简单,如下所示:

'var tempSprite:Point;
for (var k:int = 0; k < h; k++){
for (var j:int = 0; j < i; j++) {
   tempSprite.x = (SpriteWidth) * j;
   tempSprite.y =  (SpriteHeight * k)
   SpriteOffsets.push(tempSprite);
}
  }'

每次更改为新工作表时都会给出,并且工作正常,它还会检查以确保在不需要时不会将其更改为新工作表。 scrollRect是通过传递点数组(SpriteOffsets)的X和Y值以及给出精灵的宽度和高度来完成的,因此它知道完整大小。 然后将其设置为cacheAsBitmap(确保)并启用平滑功能

问题似乎有点不可思议..好像它试图做一个缩放并弄乱了它是一个像素,有时甚至更多。缩放播放器窗口时,它似乎也会以不同的方式影响它的输出量。它似乎只是Y轴。

当对位图数据使用透明的PNG源时,似乎还“捕捉”到了帧的顶部,然后显示包括空白行在内的所有内容

我为Scrollrect使用的代码只是:

bitmap.scrollRect = new Rectangle(SpriteOffsets[FrameOrder[Animset][AnimFrame]].x,SpriteOffsets[FrameOrder[Animset][AnimFrame]].y,RSpriteWidth,RSpriteHeight);
                    

其中Spriteoffset位从SpriteOffset数组调用,该数组存储(并且我已经检查过)帧开始时的正确X和Y位置,而RSpriteWidth和RSpriteHeight是帧的高度和宽度,它们是静态的对于所有帧。因此,按照我的理解,所有相当典型的创造之类的事情。

真的,这是我第一次尝试升级到使用scrollRect,并且有很多优点。.这个缝隙对我来说是一个巨大的问题。

我试图手动计算出精灵偏移量,并考虑到这一点,尽管有人告诉我们正确的像素数,但它一次也显示出矩形实际上太高了1个像素,所以我试图将高度降低1但无济于事。

感谢您的帮助或建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。