Suporte no desenvolvimento de jogos


    Emitter

    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda

    Mensagens : 1966
    Créditos : 362
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Emitter        Left_bar_bleue0/0Emitter        Empty_bar_bleue  (0/0)
    Vida:
    Emitter        Left_bar_bleue30/30Emitter        Empty_bar_bleue  (30/30)

    Emitter        Empty Emitter

    Mensagem por Paulo Soreto em Dom Out 09, 2016 4:17 pm

    Emissor de eventos com mesmas funcionalidades do Emitter do Node.js escrito em Ruby.

    Código:
    #==============================================================================
    # ** Emitter
    #------------------------------------------------------------------------------
    # Autor   Paulo Soreto
    # Versão  1.1
    #------------------------------------------------------------------------------
    # Classe responsável por gerenciar e emitir eventos.
    #==============================================================================

    class Emitter
      #--------------------------------------------------------------------------
      # * Inicialização
      #--------------------------------------------------------------------------
      def initialize
        @events = {}
      end
      #--------------------------------------------------------------------------
      # * Adiciona um evento
      #--------------------------------------------------------------------------
      def on(event, &callback)
        @events[event] ||= []
        @events[event].push(callback)
      end
      #--------------------------------------------------------------------------
      # * Emite um evento
      #--------------------------------------------------------------------------
      def emit(event, *args)
        return if @events[event].nil?
        @events[event].each { |e| e.call(*args) }
      end
    end

    Exemplo de uso:
    Código:
    e = Emitter.new
    e.on(:nome) { |nome, sobrenome| print("Olá #{nome} #{sobrenome}!") }
    e.emit(:nome, 'Paulo', 'Soreto')

    Esse sistema pode ser usado em um módulo para gerenciar conexões de forma assíncrona, trabalhando para executar ações dependentes. Em sistemas para GUI com a mesma aplicação.


    _________________
    Emitter        FwYnoXI
    Komuro Takashi
    Komuro Takashi
    Colaborador
    Colaborador

    Mensagens : 1034
    Créditos : 131
    Cash : 0

    Emitter        Empty Re: Emitter

    Mensagem por Komuro Takashi em Seg Out 10, 2016 8:04 am

    Obrigado pela contribuição. +1


    _________________
    Emitter        Takashi_komuro_by_minato8-d51g9o4

      Data/hora atual: Dom Dez 15, 2019 1:43 pm