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

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Tutorial] Caixa de texto com barra de rolagem, sem dll

Ir para baixo

[Tutorial] Caixa de texto com barra de rolagem, sem dll Empty [Tutorial] Caixa de texto com barra de rolagem, sem dll

Mensagem por Lucas 5293 Qua 11 Jan 2012, 11:26

Caixa de Texto
com barra de rolagem


Requerimentos: Game Maker 8.0 lite ou superior

Nível de Dificuldade: Intermediário

É um sistema fácil de ser usado.
Ao final do tutorial sua a caixa de texto ficara assim:

Spoiler:

Junte os recursos!

Primeiro crie uma sprite e nomeie com spr_seta, e ponha essa imagem nela:

[Tutorial] Caixa de texto com barra de rolagem, sem dll Spr_seta

Depois crie a spr_seta2:

[Tutorial] Caixa de texto com barra de rolagem, sem dll Spr_seta2

ou crie elas, no tamanho 16x16 com a origem em 0x0.

Agora vamos criar os scripts:

Código:
text_box_create//Inicia as variáveis
text_box_input//Detecta as letras a serem usadas na caixa
text_keys//Atribui espaços, nova linha, e a barra de rolagem
text_box_draw// Desenha tudo

Ponto todos os recursos foram criados.

Atribuindo as funções dos scripts

Abra o script text_box_create e nela ponha:

Código:
index=1//Serve para indicar a linha em que esta digitando
str=""//É a variável em que armazena tudo que foi desenhado
g[index]=''//Detecta o numero de letras em uma linha
/*Aqui são as dimensões da caixa e sua posição x e y */
width=argument2
height=argument3
x=argument0
y=argument1
/*-------------------------------------------------*/
barra_de_rolagem=argument4//Armazena se a caixa vai ter a barra de rolagem
tahoma=font_add("Tahoma",12,0,0,0,255)//Inicia a fonte
barra=y+5//Posição inicial da barra
ponteiro="|"//É o ponteiro quando você digita, que fica piscando
in=0//Para contar o tempo do ponteiro piscar

Agora abra o text_box_input e coloque:
Código:
if string_width(g[index]) < width - 17/*Se o numero de caracteres em uma linha não estiver cheio (Se houver bugs da palavra passar da caixa diminua 17 por menos )*/
{
str+=keyboard_string//Adiciona a caixa a letra em que você digita
g[index]+=keyboard_string//Adiciona ao contador
keyboard_string=''//Apaga as teclas do teclado
exit//SAI!!!!!
break//FREIA!!!!
}
else//Senão
{
index+=1//Adiciona mais 1 na index, ou adiciona mias uma linha
str+='
'//Adiciona mais uma linha na caixa
g[index]="
"//E no contador

}

Agora no text_keys

Código:
if keyboard_check_pressed(vk_backspace)// Se pressionar o botão de apagar
{
str=string_delete(str,string_length(str),string_length(str))//Deleta a ultima letra
g[index]=string_delete(g[index],string_length(str)-1,string_length(g[index]))//No contador também

}
if keyboard_check_pressed(vk_enter)//Se precionar enter
{
index+=1//Mais uma linha
str+='
'//Mais uma linha na caixa
g[index]="
"//E no contador
}

Ainda no text_keys:

Código:
if mouse_x>x and mouse_x<x+width
and
mouse_y>y and mouse_y<y+height//Se o mouse estiver dentro da caixa
{
window_set_cursor(cr_beam)//Muda o cursor
}
else//SENÃO
{
window_set_cursor(cr_default)//Fica o padrão
}

if mouse_check_button(mb_left) and barra_de_rolagem=1/*Se pressionar o botão do mouse e a barra estiver ativa*/
{
if mouse_x>x+width
and mouse_x<x+width+16
and mouse_y>y and mouse_y<y+16
//Estiver em cima do botão de rolagem
{
if barra<y+5//Se a barra não tiver o maximo em cima
barra+=5//Aumenta a barra
}

if mouse_x>x+width
and mouse_x<x+width+16
and mouse_y>y+height-16 and mouse_y<y+height
//Estiver em cima do botão de rolagem
{
barra-=5//Diminui a barra
}
}

Pronto a parte mais difícil se foi.

Por ultimo abra o text_box_draw
e nele coloque:

Código:
draw_set_font(tahoma)//Atribui a fonte
draw_set_color(c_white)//A cor branco
draw_rectangle(x,y,x+width,y+height,0)//Desenha o retângulo da caixa
draw_set_color(c_black)//Cor preto
draw_rectangle(x,y,x+width,y+height,1)//Desenha a borda do retângulo
draw_text(x+5,barra,string(str)+string(ponteiro))//Desenha o texto mais o ponteiro

/*Desenha aquelas setas para a rolagem*/

if barra_de_rolagem=1//Se a barra estiver ativa
{
draw_sprite(spr_seta,-1,x+width,y)//Seta de cima
draw_sprite(spr_seta2,-1,x+width,y+height-16)//Seta de baixo
}

ainda no text_box_draw

Código:
/* Desenha uma barra em volta da caixa de texto

para esconder as strings fora da caixa de texto, esse é o segredo o.O*/

draw_set_color(background_color)//Cor de fundo
draw_rectangle(0,0,room_width,y,0)//Desenha o retângulo de cima
draw_rectangle(0,room_height,room_width,y+height+1,0)//E o de baixo

Agora vamos criar o ponteiro, essa parte não é obrigatória para o funcionamento, mias se quiser algo profissional, é bom, ainda naquele script:

Código:
if !keyboard_check(vk_anykey)//Se não pressionar qualquer botão
in+=1//Adiciona mais 1 na contagem de tempo
else//Senão
ponteiro="|"//Acaba com a animação do ponteiro

if in=30//Se a contagem de tempo chegar a 30, ou um segundo
{
if ponteiro="|"//Se o ponteiro for '|'
{
ponteiro=""//O ponteiro é ''
in=0//Reinicia a contagem de tempo
exit//SAI!!!!
break//FREIA!!!
}
if ponteiro=""//Se for ''
{
ponteiro="|"//Ponteiro é igual a '|'
in=0//Reinicia a contagem de tempo
exit//SAI!!!!
break//FREIA!!!!
}
}

Fazendo acontecer!

Pronto todos os scripts prontos, agora crie um objeto.
no create ponha:
Código:
text_box_create(30,50,480,360,1);

no draw:
Código:
text_box_input();
text_keys();
text_box_draw();

Pronto teste e veja o que aconteceu!

O texto todo foi armazenado na variável str.
Faça o que quiser com ela Happy
FLWS
Lucas 5293
Lucas 5293

Games Ranking : Nota C

Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Reputação : 18
Número de Mensagens : 695
Prêmios : [Tutorial] Caixa de texto com barra de rolagem, sem dll Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://dopxgames.blogspot.com

Ir para o topo Ir para baixo

[Tutorial] Caixa de texto com barra de rolagem, sem dll Empty Re: [Tutorial] Caixa de texto com barra de rolagem, sem dll

Mensagem por Lucas 5293 Qui 12 Jan 2012, 10:29

TRFN escreveu:Belo tutorial lucas.
Gostei do modo que você usou os scripts,facilitou muito.
O mais legal é o modo que você usa as funções de draw.
Parabéns.
VLW cara essa caixa é para o meu GM PSP.
Como era bem difícil achar um tutorial sobre isso, decidi fazer
FLWS
Lucas 5293
Lucas 5293

Games Ranking : Nota C

Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Reputação : 18
Número de Mensagens : 695
Prêmios : [Tutorial] Caixa de texto com barra de rolagem, sem dll Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://dopxgames.blogspot.com

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