Sha256: f677d39c9f24ca9016c92a8d32e2eea973f1480adb4b9f91bae2e05ab8eaf66d

Contents?: true

Size: 531 Bytes

Versions: 4

Compression:

Stored size: 531 Bytes

Contents

module Nuklear
  module UI
    module Events
      def on(*events, &block)
        events.each do |event|
          event_listeners_for(event) << block
        end
      end

      def event_listeners_for(event)
        @event_listeners ||= {}
        @event_listeners[event] ||= []
      end

      def trigger(event)
        if event != @last_event # prevent triggering every frame
          event_listeners_for(event).each { |listener| listener.call event }
          @last_event = event
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nuklear-0.1.3 lib/nuklear/ui/events.rb
nuklear-0.1.2 lib/nuklear/ui/events.rb
nuklear-0.1.1 lib/nuklear/ui/events.rb
nuklear-0.1.0 lib/nuklear/ui/events.rb