Entrar
Últimos assuntos
» player não consegue andarpor 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
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
» [Tutorial] Caixa de texto com barra de rolagem, sem dll
» como fazer uma barra de texto diferente
» [Engine] Barra de texto (falas) com sprites
» [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
» como fazer uma barra de texto diferente
» [Engine] Barra de texto (falas) com sprites
» [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