绘制循环定时器(AndEngine)
我正在使用AndEngine,并且在该框架中,我想制作一个循环计时器图形。 具体来说,我想显示一个能力重用的等待期。 这个想法是随着计时器的进展动态填充弧。 像这样的东西:
java.awt.Graphics对象有一个fillArc()方法,这对我来说似乎很完美。 实际上,上面的图形是使用fillArc(50,5,100,100,75,-40)绘制的。 大! 现在是这个问题:
AndEngine不使用Graphics()对象,它使用自己的Shape实现(对于OpenGL),没有定义的“Circle”形状,更不用说带有fillArc()方法的圆形形状。
可能的解决方案及其各自的问题
四处寻找解决方案,我遇到了“使用Andengine绘制圆圈”。 这个问答对我来说没有多大用处,因为唯一的答案是“的确,你不能直接画一个圆圈”提供了两种选择:(1)“用圆形纹理渲染四边形” - 这对我不起作用,因为我需要动态修改该圆形以产生弧形填充; 和(2)“渲染一个实际上是连接三角形的圆的圆。” 也许选项二会起作用,但是没有关于如何做到这一点的指导。
我也遇到了“通过box2d在android andengine中创建圈子?”。 我怀疑有人可能会说,你可以简单地创建一个这样的圆圈:
body circleBody = PhysicsFactory.createCircleBody(pWorld,pSprite,BodyType.StaticBody,FixtureDef);
这真的没有帮助我。 我不打算创建一个圆的2D物理体。 我正在寻找一个。
最后,我发现这个讨论很有希望。 特别是有一个建议:
使用画布将[它]绘制到位图中,并将该位图作为TextureSource加载。
听起来很合理,但我还不清楚如何做到这一点。
更新:我的作弊“解决方案”
我没有深究这一点,而是决定作弊(至少现在是这样)。 我制作了一张spritesheet,如下所示:
基于将完成的比例(从0到1)四舍五入到spritesheet上的相应索引,而不是实际让计时器显示完美的fillArc(),我只需从spritesheet中提取精灵的适当索引。 喜欢这个:
public void setTimer(float amount) {
this.setCurrentTileIndex(Math.round(amount * 20));
}
出于我的目的,这实际上工作得很好 - 我使用约2秒的计时器,所以你真的没有看到缺乏细节。 但是,如果有人发布它,也许我会考虑用“适当的”解决方案替换它。 另外,也许这个spritesheet将会对做同样事情的人有用。 这里是使用透明度而不是绿色背景的版本。 (所以它是在白色背景上的stackoverflow,但它在那里):
还有第三种解决方案需要单个纹理和一个自定义对象。 所以这是你的解决方案之间的折衷,其中一个需要很多三角形,另一个需要纹理内存。
如果你问我这是最酷的解决方案,因为它可以应用于任何纹理。 =)
链接地址: http://www.djcxy.com/p/11821.html