Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: Záhada v Ruby  (Přečteno 598 krát)

Matesax

  • Host
Záhada v Ruby
« kdy: 17 Březen 2013, 07:28:39 »
Dobrý den,
jistě znáte dobře ten případ, kdy děláte 2 vlastně totožné věci a jedna funguje - a druhá ne... :) Tedy rozdíl tu mám pouze v tom kdo koho volá - ale volají se přesně stejné metody - první volání nastává při inicializaci a druhé (sekundární) - po vstupu z myši.

Kód: [Vybrat]
class Window

        attr_accessor :x, :y, :window

        def initialize

                createWindow 0, 0, 50, 20
                @x = 0
                @y = 0

        end

        def createWindow x, y, width, height

                @window = Ncurses::WINDOW.new height, width, y, x
                @window.border 124, 124, 45, 45, 43, 43, 43, 43
                @window.bkgd Ncurses.COLOR_PAIR(2)
                @window.refresh

        end

        def setTitle title

                @window.mvprintw 0, 4, title
                @window.mvprintw 1, 2, ""
                @window.refresh

        end

        def write content

                @window.printw content
                @window.refresh

        end
end

Po inicializaci se okno bez problémů zobrazí - po kliknutí myší:

Kód: [Vybrat]
                        when Ncurses::KEY_MOUSE

                                event = Ncurses::MEVENT.new

                                Ncurses.getmouse event

                                if event

                                        if event.bstate & Ncurses::BUTTON1_PRESSED

                                                canvas.screen.clear

                                                windows[0].x = event.x
                                                windows[0].y = event.y

                                                windows[0].window.move windows[0].y, windows[0].x
                                                windows[0].window.refresh

                                        elsif event.bstate & Ncurses::BUTTON3_PRESSED

                                                canvas.screen.clear

                                                width = event.x - windows[0].x
                                                height = event.y - windows[0].y

                                                if event.x < windows[0].x
                                                        width = windows[0].x - event.x
                                                        windows[0].x = event.x
                                                end

                                                if event.y < windows[0].y
                                                        height = windows[0].y - event.y;
                                                        windows[0].y = event.y
                                                end

                                                windows[0].createWindow window.x, window.y, width, height
                                        end
                                end

Co s tím mohu udělat? :) (Po myši jen černo.)
Děkuji.
« Poslední změna: 17 Březen 2013, 07:42:39 od Matesax »