【问题标题】:How can you create a grid in andengine?如何在 andengine 中创建网格?
【发布时间】:2015-03-05 13:35:24
【问题描述】:

我对使用 AndEngine 进行简单的游戏编程很感兴趣。我想做一些基于回合的基本策略。所以我想对一些网格有一个自上而下的视图。这个象棋网格中的每个正方形都应该是可点击的(当然在安卓上是可触摸的)。但我无法想象画线和正方形是最好的解决方案。我想要某种抽象对象列表,我可以将其扩展到不同的行为(单击触发菜单打开,在其他字段上单击触发爆炸,无论如何......)。

这些年来,我一直在几个引擎中搜索这个。这是一种爱好,但我想为它找到一个解决方案。谁能给我一个关于如何以优雅的方式做到这一点的提示?双缓冲、渲染和其他东西并不重要。重要的是,每个正方形都应该是一个被绘制的对象。

有人吗? ;) 问候。

【问题讨论】:

  • andEngine 有一些对象是 Entity 类的扩展,如 Sprite、Rectangle 等。您可以添加矩形作为您的棋盘,每个人都可以点击。有可能使他们每个人的行为都不同。您必须更具体,以便我们为您提供帮助
  • 只是一个简单的示例,其中包含 3x3 字段,可点击并更改其背景颜色或打开下拉菜单会很棒。在一种全屏应用程序中。
  • 每个字段应该执行相同的任务还是不同的任务?你已经尝试过什么了吗?实际上绘制矩形将是做你想做的最好的解决方案......可能。

标签: java android grid andengine


【解决方案1】:

简单的解决方案就是这样(假设您的屏幕在纵向模式下是 800x480,我假设您有 GLES2-AC 和引擎分支)。

在你的 onCreateScene() 方法中:

Rectangle rect1 = new Rectangle(80, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
        if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
            //here put what you want to be done after your button was pressed
        }
}
Rectangle rect2 = new Rectangle(240, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
        if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
            //here put what you want to be done after your button was pressed
        }
}

然后您继续 7 次更改 new Rectangle(x, y....) 中的前两个数字,它们是矩形中心的坐标(第二对数字是矩形的高度和宽度)。 (所以底行有坐标:(80, 133),(240, 133)和(400, 133)。中间行:(80, 399),(240, 399)和(400, 399)。第三行你可以想象出。当然它不会给你完全覆盖的屏幕。这可以通过将屏幕的宽度和高度除以某些数字来实现,并将其用作矩形的坐标。记住将所有矩形附加到场景并添加

this.setOnSceneTouchListener(getOnSceneTouchListener());
this.setOnSceneTouchListenerBindingOnActionDownEnabled(true);

并为所有矩形注册触摸区域。

更困难的方法是创建类,例如MyButton.class,它扩展了矩形或精灵类,该类具有在按下“按钮”时将使用的方法。这取决于你真正需要什么。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多