Ir para conteúdo

POWERED BY:

Arquivado

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

Jucks

pintar objeto com transparencia

Recommended Posts

Boa noite pessoal.

Estou precisando criar um projetinho que tem uma paleta de cores que pinta umas paredes.

 

Preciso que a tinta da paleta de cor vermelha pinte uma parede de vermelho mas por ser uma parede, a tinta tem que ser um pouco transparente, para a parede nao ficar "chapada".

 

eu fiz um codigo para a tinta:

on(release) {
	_root.cor = 0xA6927A; //Exemplo de cor, nesse caso é vermelho. 0xff0000 é um número, dá pra setar na variável diretamente.
//pinta a ponta do pincel da cor escolhida
	ponta_pincel = new Color(_root.ponteiro_pincel.cor_pincel); 
 	ponta_pincel.setRGB(0xA6927A); 
	}
e outro para a parede:

on(load){
var ultima_cor = -1; //sem cor
}
on(release) {
	if(_root.flagFerramenta == 1){ //pincel
	//muda a cor da parede
	ultima_cor = _root.cor;
	var newColor = new Color(this);
		newColor.setRGB(_root.cor);
	var newTransf = newColor.getTransform();
		newTransf.aa = 40;
		newTransf.ab = 70;
		newColor.setTransform(newTransf);

}else{ 

	var newColor = new Color(this);
		newColor.setRGB(_root.cor);
	var newTransf = newColor.getTransform();
		newTransf.aa = 0;
		newTransf.ab = 0;
		newColor.setTransform(newTransf);
}
}

 

Funciona mas eu gostaria de setar a transparencia na tinta ao inves de na parede.

Alguem sabe como fazer?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você não cria um movieClip transparente em cima da parede, e quem receberá a tinta será ele... ae você trabalha a cor do MovieClip + o _Alpha dele e a parede ficará intacta... acho que conseguirá o efeito desejado.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

Fiz justamente isto.

 

O problema está no SET. No código atual, estou setando a transparencia no MC na parede. Mas eu gostaria de conseguir de setar a transparencia no local que seto a Cor que é um botão.

on(release) {
        _root.cor = 0xA6927A; //Exemplo de cor, nesse caso é vermelho. 0xff0000 é um número, dá pra setar na variável diretamente.
//pinta a ponta do pincel da cor escolhida
        ponta_pincel = new Color(_root.ponteiro_pincel.cor_pincel); 
        ponta_pincel.setRGB(0xA6927A); 
        }

Isso por causa do contraste. Se eu pintar a mesma parede com uma cor escura e uma cor clara, a transparencia é a mesma se eu setar na parede, dando uma sensação estranha em um dos dois casos.

 

Se eu conseguir setar a transparencia no local que seta a cor, poderei ajustar o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso que a tinta da paleta de cor vermelha pinte uma parede de vermelho mas por ser uma parede, a tinta tem que ser um pouco transparente

por essa razao eu aconselhava a usar a cor da tinta normal e depois dependendo das vezes q passar na parede esta se torna cada vez mais opaca.

Fica + realista e faz + sentido, se e' q eu entendi a ideia claro.

Tem algumas formas diferentes de abordar uma aplicacao deste tipo (+ / - complexas), e com esse AS você nao andava muito longe de conseguir isso.

Para nao complicar muito, deixo-lhe aqui um exemplo baseado no seu, q você pode ver se lhe serve ou nao:

 

// variaveis e variacoes
var cor:Number = 0xFF0000;
var alphas:Number = 0;
var quociente:Number = 5;
//
// a cor da ponta do pincel (mc: ponteiro_pincel.cor_pincel)
ponta_pincel = new Color(ponteiro_pincel.cor_pincel); 
ponta_pincel.setRGB(cor); 
//
// a cor da parede (mc: parede)
var cor_da_parede:Color = new Color(parede); 
set_alphas(alphas);
//
// o botao(mc: botao)
botao.onRelease = function(){
	if(alphas <= 100){
		alphas += quociente;
		set_alphas(alphas);
	}
}
//
// funcao executada pelo 'botao'
function set_alphas(n){
	cor_da_parede.setRGB(cor);
	var newTransf:Object = {aa:n};
	cor_da_parede.setTransform(newTransf);
}

Neste exemplo, sempre q você carregar no botao, a parede vai adquirindo gradualmente (quociente) a cor q foi tambem atribuida ao pincel.

Note q no exemplo o AS do botao (instancia:botao) esta' na timeline e nao dentro do botao como você tem.

Se quiser usar como no exemplo nao esqueca de apagar as acoes no botao.

Cump.

Compartilhar este post


Link para o post
Compartilhar em outros sites

// variaveis e variacoes
var cor:Number = 0xFF0000;
var alphas:Number = 0;
var quociente:Number = 5;
//
// a cor da ponta do pincel (mc: ponteiro_pincel.cor_pincel)
ponta_pincel = new Color(ponteiro_pincel.cor_pincel); 
ponta_pincel.setRGB(cor); 
//
// a cor da parede (mc: parede)
var cor_da_parede:Color = new Color(parede); 
set_alphas(alphas);
//
// o botao(mc: botao)
botao.onRelease = function(){
	if(alphas <= 100){
		alphas += quociente;
		set_alphas(alphas);
	}
}
//
// funcao executada pelo 'botao'
function set_alphas(n){
	cor_da_parede.setRGB(cor);
	var newTransf:Object = {aa:n};
	cor_da_parede.setTransform(newTransf);
}

Não entendi como será esta troca gradual.

Seria uma maneira de aumentar a porcentagem (opacidade) a cada clique? É isso?

Não tem como eu definir uma transparencia padrão para cada tipo de cor?

 

Obrigado e abraç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.