Entrar
Últimos assuntos
» Retorno da GMBR!!!por theguitarmester Ter 19 Mar 2024, 22:38
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05
» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55
» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39
» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28
» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01
Barra de texto Profissional
2 participantes
GMBR :: Ensine & Aprenda :: Exemplos :: Game Maker (engines)
Página 1 de 1
Barra de texto Profissional
Nome: Engine de Barra de texto
Requerimentos: Versão do GMS e GM8 - Pro
Descrição: Contem tudo que uma barra de texto merece: Copiar; colar; selecionar; substituir; movimentar cursor; entre outros...
Nível de dificuldade: Mediano
Controles/Informações: Teclado é possível configurar o tipo de carácter a ser escrito.
Donwload:Barra de Texto
Irei postar os códigos caso um dia o link de download quebre
Requerimentos: Versão do GMS e GM8 - Pro
Descrição: Contem tudo que uma barra de texto merece: Copiar; colar; selecionar; substituir; movimentar cursor; entre outros...
Nível de dificuldade: Mediano
Controles/Informações: Teclado é possível configurar o tipo de carácter a ser escrito.
Donwload:Barra de Texto
Irei postar os códigos caso um dia o link de download quebre
- Create:
- ///Criador := Witen;
image_single = 0
_Selected = false //Checa se a barra(Campo) esta selecionada
Fake_Text = 'Nome do smadol' //Nome de apresentação(Quando clicar na barra ele some)
Max_Text = 25 //Numero maximo de caracteres
_Text = Fake_Text //_Text é a variavel que quarda o texto escrito
Text_Pre_Selected = 0 //Quanda onde começa a seleção de texto
Text_Pos_Selected = 0 //Quanda onde termina a seleção de texto
Text_Selected_Size = 0 //Quanda o tamanho da seleção - OBS: Se seu valor for igual a 0 significa que nada foi selecinado
_Bar = '|' //O nosso cursor '
alarm[0] = 15 //Alarme para transforma o cursor em um vagalume, o deixa piscando.
_Font = FntChat //fonte
Font_Color = c_black //Cor da fonte
Camp_Color = c_blue //Cor do campo de seleção
_Cursor = 0 //Posição do curso
Camp_X = x //Posição do campo de seleção(x)
Camp_Y = y //Posição do campo de seleção(y)
Camp_W = sprite_width //largura do campo de seleção
Camp_H = sprite_height //altura do campo de seleção
_Width = 9 //Tamanho de um caracterer OBS - VARIA DE ACORDO COM CADA FONTE, se for mudar a fonte terar que mudar-la tambem
Bord_W = _Width /2 //Distancia Horizontal da borda - Só serve para posicionar melhor o texto
Bord_H = 6 //Distancia vertical da borda
Curso_X = 0 //Quarda a posição do mouse
Previus_Curso_X = 0 //Quarda a posição do mouse anterior
Line_Dist = -1 /*Esta variavel determina o espaçamento de cada linha(valor padrão -1)
Ai você se pergunta: -como assim? não é preciso, nós só usaremos uma linha.
é que eu vou transforma isso em uma caixa de texto depois ai vai ter infinidades de linhas è.é"
- Alarm0:
- if _Bar = '|'{_Bar = ''}else{_Bar = '|'}//Se a barra estiver visivel ela apaga, caso o contrario se estiver invisivel ela aparece \o/
alarm[0] = 15//Não queremos que o cursor pare de piscar estão atualizamos o alarme
- Draw:
- //Desenhando texto
draw_sprite(sprite_index,image_single,x,y)//Desenha o Sprite da barra
draw_set_font(_Font);
draw_set_color(Font_Color)
draw_text_ext(Camp_X+Bord_W,Camp_Y+Bord_H,_Text,Line_Dist,Camp_W)//Desenha nosso _Text
if (_Selected == true) //Se a barra(Campo) estiver selecionado
{
//Desenhando retangulo de seleção(Quando clicamos na barra ele aparece)
draw_set_color(Camp_Color)
draw_rectangle(Camp_X+1,Camp_Y+1,Camp_X+Camp_W-1,Camp_Y+Camp_H-1,true)
//Largura do cursor
Cursor_Width = _Cursor*_Width//Essa variavel mostra quanto espaço tem antes do curso ate o inicio da barra, em Pixel
//Desenhando Cursor
draw_set_color(Font_Color)
draw_text(Camp_X+Cursor_Width,Camp_Y+Bord_H,_Bar)
//Desenhando texto selecionado
draw_set_color(Camp_Color)
draw_set_alpha(0.5)//Transparencia em 0.5 para que possamos ver o que esta selecionado por baixo do retangulo
if Text_Selected_Size > 0{//Se tivermos selecionado algo desenha o retangulo de seleção
draw_rectangle((Text_Pre_Selected*_Width)+Bord_W+Camp_X,Camp_Y+Bord_H,(Text_Pos_Selected*_Width)+Camp_X+Bord_W,Camp_Y+Bord_H+string_height(_Text),false)} //outline false para que o retangulo seja completamente prenchido
draw_set_alpha(1)//Voltei a transparencia padrão para não afetar outros Draw's
}
//Se clicar na barra a variavel selecionado fica ativa
if mouse_check_button_pressed(mb_left){
if mouse_x > Camp_X and mouse_y > Camp_Y and mouse_x < Camp_X+Camp_W and mouse_y < Camp_Y+Camp_H{_Selected = true}else{_Selected = false}}
//--------------Criando o texto inicial(antes de clicar na barra)-----------------------------//
if _Selected = true and _Text = Fake_Text{_Text = ''}//Se selecionarmos a barra e o texto sor o de apresentação(Fake) apagamos o texto
if _Selected = false and _Text = ''{_Text = Fake_Text}//Se a Barra não estiver selecionada e o texto estiver vazio exibimos o texto falso
//Atualiazando cursor de acordo com o local clicado
if mouse_check_button_pressed(mb_left){
if mouse_x > Camp_X and mouse_y > Camp_Y and mouse_x < Camp_X+Camp_W and mouse_y < Camp_Y+Camp_H{//Checa se estamos clicando no campo
Previus_Curso_X = round((mouse_x-Camp_X)/_Width);
_Cursor = round((mouse_x-Camp_X)/_Width)//Atualizando posição do curso de acordo do local onde se clicou
if _Cursor > string_length(_Text){_Cursor = string_length(_Text)} //Se o lugar onde foi clicado é meio do que o texto o curso vai para o final do texto
}}
//Pegando inicio e final da posição calculando seu tamanho em seguida
if mouse_check_button(mb_left){
Curso_X = round((mouse_x-Camp_X)/_Width);
Text_Pre_Selected = max(min(Curso_X,Previus_Curso_X ,string_length(_Text)),0)
Text_Pos_Selected = min(max(Curso_X,Previus_Curso_X),string_length(_Text))
Text_Selected_Size = Text_Pos_Selected-Text_Pre_Selected
}
- Key Press - Any Kay:
- //Este código pode ser colocado em um evento continuo como Step, mas não aconselho a fazer isto
//Essa checagem é feita(_Selected == false) para que não escrevamos nada sem esta com a barra selecionada
if (_Selected == false) or (keyboard_key == 0) exit;
//-----------------------------------------Botoes basicos-----------------------------------------------------//
//--------------------------------------------Apagando--------------------------------------------------------//
if keyboard_check(vk_backspace) or keyboard_check(vk_delete){
if Text_Selected_Size > 0{//Checa se tem texto selecionado
_Text = string_delete(_Text,Text_Pre_Selected+1,Text_Selected_Size);//Se tiver texto selecionado o trecho é apagado
if Text_Pre_Selected >= Curso_X{//Checa se o texto foi selecionado da direita para esquerda
_Cursor-= Text_Selected_Size}//salva a nova posição do curso
Text_Selected_Size = 0; //Mudamos a variavel para 0 pois não queremos que fique selecionado um trecho que não existe
exit}//Para o script
if _Cursor > 0{//Chega se o cursor esta no inicio do texto, se estiver não tem o que apagar
_Text = string_delete(_Text,_Cursor,1);//Deleta uma casa
_Cursor-=1;}//Atualiza a nova posição do cursor
exit}//Para o script
//-----------------------------------------Movendo Cursor----------------------------------------------------//
if Text_Selected_Size = 0{ //Se não existir texto selecionado podemos mover o cursor
if keyboard_check(vk_left) and _Cursor > 0{//Checa se botão esquerdo esta precionado e se o cursor ja esta no começo do texto
_Cursor-=1;//Diminuir uma posição no cursor
exit}//Para o script
if keyboard_check(vk_right) and _Cursor < string_length(_Text){//Checa Botão direito e se o curso já esta no fim do texto
_Cursor+=1;//Adicionar uma posição ao cursor
exit}}//Para o script
//OBS: a checagem do fim e do começo do texto serve para o curso não ir para aonde não existe
//--------------------------------------------Colando--------------------------------------------------------//
if keyboard_check(vk_control) and keyboard_check(ord('V')){//Checa se Ctrl e V estão sendo precionados
if Text_Selected_Size > 0{//Checa se tem texto selecionado
_Text = string_delete(_Text,Text_Pre_Selected+1,Text_Selected_Size);//Se tiver texto selecionado o trecho é apagado para ser substituido
if Text_Pre_Selected >= Curso_X{//Checa se o texto foi selecionado da direita para esquerda
_Cursor-= Text_Selected_Size}//salva a nova posição do curso, eleminando o mesmo numero de posições que se foi apagado
Text_Selected_Size = 0}//Mudamos para 0 pois não queremos que fique selecionado um trecho que não existe
_Copy = string_copy(clipboard_get_text(),1,Max_Text-string_length(_Text));//Pega o que esta salvo no seu clipboard e o corta de acordo com o espaço restante na barra
_Text = string_insert(_Copy,_Text,_Cursor+1) //Adicionar copia ao texto na mesma posição do Cursor
_Cursor+= string_length(_Copy)//Adiciona numero casas de acordo com o tamanho do texto colado
exit}//Para o script
//--------------------------------------------Copiando--------------------------------------------------------//
if keyboard_check(vk_control) and keyboard_check(ord('C')){//Checa se Ctrl e C estão sendo precionados
if Text_Selected_Size > 0{//Checa se tem texto selecionado
clipboard_set_text(string_copy(_Text,Text_Pre_Selected+1,Text_Selected_Size));}//Copia trecho selecionado
exit}//Para o script
//-------------------------------------------Escrevendo-------------------------------------------------------//
//Checa se ainda há espaço para escrever e quais caracteres podemos escrever
if (string_length(_Text) < Max_Text) and (keyboard_key>=48 and keyboard_key<=57) or (keyboard_key>=65 and keyboard_key<=90) or (keyboard_key>=97 and keyboard_key<=122){
if Text_Selected_Size > 0{//Checa se tem texto selecionado
_Text = string_delete(_Text,Text_Pre_Selected+1,Text_Selected_Size);//Se tiver texto selecionado o trecho é apagado
if Text_Pre_Selected >= Curso_X{//Checa se o texto foi selecionado da direita para esquerda
_Cursor-= Text_Selected_Size}//salva a nova posição do curso, eleminando o mesmo numero de posições que se foi apagado
Text_Selected_Size = 0}//Mudamos para 0 pois não queremos que fique selecionado um trecho que não existe
_Text = string_insert(keyboard_lastchar,_Text,_Cursor+1) //Adiciona um caracterer de acordo com a posição do cursor
_Cursor+=1;//Atualiza posição do curso
}
Tópicos semelhantes
» como fazer uma barra de texto diferente
» [Engine] Barra de texto (falas) com sprites
» [Tutorial] Caixa de texto com barra de rolagem, sem dll
» [pedido resolvido] Dll ou Script pra caixa de texto com barra de rolagem vertical
» [TUTORIAL] Photoshop- Criando efeitos de texto- 3º) Efeito texto de água
» [Engine] Barra de texto (falas) com sprites
» [Tutorial] Caixa de texto com barra de rolagem, sem dll
» [pedido resolvido] Dll ou Script pra caixa de texto com barra de rolagem vertical
» [TUTORIAL] Photoshop- Criando efeitos de texto- 3º) Efeito texto de água
GMBR :: Ensine & Aprenda :: Exemplos :: Game Maker (engines)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|