Ir para conteúdo

POWERED BY:

Arquivado

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

triplo x

cáculo e gráfico no flash

Recommended Posts

Fala Galera !!!!!!

 

Bom tô precisando da ajuda de vocês. Tô fazendo um trabalho de apresentação no curso e o pessoal tava querendo fazer algo parecido com o excel.

 

Exemplo:

 

A um campo para inserir os dados, todas as vezes que fosse inserido um dado, fosse somando com o valor anterior (até aqui é simples, acho, ) , mas o valor somado (total) fosse passando para um gráfico, ou seja, quando eu digitasse um valor, fosse somado e alterando o gráfico. Eu já vi isso em algum lugar mas não me lembro onde foi.

 

Se alguém puder me ajudar nesse trabalho

 

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pra calcular eu achei este Tutorial, até que é bem simples de fazer, mas ocorreu alguns problemas que eu não consegui resolver, como por exemplo calcular números decimais (2,50 + 2,25; etc...)

 

e como não manjo, não consigo fazer com que o resultado final se transforma em um gráfico de barras

 

Se alguém puder me dar uma luz sobre está questão ficarei grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o que você deve estar errando ao somar, é fazer a conta com o número no padrão brasileiro (com virgula) sendo que no padrão americano o divisor de decimal é o ponto.

 

A respeito do gráfico de barras, tenta fazer alguma coisa assim:

 

Cria um movie-clip retangular e coloca o centro dele na parte de baixo e chama ele, por exemplo, de barra.

 

Ai você brinca com a propriedade _height.

 

por exemplo, se eu tiver um campo input com variável chamada "entrada", um MC com o nome "barra" e colocar esse código no frame 1 da animação, a barra redimenciona dinamicamente de acordo com o valor da variável entrada.

 

barra.onEnterFrame = function() {	this._height =  _root.entrada;}

lembrando que o que essa função faz é setar a propriedade _height (altura) do MC barra com o valor do campo entrada. Como o valor de _height indica quantos pixels a altura deve ter, se você fizer com que o campo entrada tenha 10000, zoa o gráfico. O importante é fazer um esquema com que a barra seja redimencionada relativamente.

 

Alguma coisa assim:

 

var pixelsmaximo:Number = 100;// compara os valores dos campos e pega o maiorvar maior = <valor maior campo>barra1.valor = (valor1/maior)*pixelsmaximo;barra2.valor = (valor2/maior)*pixelsmaximo;barra3.valor = (valor3/maior)*pixelsmaximo;barra1.onEnterFrame = function() {	this._height =  valor;}barra2.onEnterFrame = function() {	this._height =  valor;}barra3.onEnterFrame = function() {	this._height =  valor;}

Percebemos que se eu seto o valor máximo sendo o maior valor que as barras devem representar, quando eu faço a conta valor/maior, no máximo, essa divisão irá dar 1 e, multiplicado pelo pixelsmaximo, dará o maior valor que a propriedade _height pode assumir, segundo minha vontade.

 

Acho que essa idéia já te dá um rumo pra dar uma pesquisada...

 

Faz uns testes ai

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Sensacional http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Eu estava digitando os valores decimais errados mesmo. Quanto ao seu código eu consegui fazer apenas com uma barra, mas tive que modificar para

var pixel = 700;var maior = 2000barra.onEnterFrame = function(){	this._height = _root.resultado*pixel/maior;}
Funcionou legal

mas eu quis inserir mais barras, ai desandou e não deu certo mais.

 

Queria entender certas partes do seu código, ai talvez eu consiga fazer um esquema com mais barras.

 

var maior = <valor maior campo>
Este valor maior seria o número final que eu quero chegar??? (No caso que eu fiz eu coloquei 2.000)

 

barra1.valor = (valor1/maior)*pixelsmaximo;barra2.valor = (valor2/maior)*pixelsmaximo;barra3.valor = (valor3/maior)*pixelsmaximo;
"barra1, barra2 e barra3, seria o movieclip "barra" instanciado de 1,2,3, correto????

estes valores denominados valor1, valor2, valor3 o que seria ? Eu teria que colocar algum número ai, ou ele pegaria de alguma variável?

 

 

Acho que se eu conseguir entender o código talvez eu consiga fazer com que o meu valor final se divida em 3 barras, uma indicando 500, outra 900 e a última 600.

 

Se puder me ajudar a entender fico grato , mas de qualquer forma já me ajudou bastante, vou ver se consigo fazer com que a barra cresça com motion tween, será que tem jeito.

 

Valeu

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

var maior = <valor maior campo>
Este valor maior seria o número final que eu quero chegar???

R: Sim. Este é o valor do maior valor que seu número pode chegar.

 

barra1.valor = (valor1/maior)*pixelsmaximo;barra2.valor = (valor2/maior)*pixelsmaximo;barra3.valor = (valor3/maior)*pixelsmaximo;
"barra1, barra2 e barra3, seria o movieclip "barra" instanciado de 1,2,3, correto????

R: Exatamente isso! :-)

 

estes valores denominados valor1, valor2, valor3 o que seria ? Eu teria que colocar algum número ai, ou ele pegaria de alguma variável?

R: O que eu entendi que você quer fazer é um gráfico de barras com vários valores. Esse valor1, valor2 e valor3 seriam os números que as barras representariam.

Por exemplo: um gráfico de entradas e saidas de uma empresa.

Seriam vários valores de entrada e vários valores de saída que, somados, iriam formar 2 barras.

Esses valores seriam o "valor1" e o "valor2". Exemplificando com números, seria:

3 entradas: R$ 150,00; R$ 200,00; R$ 100,00.

2 saidas: R$ 50,00; R$100,00.

 

O valor total somado seria:

 

var entradas = 150.00+200.00+100.00; //poderia pegar esses valores de variáveis.

var saidas = 50.00+100.00; //idem.

 

ai fariamos isso:

 

barra1.valor = (entradas/maior)*pixelsmaximo;barra2.valor = (saidas/maior)*pixelsmaximo;

Se puder me ajudar a entender fico grato , mas de qualquer forma já me ajudou bastante, vou ver se consigo fazer com que a barra cresça com motion tween, será que tem jeito.

R: é possivel sim!

 

olha esse tópico:

http://forum.imasters.com.br/index.php?showtopic=171588

 

tira umas idéias

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo Ludoman http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

O que eu que é fazer o seguinte:

 

Vou somando valores (o máximo será 2000), então eu quero que ocorra o seguinte quando o resultado (e a barra1) chegar no valor de 500, acione a barra2. Ou seja a barra1 ficaria completa com 500, e a barra2 começaria a crescer seguindo o resultado somado, Por exemplo

 

resultado = 500 ==> barra1 estaria cheia

resultado = 501 ==> barra1 permaneceria cheia, e a barra2 ficaria cheia o correspondente a 1

 

Eu pensei em fazer assim

 

var pixel = 700;var maior = 2000if (_root.resultado<=500){barra.onEnterFrame = function(){	this._height = _root.resultado*pixel/maior;}}else{barra2.onEnterFrame = function(){	this._height = _root.resultado*pixel/maior;}}
Não sei se é correto isso ai . de qualquer forma não rolou, ela preenche a a barra1 inteira http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Quanto ao motion tween, eu uso o Flash Mx, e vi um dia que o 'import tween' é só no Mx 2004, então pra mim melou. Achei um código de movieclip que é bem legal e não precisa importar, alterei mas ele move a barra inteira e não só pra cima como eu queria, e eu infelizmente não consegui modoficar corretamente.

 

Olha o códico ( eu instanciei o MC de barra)

MovieClip.prototype.posuf = function(spid,Ydest) {		this.spid = spid;		this.Ydest = Ydest;		this.onEnterFrame = function() {				this._y += (Ydest-this._y)/spid;				if (Math.abs(Ydest-this._y)<0.5) {						delete (this.onEnterFrame);				}		};};// chamando o MCbarra.posuf(10,250);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o melhor esquema é fazer com que, quando o número for maior que 500, comece a aumentar uma outra variável.

 

A função onEnterFrame fica sendo executada eternamente. Por isso que, quando alterarmos o valor da variável, o movieclip muda sozinho...

 

O que acredito ser o método mais prático seria fazer dessa forma:

var pixel = 700;var maior = 2000if (resultado <= 500) {  resultado1 = resultado;} else if (resultado > 500 && <=1000) {  resultado1 = 500;  resultado2 = resultado -500;} else if (resultado > 1000 && <=1500) {  resultado1 = 500;  resultado2 = 500;  resultado3 = resultado-1000;} else if (resultado > 1500 && <=2000) {  resultado1 = 500;  resultado2 = 500;  resultado3 = 500;  resultado4 = resultado-1500;}barra.onEnterFrame = function(){	this._height = _root.resultado1*pixel/maior;}barra2.onEnterFrame = function(){	this._height = _root.resultado2*pixel/maior;}

Depois que eu reli esse código, achei ele meio extranho... deve funcionar, mas não gotei dessa sequencia de if´s e else if´s....

 

Deve ter um outro esquema melhor, mas não to conseguindo pensar nada agora (cansado do trampo)

 

se eu pensar algo melhor eu posto aqui.

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô cara valeu pelo esforço, mas o código não funcionou dá esse erro

 

Cena=Cena 1, Camada=AS barra, Quadro=1: Linha 12: O operador '&&' deve ser seguido de um operando

} else if (_root.resultado > 500 && <=1000) {

 

Cena=Cena 1, Camada=AS barra, Quadro=1: Linha 15: O operador '&&' deve ser seguido de um operando

} else if (_root.resultado > 1000 && <=1500) {

 

Cena=Cena 1, Camada=AS barra, Quadro=1: Linha 19: O operador '&&' deve ser seguido de um operando

} else if (_root.resultado > 1500 && <=2000) {

Eu coloquei ' ', mas mesmo assim não rolou.

 

Mas mesmo assim agradeço o teu esforço e a sua atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falha nossa... ehehehehe

 

Arruma todas as linhas desse jeito:

 

... if (_root.resultado > 500 && _root.resultado <=1000) { ...

 

Nossa... eu devia estar dormindo quando escrevi essas linhas.... hehehehe

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ludoman arrumei como você falou, o erro saiu mas não funcionou.

Talvez eu faça só com um gráfico mesmo, sei lá. Mas de qualquer forma agradeço pela força que me deu.

Valeu pela atenção

 

Não sei se poderá me ajudar , devido ao abuso. É o seguinte como estarei somando valores, preciso que o resultado seja exibido em formato moeda. Eu tenho um código, mas ele tá dando pau. O primeiro valor ele aparece legal no formato moeda, mas quando somo outro valor ele não soma e sim coloca outo valor.

 

Ex.

1.190 + 10 ====> aparecece 1.200 (correto)

ai eu somo 1.200 + 100 ====> aparece 1.200 1.300

 

on (release, keyPress "<Enter>") {	num = String(numb).split(".");	if (num.length==2) {		commanum = "."+num[1];	}	if (length(num[0])>3) {		commanum = String(num[0]).substr(length(num[0])-3, 3)+commanum;		for (digit=length(num[0])-6; digit>=0; digit=digit-3) {			commanum = String(num[0]).substr(digit, 3)+","+commanum;		}		if (digit>-3) {			commanum = String(num[0]).substr(0, digit+3)+","+commanum;		}	} else {		commanum = num[0]+commanum;	}}
Explicando : numb é a caixa de texto de entrada do número que deverá ser formatado ( vinculei ao meu resultado) e commanum é onde o número é apresentado já com o formato. Esta ação coloquei no botão onde uso pra somar.

 

 

Bom, obrigado Ludoman pela ajuda até agora e se puderem me auxiliar neste quesito eu ficarei agradecido.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que você não está somando números e sim Strings.

No flash, o + serve para soma e para ajuntar Strings, mesmo que essas Strings (texto), sejam números.

Eu acho que o esquema é você trabalhar com 2 variáveis: uma com a soma do número como número mesmo (Number(xxxxx) ) e outra com o número formatado como String.

 

Mais ou menos assim:

 

//esta action vai no framevar num = 0;//esta action vai no botãoon (release, keyPress "<Enter>") {	numero += Number(numb);	num = String(numero).split(".");	if (num.length==2) {		commanum = "."+num[1];	}	if (length(num[0])>3) {		commanum = String(num[0]).substr(length(num[0])-3, 3)+commanum;		for (digit=length(num[0])-6; digit>=0; digit=digit-3) {			commanum = String(num[0]).substr(digit, 3)+","+commanum;		}		if (digit>-3) {			commanum = String(num[0]).substr(0, digit+3)+","+commanum;		}	} else {		commanum = num[0]+commanum;	}}

Não testei pra ver se funciona... Mas com certeza o problema de não somar é esse de estar trabalhando com String.

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala pessoal, aqui estou novamente. http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Seguindo a ajuda do amigo Ludoman, eu fiz um grafico de barras gerado por dados somados em um campo de entrada, até ai tudo bem. Mas eu tentei formatar o número gerado em soma, para formatação em moeda, ai o próprio Ludoman, me auxiliou dizendo que isso era Strings e o + junta as strings e não as soma.

Alguém sabe se tem como transformar Strings para Number e assim somar os valores e depois transformar novamente para Strings, para aparecer o formato moeda ? Eu já usei a busca, google, bola de cristal, chaverinho da sorte, mas não encontro nada relacionado.

Grato pela atenção

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.