Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

romeozanelato

criando uma calculadora

Recommended Posts

opa..

 

sou novato em actionscript e estou criando uma calculadora bem simples para converter polegadas e centrimetros..

 

apos compilar recebo esse erro e o botao nao calcula:

 

erro 1067: Coerção implícita de um valor do tipo %s para um tipo %s não relacionado.

 

segue codigo:

calcular_btn.addEventListener(MouseEvent.CLICK, calcularpolegadas);

function calcularcent(poleg:Number):String {
	return (poleg * 2,54).toFixed(2);
}

function calcularpolegadas(e:MouseEvent):void{
	var cent:Number = pol_txt.text ="";
	cent_txt.text = calcularcent(calcularpolegadas);
}

poderiam me ajudar a entender o que esta errado?

 

desde ja agradeco

 

Romeo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro foi bem simples, a sua função trabalha com váriavéis do tipo Number, e você mandou ela trabalhar com uma Function.

 

Observe:

cent_txt.text = calcularcent(calcularpolegadas);

"calcularpolegadas" é o nome da outra função, e não do número que você quer calcular.

Por isso que dá o seguinte erro:

 

Coerção implícita de um valor do tipo Number para um tipo Function não relacionado.

 

Você deve substituir o "calcularpolegadas" por uma variável do tipo Number, no caso, a variável "cent":

cent_txt.text = calcularcent(cent);

Tem outra coisa, provavelmente você vai se deparar com esse erro:

 

Coerção implícita de um valor do tipo Number para um tipo String não relacionado.

 

A variável "cent" é do tipo Number, o valor atribuído a ela foi uma String. Todo campo de texto recebe uma String, isso quer dizer que o que está escrito nele é uma String, usa-se o parâmetro "seutexto.text" para saber o que está escrito no texto, justamente por isso esse parâmetro tem um valor String.

 

Para isso, você deve converter ele em Number, fazendo o seguinte:

var cent:Number = Number(pol_txt.text) ="";

Mas ainda tem o seguinte, se você converteu o "pol_txt.text" em Number, você não pode atribuir a ele o valor "", que é uma String. Você ainda vai continuar se deparando com o erro citado anteriormente. Basta apenas adicionar uma linha:

var cent:Number = Number(pol_txt.text);
pol_txt.text = "";

CUIDADO: Você deve atribuir o valor em branco (a String que não possui nada dentro: "") para "pol_txt.text" depois de atribuir o valor da variável "cent", pois se você inverter a ordem, a variável "cent" teria de converter "" em número, resultando num erro ou no valor NaN (Not a Number)

 

Código final:

calcular_btn.addEventListener(MouseEvent.CLICK, calcularpolegadas);

function calcularcent(poleg:Number):String {
	return (poleg * 2,54).toFixed(2);
}

function calcularpolegadas(e:MouseEvent):void{
	var cent:Number = Number(pol_txt.text);
        pol_txt.text = "";
	cent_txt.text = calcularcent(cent);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado... perfeita a explicacao... poderia me ajudar em uma outra duvida... se eu precisar pegar o resultado e multiplicar por 0,871575 e no cent_txt mostrar esse resultado junto com o primeiro resultado.. poderia me ajudar com isso?

 

ja consegui fazer... mesmo assim muito obrigado

 


calcular_btn.addEventListener(MouseEvent.CLICK, calcularpolegadas);
function calcularcent(poleg:Number):String {
return (poleg * 2.54 * 0.871).toFixed(2);
}
function calcularcenta(polegad:Number):String {
return (polegad * 2.54 * 0.490).toFixed(2);
}
function calcularpolegadas(e:MouseEvent):void{
var cent:Number = Number(pol_txt.text);
pol_txt.text = "";
larg_txt.text = calcularcent(cent);
alt_txt.text = calcularcenta(cent);
}

 

desde ja agradeco pela ajuda abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.