Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


4 participantes

    Botões por imagem

    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda


    Mensagens : 1980
    Créditos : 367

    Ficha do personagem
    Nível: 1
    Experiência:
    Botões por imagem Left_bar_bleue0/0Botões por imagem Empty_bar_bleue  (0/0)
    Vida:
    Botões por imagem Left_bar_bleue30/30Botões por imagem Empty_bar_bleue  (30/30)

    Botões por imagem Empty Botões por imagem

    Mensagem por Paulo Soreto Dom Fev 17, 2013 1:09 am

    Introdução
    Um widget que cria um botão a partir de uma imagem. Diferente de um que fiz (Soreto) que desenhava o fundo no botão, esse aqui (feito pelo Nanzin) desenha uma imagem clicável e com interação, alterna-se entre duas imagens diferentes (quando o mouse estiver sobre e quando o mouse está fora do widget).
    Qualquer bug por favor reportar no tópico.

    Script
    Código:
    #----------------------------------------------------------------#
    # ** Image Button [Widget]
    #----------------------------------------------------------------#
    # Developed: Nanzin
    # Date: 17-02-2013 00:50
    #----------------------------------------------------------------#
    #---------------------------- PT BR -----------------------------#
    # Como Usar:
    # - Chame a classe em seu código
    # Image_Button.new(window,x,y,imageonmouseout,imageonmouseover,type)
    #
    # ONDE:
    # Window: Janela que o botão irá aparecer
    # x: Coordenada X
    # y: Coordenada Y
    # imageonmouseout: Imagem padrão
    # imageonmouseover: Imagem que mudará quando o mouse estiver sobre.
    # type: Icone ou Imagem
    #
    # Exemplo:
    # @button = Image_Button.new(self,100,40,"Gold","Gold2","image").
    #
    # Este exemplo irá criar a imagem de Gold encontrada na pasta
    # pictures do projeto, e vai mudar para Gold2 quando o mouse
    # estiver sobre
    #
    # @button = Image_Button.new(self,100,40,"Gold","Gold2","icon").
    #
    # Este exemplo irá criar a imagem de Gold encontrada na pasta
    # icons do projeto, e vai mudar para Gold2 quando o mouse
    # estiver sobre
    #
    #----------------------------- EN [English]-------------------------------
    # (I apologize if errors occur in English,
    # my English is a little rusty.
     
    # How to Use:
    # - call the class in your code.
    # Image_Button.new(window,x,y,imageonmouseout,imageonmouseover,type)
    #
    # WHERE:
    # Window: the window that the button will display.
    # x: x coordinate
    # y: y coordinate
    # imageonmouseout: default image
    # imageonmouseover: image to change.
    # type: Icon or Picture
    #
    # Example:
    # @button = Image_Button.new(self,100,40,"Gold","Gold2","image").
    #
    # This example will do a bitmap gold of the folder picture
    # in the project, and will change to Gold2 when the mouse is over.
    #----------------------------------------------------------------#
    #----------------------------------------------------------------#
     
    class Image_Button < Widget
      attr_accessor :mask
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(win,x,y,imageonmouseout,imageonmouseover,type,&block)
        super(win,x, y)
        @imageout = check_type(type,imageonmouseout)
        @imageover = check_type(type,imageonmouseover)
        @block = block
        refresh
      end
      #--------------------------------------------------------------------------
      # Draw the button text, and create the mask.
      #--------------------------------------------------------------------------
      def refresh
        @s.bitmap = Bitmap.new(@imageout.width,@imageout.height)
        @s.bitmap.blt(0,0,@imageout,Rect.new(0,0,@s.bitmap.width,@s.bitmap.height))
        @mask = Sprite.new(win.viewport)
        @mask.x=@s.x
        @mask.y=@s.y
        @mask.visible= false
        @mask.z = 5000
        @mask.bitmap = @imageover
      end
      #--------------------------------------------------------------------------
      # Dispose the mask, and itself
      #--------------------------------------------------------------------------
      def dispose
        @mask.dispose
        super
      end
      #--------------------------------------------------------------------------
      # Frame update, check the mask status, and active status
      #--------------------------------------------------------------------------
      def update
        @mask.visible= false if @mask.visible and !visible
        if visible
          @mask.x=@s.x if @mask.x != @s.x
          @mask.y=@s.y if @mask.y != @s.y
          @mask.update
          if in_area?
            @mask.visible=true
          else
            @mask.visible=false
          end
          self.active=false if self.active
          @s.opacity = Window_Edits::Button_Active_Opacity  if @s.opacity<Window_Edits::Button_Active_Opacity
        end
        super
      end
      #--------------------------------------------------------------------------
      # Change the button opacity when clicked
      #--------------------------------------------------------------------------
      def clicked
        #$game_system.se_play($data_system.decision_se)
        @s.opacity -= Window_Edits::Button_Not_Active_Opacity if @s.opacity==Window_Edits::Button_Active_Opacity
        if @block != nil
          @block.call
        else
        self.active = true
        end
      end
     
      #--------------------------------------------------------------------------
      # Visible
      #--------------------------------------------------------------------------
      def visible=(v)
        @mask.visible=v if @mask != nil
        @s.visible = v if @s != nil
      end
     
      #-------------------------------------------------------------------------
      # Type
      #--------------------------------------------------------------------------
      def check_type(type,image)
        case type
          when "image"
            return RPG::Cache.picture(image)
            break
          when "icon"
            return RPG::Cache.icon(image)
            break
        end
      end
    end

    Screens
    Não tenho aqui, mas nem precisa pois varia de acordo com a imagem que escolher.

    Créditos
    Nanzin


    _________________
    Botões por imagem FwYnoXI
    RD12
    RD12
    Lenda
    Lenda


    Medalhas : Botões por imagem 48080450Botões por imagem Trophy11Botões por imagem GIueZBotões por imagem ZgLkiRU
    Mensagens : 1946
    Créditos : 745

    Botões por imagem Empty Re: Botões por imagem

    Mensagem por RD12 Dom Fev 17, 2013 1:14 pm

    O script está muito bom. É como o widget icon ne, só que com interação.
    Só fiquei curioso porq vc ter postado e não o nanzin...
    heyitily
    heyitily
    Experiente
    Experiente


    Mensagens : 421
    Créditos : 12

    Botões por imagem Empty Re: Botões por imagem

    Mensagem por heyitily Dom Fev 17, 2013 1:17 pm

    Realmente parabéns!
    @RD12 acho que o nanzin não está mais entrando no fórum..


    _________________
    Botões por imagem SICBb4n
    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda


    Mensagens : 1980
    Créditos : 367

    Ficha do personagem
    Nível: 1
    Experiência:
    Botões por imagem Left_bar_bleue0/0Botões por imagem Empty_bar_bleue  (0/0)
    Vida:
    Botões por imagem Left_bar_bleue30/30Botões por imagem Empty_bar_bleue  (30/30)

    Botões por imagem Empty Re: Botões por imagem

    Mensagem por Paulo Soreto Dom Fev 17, 2013 1:25 pm

    O Nanzin me pediu ontem para postar, acho que sie lah, não conseguia entrar na conta dele aqui, ai eu vim e postei xD


    _________________
    Botões por imagem FwYnoXI
    Nanzin
    Nanzin
    Membro de Honra
    Membro de Honra


    Mensagens : 1550
    Créditos : 252

    Botões por imagem Empty Re: Botões por imagem

    Mensagem por Nanzin Ter Fev 19, 2013 9:23 pm

    só retratando , é ideal que as 2 imagens possuam a mesmas dimensões para um perfeito funcionamento.

    :)



    _________________
    Botões por imagem Npvo

    Para Aqueles que gostam de Min e de meu Trabalho;
    Upem Meu Pet nao custa nda!!


    Pet:

    Conteúdo patrocinado


    Botões por imagem Empty Re: Botões por imagem

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Mar 28, 2024 8:26 am