- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了某种棋盘游戏。物体应该能够从板上滑落。这意味着该指定区域之外的对象部分不应再显示,以使该项目看起来好像正在从棋盘上移开。
我尝试的是检查 Sprite 是否仍在棋盘上(通过检查位置),如果不是,我将不再渲染它。但那是
1) 不好,因为这样 Sprite 要么完全显示,要么根本不显示。
2)不优雅。
实现我上面描述的目标的优雅方法是什么?也许使用图像而不是 Sprite ,然后使用另一个舞台,其视口(viewport)只是屏幕的一部分?如果是这样,我很高兴能得到一些关于如何做到这一点的解释。
最佳答案
您可以使用剪辑。它的基本作用是定义一个矩形区域并将其与 spritebatch 相关联。您应用剪刀,只会绘制与 spritebatch 关联的矩形内部的区域。
来自 Wiki 的示例代码(版本 0.9.9 之前):
Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(x,y,w,h);
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
spriteBatch.draw(...);
spriteBatch.flush();
ScissorStack.popScissors();
来源:https://github.com/libgdx/libgdx/wiki/Clipping%2C-with-the-use-of-scissorstack
--
编辑:对于 LibGDX 版本 0.9.9,函数calculateScissors 的参数似乎发生了变化。 NathanSweet 帮助我弄清楚了如何让它工作( CalculateScissors with ViewPorts ),然后重新引入了上面提到的功能( CalculateScissors Less Parameters )。
ScissorStack.calculateScissors(camera, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), batch.getTransformMatrix(), clipBounds, scissor);
关于java - LibGDX:仅在特定区域内显示 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661139/
我有数百个位置的列表,只想显示当前屏幕上这些位置的 MKPinAnnotation。屏幕从 2 英里半径内的用户当前位置开始。当然,用户可以滚动和缩放屏幕。现在,我等待 map 更新事件,然后循环遍历
我试过检查 CGRect: CGFloat imageX1 = imageView.frame.origin.x; CGFloat imageY1 = imageView.frame.origin
我是一名优秀的程序员,十分优秀!