0

我有一个 obj 暂停控制器。它曾经在使用向上/向下箭头然后输入以单击暂停菜单中的某些内容时起作用。但是我究竟如何使用鼠标左键(触摸屏)而不是回车键来获得它。我有这个代码作为我的输入键。

if (interest == "resume")
{
    instance_destroy();
}
else if (interest == "levels")
{
    room_goto(worlds);  
}
else if (interest == "main_menu")
{    
    room_goto(main);
}

这在我的draw gui中

draw_sprite(background, 0, 640, 360);
draw_sprite(spr_border, 0, 640, 360);

if (interest == "resume")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360 + 100);
}
else if (interest == "levels")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360 + 100);
}
else if (interest == "main_menu")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360 + 100);
}

我尝试在我的步骤事件中使用它来让点击(触摸)工作,但它根本不工作(触摸或点击时没有激活)。这对吗?

if(device_mouse_check_button_released(0, mb_left)){
    if (device_mouse_x(0) > 640 && device_mouse_x(0) < 640 + sprite_get_width(spr_resume)
   && device_mouse_y(0) > 260 && device_mouse_y(0) < 260 + sprite_get_height(spr_resume)){
      //RESUME IS TOUCHED
   }
 }  
   if(device_mouse_check_button_released(0, mb_left)){
       if (device_mouse_x(0) > 640 && device_mouse_x(0) < 640 + sprite_get_width(spr_levels)
    && device_mouse_y(0) > 260 && device_mouse_y(0) < 260 + sprite_get_height(spr_levels)){

  }
}

if(device_mouse_check_button_released(0, mb_left)){
    if (device_mouse_x(0) > 640 && device_mouse_x(0) < 640 + sprite_get_width(spr_main_menu)
    && device_mouse_y(0) > 260 && device_mouse_y(0) < 260 + sprite_get_height(spr_main_menu)){
   }
}
4

1 回答 1

1

我发现您的代码存在许多问题,您都需要解决这些问题才能正常工作:

  1. 检查您的兴趣变量是否有更改,但实际上并没有更改(我希望在您的步骤事件脚本中更改它,但它没有做任何事情)。
  2. 您的绘图 gui 脚本为三个不同的感兴趣值绘制完全相同的东西。没有任何明显的变化。
  3. 您跳到一个新房间并同时显示所选兴趣(释放选择时),这意味着您永远不会看到选择。您应该 a) 在按下时吸引选定的兴趣,并且 b) 在发布时跳到房间。

此外,请记住,多个手指可以同时触摸屏幕 - 您只检查可能有 5 个的第一次触摸。

GameMaker 上下文中的最后一个建议是使用对象来检查手指按下和释放事件(鼠标事件转换为触摸屏上的手指事件),而不是扫描屏幕区域是否有按下。这就是使 GameMaker 更易于使用的原因,因为它会自动检查实例的精灵区域是否存在碰撞,这是一种内置行为。

于 2014-07-17T12:37:29.690 回答