Botões por imagem Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

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

Botões por imagem

4 participantes

Ir para baixo

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
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)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

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...
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

Ir para o topo Ir para baixo

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
heyitily
heyitily
Experiente
Experiente

Mensagens : 421
Créditos : 12

Ir para o topo Ir para baixo

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
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)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

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:
Nanzin
Nanzin
Membro de Honra
Membro de Honra

Mensagens : 1550
Créditos : 252

Ir para o topo Ir para baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos