Ir para conteúdo
Fórum Script Brasil
  • 0

Mudar cor de um botão


Douglas  Zacharias

Pergunta

Fala galera boa!

Esse é o meu primeiro post!

Sou programador e não gosto de ficar trabalhando tanto no visual quanto o flash demanda. Mas trabalho é trabalho...

Bem... depois da apresentação:

Seguinte... a trancos e barrancos vou resolvendo minhas diferenças com o flash. rs

Atualmente travei em uma etapa. Preciso variar a cor de meus botões de acordo com variáveis recebidas do meu arquivo asp. As variáveis estão chegando, já que existem alguns campos de texto que estão recebendo corretamente variaveis asp.

Tenho duas possibilidades para fazer o que quero: Trocar a cor do meu botão (mais daria mais trabalho por ser dois poligonos agrupados e degradês) ou trocar o simbolo.

Criei simbolos das 4 cores que preciso.

Quero que na inicialização do flash o asp seja lido (isso eu consegui fazer! :closedeyes: ) e os meus botões se alterem para o simbolo apropriado.

Simbolo padrão: Tanque

Simbolo cor 1: ATanque

Simbolo cor 2: BTanque

Simbolo cor 3: CTanque

alguém tem alguma idéia?

Não sei se fui sucinto suficiente, mas perguntem se for o caso.

Já agradecendo imensamente a ajuda,

Doug

Editado por Jonathan Queiroz
Não são permitidos títulos em caixa alta (Jonathan)
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá ^_^

Não sei lhe dizer se entendi direito mas você quer fazer uma sobreposição desses seus mcs no mesmo local, portanto suponho que todos tenham o mesmo tamanho(altura,largura);

portanto tudo o que se deve ajustar são as posições X e Y, certo ? Errado;

Vamos criar um mc que será o nosso 'Container' e nesse mc excluiremos e criaremos nossos mcs 'cores';

Como não foi especificado se é AS2 ou AS3 farei nos dois para melhor entendimento;

AS3:

this.stop();

//DECLARAÇÕES

var cond:Number=1;
var bts:Array=new Array('btA','btB','btC','btD');

var btA:A=new A();
var btB:B=new B();
var btC:C=new C();
var btD:D=new D();

//FIM DECLARAÇÕES
//----------------------------------
//CONTAINER
var container:MovieClip = new MovieClip();

container.x=container.y=0;

container.addChild(btA);
container.addChild(btB);
container.addChild(btC);
container.addChild(btD);

stage.addChild(container);

//FIM CONTAINER
//----------------------------------
//FUNÇÕES

function mudaCor(num:uint) {

    var dspObj:DisplayObject=container.getChildAt(num);
    dspObj.visible=true;

}



function Visible() {

    var dspObj:DisplayObject;

    for (var i:uint=0; i<bts.length; i++) {

        dspObj=container.getChildAt(i);
        dspObj.visible=false;

    }

}

//FIM FUNÇÕES
//----------------------------------
//INIT
Visible();//visible false pra todo mundo :)
mudaCor(cond); //o botão vai de acordo com o valor da variavel cond que seria o que você precisa imagino
não sei se é o melhor código póssivel porém foi um jeito fácil de resolver :) caso você faça mais cores ou possibilidades de Status, é so você adicionar na variavel 'bts'; para não ter de ficar criando e excluindo objetos eu deixei apenas duas funções, uma que apaga todo mundo e outra que seta o visible do objeto certo; a função muda cor poderia verificar uma variável que continha o nome do atual objeto, deletaria esse objeto e criaria um novo objeto 'cor' para ser colocado em seu container...porém muita coisa pra pouca aplicação.... AS2:
_root.stop();

//DECLARAÇÕES

var cond:Number=1;
var bts:Array=new Array('btA','btB','btC','btD');
var reference:Array = new Array('A','B','C','D');

_root.createEmptyMovieClip('container',0);

//FIM DECLARAÇÕES
//----------------------------------
//FUNÇÕES


function mudaCor(num:Number) {

    _root.container.attachMovie(reference[num],bts[num],this.getNextHighestDepth());

}
//FIM FUNÇÕES
//----------------------------------
//INIT

mudaCor(0);

também é so adicionar nas arrays o nome do mc que se encontra na bibilioteca(array reference) e o nome que deseja dar ao mc na array 'bts' :)

Bom apenas resolvi o problema imagino, não lhe dei a melhor solução, apenas apontei um caminho para que você possa mais tarde desenvolver suas aplicações ;

Espero ter ajudado

Abraços

Pooh

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Estou usando AS2.

Não consegui linkar exatamente o meu problema com a sua idéia.

Vou tentar explicar melhor.

É o seguinte:

Tenho 20 botões animados no flash.

Quando abro ele lê um arquivo .asp e retorna o status para cada botão. tipo:

bt1=verde&bt2=amarelo&bt3=azul

até aí tranquilo. Eu faço um stop no frame 1 e carrego as variáveis:

stop();

loadVariables("processamento.asp", "_root", "POST");

as variáveis estão chegando belezinha, mas para teste eu não estou puxando do asp. estou declarando as variaveis.

esses meus 20 botões estão com seus nomes como bt1, bt2, bt3 e assim por diante. já os meus "symbols" estão como sb1, sb2, sb3 e sb4 (são quatro status possíveis).

preciso de algo como:

mudar-symbol.botao-bt1.para-sb4.

Cada botão recebe um status, podendo cada um receber qualquer desses 4 status.

Pelo que entendi, esse codigo alteraria todos os meus botões ao mesmo tempo (TB LI QUE EU NÃO HAVIA MENCIONADO A NECESSIDADE DE STATUS INDIVIDUAL POR BOTÃO :/. Malzzzz)

Link para o comentário
Compartilhar em outros sites

  • 0

não faz mal ^^

estendamos :D

Referenciar o mc desejado por String:

_root.stop();

//DECLARAÇÕES

var cond:Number=1;
var bts:Array=new Array('btA','btB','btC','btD');
var reference:Array = new Array('A','B','C','D');

_root.createEmptyMovieClip('container',0);

//FIM DECLARAÇÕES
//----------------------------------
//FUNÇÕES

function mudaCor(mc:String,num:Number) {

    _root[mc].attachMovie(reference[num],bts[num],this.getNextHighestDepth());

}

//FIM FUNÇÕES
//----------------------------------
//INIT

mudaCor("container",0);
Referenciar o mc desejado por MovieClip:
_root.stop();

//DECLARAÇÕES

var cond:Number=1;
var bts:Array=new Array('btA','btB','btC','btD');
var reference:Array = new Array('A','B','C','D');

_root.createEmptyMovieClip('container',0);

//FIM DECLARAÇÕES
//----------------------------------
//FUNÇÕES


function mudaCor(mc:MovieClip,num:Number) {

    _root.mc.attachMovie(reference[num],bts[num],this.getNextHighestDepth());

}

//FIM FUNÇÕES
//----------------------------------
//INIT

mudaCor(container,0);
Referenciar o mc desejado por Number:
_root.stop();

//DECLARAÇÕES

var cond:Number=1;
var bts:Array=new Array('btA','btB','btC','btD');
var reference:Array = new Array('A','B','C','D');

_root.createEmptyMovieClip('bt1',0);

//FIM DECLARAÇÕES
//----------------------------------
//FUNÇÕES

function mudaCor(mcNum:Number,num:Number) {

    _root['bt'+mcNum].attachMovie(reference[num],bts[num],this.getNextHighestDepth());

}

//FIM FUNÇÕES
//----------------------------------
//INIT

mudaCor(1,0);

Resumindo nosso código, nomeei seus 4 estados como 'btA' 'btB' etc...

A array 'A','B' etc... singifica o nome dos seus 'status' na biblioteca, no meu caso fiz 4 movieClips e nomeei de A a D é so substituir :)

usei um unico botão em 2 exemplos chamado container e no terceiro como 'bt1' para usar a numeração;

Temos ai 3 chamadas, uma pelo nome 'bt1','bt2'... outra pelo objeto MovieClip bt1, bt2 (sem aspas o que significa um objeto) e uma chamada pelo numero já que vocÇe disse serem botões numerados em ordem crescente de 1~20 :) o que faria ser ['bt'+Numero] ^_^

Espero que tenha ficado legível e compreensível

Qualquer dúvida é so voltar

Abraços

Pooh !

Editado por Pooh
Link para o comentário
Compartilhar em outros sites

  • 0

valeu meu brother!

seguinte... ainda não consegui, rs... mas com a sua ajuda to chegando lá.

coloquei o seu código, substitui as arrays 'A','B','C','D' pelos nome dos meus symbols aqui só que não funciona.

se invés de atachar eu carregar um mc externo funciona, mas pra symbol interno não funciona...

O código que eu usei:

_root.stop();

//DECLARAÇÕES

var cond:Number=1;

var bts:Array=new Array('btA','btB','btC','btD');

var reference:Array = new Array('sb1','sb2','sb3','sb4');

_root.createEmptyMovieClip('container',0);

//FIM DECLARAÇÕES

//----------------------------------

//FUNÇÕES

function mudaCor(mc:MovieClip,num:Number) {

_root.mc.attachMovie(reference[num],bts[num],this.getNextHighestDepth()); // ESSE ATTACH MOVIE não funciona

//mc.loadMovie("brasil-3d.swf") // ESSE LOADMOVIE FUNCIONA PERFEITAMENTE

}

//FIM FUNÇÕES

//----------------------------------

//INIT

mudaCor(container,0);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...