在Ruby Gosu库中切换Draw函数

hmtdttj4  于 2023-11-18  发布在  Ruby
关注(0)|答案(1)|浏览(94)

我目前正在努力显示一个font.draw元素的列表,这些元素将链接到鼠标左键向下。我已经将draw设置为如果按钮向下和mouse_x/y在正确的位置,但是一旦你停止按鼠标左键,它们就会消失,这是有道理的。
我想知道是否有一种方法可以在鼠标按下时设置/切换这些绘制,我一直在努力寻找任何资源或例子来展示这一点,这在本学期的工作中从未教授过。
这里是当前的代码设置到位;

def draw
        music_file = File.new("albums.txt", "r")
        albums = read_albums(music_file)
        artworks = read_artworks(albums)
        music_file.close() 
        @info_font.draw("mouse_x: #{mouse_x}", 0, 590, ZOrder::UI, 1.0, 1.0, Gosu::Color::BLACK) #debug
        @info_font.draw("mouse_y: #{mouse_y}", 100, 590, ZOrder::UI, 1.0, 1.0, Gosu::Color::BLACK) #debug
        draw_background() 
        draw_albums(albums)
        drawtracks_main(albums) #this is the issue I'm trying to fix
    end
    def drawtracks_main(albums)
        if (Gosu.button_down? Gosu::MsLeft and mouse_over_album1(mouse_x, mouse_y))
            draw_tracks(albums[0].tracks) == true
        end
    end

个字符
我试过在button_down中切换到draw,但我注意到你实际上不能在button_down中 draw。否则我试过将draw设置为true,尝试给予一个值,但当然没有工作。
任何帮助都是巨大的!

euoag5mw

euoag5mw1#

所以在坐着盯着墙看了一个小时后,我意识到我应该使用gosu中内置的更新程序。
@draw_tracks_enabled值初始化为false,然后使用此;;

def update
  if Gosu.button_down?(Gosu::MsLeft)
    if mouse_over_album1(mouse_x, mouse_y)
      @draw_tracks1_enabled = true
    else 
      @draw_tracks1_enabled = false
    end 
  end
end

字符串
把它变成true(或者false,如果你要按下另一个要显示的项目)。然后你可以写一个简单的if @draw_tracks1_enabled == true,然后画出轨道。

相关问题