Pergunta

Eu não posso chegar a este trabalho no meu aplicativo AS1. Eu estou usando o método Color.setTransform.

Am I correto em pensar o seguinte criação do objeto deve resultar na transformação de uma cor para branco?

var AColorTransform = {RA: 100, rb: 255, ga: 100, GB: 255, ba: 100, bb: 255, aa: 100, AB: 255};

E este ao preto?

= AColorTransform {RA: 100, rb: -255, GA: 100, GB: -255, ba: 100, bb: -255, aa: 100, ab: -255};

Eu li em alguns sites que chamar setRGB ou setTransform pode não resultar em realmente mudando a cor do visor quando o objeto que você está executando a operação on tem algum tipo de comportamento dinâmico. Alguém sabe mais sobre estas situações? E como para mudar a cor em todas as circunstâncias?

Cumprimentos.

Foi útil?

Solução

Já faz muito tempo desde que eu tinha que fazer alguma coisa é AS1, mas vou fazer o meu melhor.

O código básico para um Color.setTransform () se parece com isso ...

var AColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:255};
var myColor = new Color(mc);
myColor.setTransform(AColorTransform);

... onde mc é um MovieClip no lugar palco.

Lembre-se que você está perguntando sobre Transform , que por sua natureza se destina a transformar cores de o que são para outra coisa. Se você quer pintar de forma confiável em uma cor específica (como preto ou branco), você é geralmente muito melhor fora de usar setRGB, que ficaria assim:

var myColor = new Color(mc);
//set to black
myColor.setRGB(0x000000);
//or set to white
myColor.setRGB(0xFFFFFF);

Estes trabalhos de forma confiável, embora possa haver algumas armadilhas. Geralmente, basta lembrar que a cor é anexado ao específica MovieClip ... então se que MovieClip cai fora do âmbito de aplicação (ou seja, ele desaparece da linha do tempo) a sua cor será eliminado com ele.


Leia mais só se você quiser entender transformação de cor melhor:

Vamos olhar os componentes dessa transformação de cor.

    a (multiplier 0 > 100%)   b(offset -255 > 255)
r       ra                       rb

g       ga                       gb

b       ba                       bb

a       aa                       bb

Existem quatro canais (r, g, b, bem como a). Os três primeiros são para vermelho, verde e azul, ea última para alfa (transparência). Cada canal tem um 'a' componente e um componente de 'b', assim, Ra, Rb, GA, GB, etc. O 'um' componente é uma percentagem multiplicador. Ou seja, ele vai multiplicar qualquer canal existente pela cento nesse valor. O componente 'b' é um deslocamento. Então multiplica Rá o canal vermelho existente. offsets 'rb-lo'. Se o seu canal começa vermelhos como 'FF' (full no vermelho), definindo ra: 100 não terá nenhum efeito, dado que a multiplicação FF por 100% não resulta em alteração. Da mesma forma, se começa vermelhos no '00' (sem vermelho em tudo), nenhum valor de 'ra' terá qualquer efeito, uma vez que (se você se lembrar de suas Shakespeare) duas vezes nada ainda não é nada. Coisas nas entrelinhas irá multiplicar como você esperaria.

Os deslocamentos são adicionados após multiplicação. Assim, você pode multiplicar por algum valor, então compensá-la:

r (result red color) = (RR * ra%) + rb
g (result green color) = (GG * ga%) + gb
b (result blue color) = (BB * ba%) + bb
a (result alpha) = (AA * aa%) + ab

exemplo: RR = 128 (hex 0x80), ra = 50 (50% ou 0,5), RB = -20

resultante canal vermelho: (128 * 0,5) + (-20) = 44 (hex 0x2C)

Francamente, isso tudo fica tão confuso que eu tendem a preferir a sanidade simples de evitar transforma completamente e ir com o setRGB muito mais simples ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top