为什么侦听器没有绑定到我分配给它的对象?

生化危机
for (int i = 0; i < mapSize[0]; i++) {
    for (int j = 0; j < mapSize[1]; j++) {
        hashCodes[i][j] = new Image(emptyField);
        int[] targetField = new int[2];
        targetField[0] = i;
        targetField[1] = j;
        hashCodes[i][j].addListener(new InputListener() {
            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                return true;
            }

            @Override
            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                System.out.println("Empty Field clicked" + Arrays.toString(targetField));
                for (Image[] imageRow : hashCodes) {
                    for (Image actualImage : imageRow) {
                        System.out.print(actualImage.hashCode() + " ");
                    }
                    System.out.println();
                }
                if (MarvelousMashup.useInfinityStone) {
                    MarvelousMashup.useInfinityStone = false;
                    MainMenu.client.getMessageHandler().sendUseInfinityStoneRequest
                            (MarvelousMashup.activeCharacter,
                                    getActualEntity(MarvelousMashup.activeCharacter).getPosition(),
                                    targetField,
                                    getStone(MarvelousMashup.useInfinityStoneID));
                }
            }
        });
        tempField.addActor(hashCodes[i][j]);
    }
}

我正在为每个 Actor 分配一个监听器。但是无论我单击什么空字段,每次单击的字段对我来说都是相同的,尽管每个 Actor 都是不同的。

Empty Field clicked[5, 5]
817686795 1047478056 2115628016 611643685 1935122449 872826668 
91323447 110053477 1209411469 1320105604 1076984738 1006751649 
1171434979 1920907467 970535245 194481424 1534755892 1548081008 
753321708 464400749 343563528 1719072416 2092801316 376635015 
1344697180 28597262 300983713 284686302 1940445711 1356840024 
1142347343 1810923540 1581078471 1932332324 33233312 1860491691 

难道我做错了什么?因为据我所知,每个演员都应该有自己的听众,而不是所有人都是同一个听众。

标记空间

尝试将targetField直接添加到侦听器并使用构造函数对其进行初始化。

for (int i = 0; i < mapSize[0]; i++) {
    for (int j = 0; j < mapSize[1]; j++) {
        hashCodes[i][j] = new Image(emptyField);
        hashCodes[i][j].addListener( new MyInputListener( i, j ) );
// rest of code...


class MyInputListener extends InputListener {
    int [] targetField = new int[2];
    InputListener( int i, int j ) {
      targetField[0] = i;
      targetField[1] = j;
    }
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
       return true;
    }

    @Override
    public void touchUp(  // etc...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在分配给它的所有字段之前,不能使用“this”对象。为什么类构造函数没有这样的限制?

为什么我没有在此提交侦听器中获取带有输入值的表单数据对象?

一个对象与分配给它的tkinter对象有什么区别?

fabric.js将事件侦听器分配给多个事件的对象

为什么在我检查标记时某些网站的样式没有分配给元素?

为什么没有将 NULL 分配给我的指针数组?

为什么内存没有分配给数组?

为什么我的 WASAPI 侦听器即使在没有播放的情况下也会触发?

为什么libc中的内存分配没有路由到我的分配包装器?

如果{{}}没有分配给变量的字段,为什么没有显示分配给该变量的字段?

我在 RUBY 中的二维数组有问题,它没有将值分配给它

将字符串文字分配给非const指针时,为什么我的C编译器没有警告?

为什么我可以将一个Int分配给一个没有编译器错误的字符串?

Vuex:[Vue警告]:计算属性“用户名”已分配给它,但没有设置器

在JavaScript中,如果我分配给具有getter但没有setter的对象属性,会发生什么?

为什么将我的系列分配给没有空值的同一系列无效?

在 Spring Boot 中测试 JMS 侦听器时,为什么我的 MockBeans 和 MockRestServiceServer 没有返回正确的响应

为什么不能将结构分配给具有其实现特征的绑定

将事件侦听器分配给在Delphi中动态创建的TPanel

For 循环仅将数组的最后一个值分配给事件侦听器

事件侦听器仅分配给被称为的第一类

将事件侦听器分配给ASP.NET中的动态创建的HTML按钮

为什么循环将最后一个索引元素的引用分配给它?

为什么可以扩展/追加到元组中的列表,但不能分配给它?

为什么在字典中修改键还会修改分配给它们的数组?(蟒蛇)

为什么 Ubuntu 在分区中占用的空间量与分配给它的空间量不同?

为什么更新一个变量也会更新分配给它的变量?

为什么交集类型的值总是可以分配给它在 TypeScript 中的成员类型?

Javascript(变量范围):变量没有得到分配给它的值