Anuncios Google

saber pixeles que ocupa un texto

pues eso

hay alguna funcion de luadev que te devuelva el numero de pixeles (ancho i alto) que ocupa un texto para que cree una imagen debajo para que parezca un boton



Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de HappyFlowerPP

E aqui el nuevo codigo

Codigo de creacion de botones

	function math.par(num) -- Par = true Impar = false
		if num%2 == 0 then return true else return false end
	end
function botton.create(texto, colortext, colorboton, botonx, botony, tam) -- Crear boton 
	textx = botonx-2
	texty = botony-2
	var1 = screen.textwidth(texto,tam)
	var2 = (tam-0.5)/0.1+8
	if math.par(var2) == false then var2+1 elseif math.par(var2) == false then end 
	botona = var1+2
	botonh = var2+2
	text = screen.print(colortext, textx, texty, texto, tam) 
	back = image.create(botona, botonh, colorboton)	
	return back , text
end

Codigo de bliteo :

inicio = botton.create("Hola Mundo", negro, blanco, 0, 0, 0.6)
 
while true do 
inicio:blit(0,0)

PD : hay algun error? , esto seria viable?


Imagen de jorge_97

By jorge_97

No te marees ni pierdas el tiempo...

No creo que esa funcione, pero bueno

Ya te dejé en mi comentario un ejemplo fácil que te servirá para aprender.

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de NEKERAFA

Sip...

Primero, revisa esta condición:

if math.par(var2) == false then var2+1 elseif math.par(var2) == false then end

La condición tiene dos condiciones iguales, por lo que es una tontería. Para sumar se debe hacer como var = var + num.

Después, si quieres que el texto se muestre encima del botón, crea antes la imagen y después imprime el texto:

back = image.create(botona, botonh, colorboton)
screen.print(back, textx, texty, texto, tam, colortext)

Acuerdate de cerrar el blucle y de antes de voltear la pantalla para mostrar la pantalla.

Revisa como se imprime el texto, ya que has puesto mal las variables en la función para mostar el botón.

 

Y no sé si hay algo más...


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

No lo sé...

Me parece que si, pero pruebalo en la PSP...

El alto se puede obtener

El alto se puede obtener experimentalmente, imprimiendo el texto en diferentes tamaños, tomando una captura y "midiendo" desde algún programa de edición.

Así, el alto inicia con 8 pixeles para un tamaño de 0.5, y aumenta 2 pixeles por cada aumento de tamaño (10 pix para 0.6, 12 para 0.7 y así sucesivamente).

 

Imagen de HappyFlowerPP

muchas gracias

ya tengo todo lo necesario

Imagen de jorge_97

By Jorge_97

Un minuto después...

 

Os complicais la existencia!!!

 

Lo que yo haria:

 

rojo=color.new(255,0,0)
azul=color.new(0,0,255)
 
 
botones={}
 
botones[1]={x=10,y=10,w=0,h=15,color=rojo,txt="Hola mundo",colortxt=azul,size=1}
--Puedes añadir todos los botenes que te la gana
 
function botonear()
 
for i=1,#botones do
draw.fillrect(botones[i].x,botones[i].y,10+screen.textwidth(botones[i].txt,botones[i].size),botones[i].h,botones[i].color)
screen.print(botones[i].x+5,botones[i].y,botones[i].txt,botones[i].size,botones[i].colortxt,0)
end
 
end
 
 
while true do
 
botonear()
 
screen.flip()
 
end


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de HappyFlowerPP

Es una forma pero no me convence

Pues eso

Pues...

Dejame decirte que pocas variaciones de ese código como base vas a encontrar... =/

Imagen de HappyFlowerPP

lo se pero ya tenco todo lo que necesito

Gracias a esta comunidad

Imagen de NEKERAFA

Mmm...

Para el ancho aplica screen.textwidth(texto, [tamaño]), para el alto no hay nada.

Imagen de HappyFlowerPP

ok

entonces presuponiendo que el tamaño del texto fuera 15 (pixeles) i quisiera crear un boton seria este codigo

function boton.create(texto, colortext, colorboton, botonx, botony, tam)
	textx = botonx-2
	texty = botony-2
	botona = screen.textwidth(texto,tam)
	botonh = 15
	text = screen.print(colortext, textx, texty, texto, tam) 
	back = image.create(botona, botonh, colorboton)	
	while true do
		text:blit(botonx, botony)
		back:blit(botonx, botony)
	end
end

Y para mostrarlo :

inicio = boton.create(inicio, negro, blanco, 0, 0, 0.8)
 
	while true do
		inicio:blit(0,0)
	end

PD : alguien podria decirme si hay un error (en estos momentos no tengo PSP)


Mmmm...

Me temo que hay varios errores ahí:

  • Si pones un while true do en una funcion, y luego fuera otro while true do, no tiene sentido, es más la PSP se quedará bloqueada. Te recomiendo quitar el while true do de la funcion y dejar el de fuera.
  • boton.create es una función que solo crea cosas, es decir no devuelve nada como para hacer: inicio = boton.create...
  • Si no has designado una funcion para blitear el boton, a menos que uses image.blit no va a funcionar.

Te noto algo recien llegado. Te recomiendo leerte los tutos de Chimecho y si ya lo has hecho pues vuelve a echarles una miradita ;D

Un saludo :D


 

 

Imagen de NEKERAFA

No

Puedes poner los bucles que quieras, ya sea un while detro de un for, un for dentro de un while dentro de otr, etc... Sino mira mnkeyboard, en el ejemplo se utilizan fors y whiles de la función dentro de un while.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

¿¿Incluso un bucle infinito

¿¿Incluso un bucle infinito dentro de otro infinito?? Porque yo no puedo...

Imagen de jorge_97

By Jorge_97

Sí... 

es más yo también meto while dentro de otros while o cuando uso tablas el for.

Los bucles para mí tienen fin...

Por ejemplo:

 

function a()
while true do
if condicion then b() end
end
end
 
 
function b()
while true do
if condicion then a() end
end
end
 
 
a()

 

Ahí empiezas en la función a() que tiene un bucle y sin salir de él entras en el bucle de la función b()

 

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Ammms...

Dato curioso, nunca te acostarás sin haber aprendido algo nuevo :D

Imagen de jorge_97

By jorge_97

Y que lo digas ;)

Un saludo

Imagen de HappyFlowerPP

entonces...

Que ago para mostrarlo de la morma mas simplificada (osea crear el boton i despues otra funcion para mostrarlo)

PD : me he leido la documentacion y se que se tiene que poner return pero no se que "retornar"


Imagen de jorge_97

By jorge_97

Disculpame, hoy ando algo cansado y no sé muy bien que intentas...

el return se usa así:

--Creamos una función para que te sirva de ejemplo
function ejemplo()
 
--Generamos unn nº aleatorio entre 1 y 3
numero=math.random(1,3)
 
 
--Devolvemos el numero que ha salido
return numero 
 
end
 
 
 
--Esto mostrará el número salido anteriormente
os.message(ejemplo())
 
--Return se utiliza también para salir de una función


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de HappyFlowerPP

Y si...

Pongo : return buton and text
Lo devolver en ese orden¿

Imagen de Chimecho

Corrección

Creo que sería: return button, text

Si

Si

Imagen de HappyFlowerPP

entonces perfecto

gracias por la ayuda

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.