문제

AS1 응용 프로그램 에서이 작업을 수행 할 수 없습니다. Color.SetTransform 메소드를 사용하고 있습니다.

다음 객체 생성이 색상을 흰색으로 변환해야한다고 생각하는 것이 맞습니까?

var acolortransform = {ra : 100, rb : 255, ga : 100, gb : 255, ba : 100, bb : 255, aa : 100, ab : 255};

그리고 이것은 검은 색으로?

acolortransform = {ra : 100, rb : -255, ga : 100, gb : -255, ba : 100, bb : -255, aa : 100, ab : -255};

일부 웹 사이트에서 SetRGB 또는 SetTransform을 호출하면 작업을 수행하는 객체에 동적 동작이있을 때 실제로 디스플레이 색상이 변경되지 않을 수 있습니다. 이러한 상황에 대해 더 알고 있습니까? 그리고 모든 상황에서 색상을 변경하는 방법은 무엇입니까?

문안 인사.

도움이 되었습니까?

해결책

내가 무엇이든해야했기 때문에 오랜 시간이 지났는데 AS1이지만 최선을 다하겠습니다.

color.settransform ()의 기본 코드는 다음과 같습니다.

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);

... 여기서 MC는 어딘가에 무대에서 movieclip입니다.

당신이 묻는다는 것을 기억하십시오 변환, 그 본질적으로 색상을 변형시키기위한 것 ~에서 그들이 무엇인지 에게 다른 것. 특정 색상 (예 : 검은 색 또는 흰색)으로 안정적으로 페인트를 원한다면 일반적으로 SetRGB를 사용하는 것이 훨씬 좋습니다.

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

이들은 안정적으로 작동하지만 일부 gotchas가있을 수 있습니다. 일반적으로 색상이 특정 movieclip에 첨부되어 있음을 기억하십시오 ... 따라서 해당 MovieClip이 범위에서 벗어나면 (즉, 타임 라인에서 사라지면) 색상이 삭제됩니다.


색상 변환을 더 잘 이해하려는 경우에만 추가로 읽으십시오.

그 색상 변환의 구성 요소를 살펴 보겠습니다.

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

g       ga                       gb

b       ba                       bb

a       aa                       bb

4 개의 채널 (R, G, B 및 A)이 있습니다. 처음 세 개는 빨간색, 녹색 및 파란색이며 마지막 세 개는 알파 (투명성)입니다. 각 채널에는 'A'구성 요소와 'B'구성 요소가 있으므로 RA, RB, GA, GB 등이 있습니다. 'A'구성 요소는 백분율 승수입니다. 즉, 기존 채널에 해당 값의 백분율을 곱합니다. 'B'구성 요소는 오프셋입니다. 따라서 'RA'는 기존의 빨간색 채널을 곱합니다. 'RB'는 그것을 상쇄합니다. 빨간색 채널이 'FF'(빨간색으로 가득 차)로 시작하면 RA : 100을 설정하면 FF를 100% 곱하면 아무런 변화가 없습니다. 마찬가지로, 빨간색이 '00'에서 시작되면 (빨간색이 전혀 없음) 'ra'의 가치는 아무런 영향을 미치지 않습니다. 그 사이의 것들은 당신이 예상 한대로 곱할 것입니다.

곱셈 후 오프셋이 추가됩니다. 따라서 일부 값을 곱한 다음 상쇄 할 수 있습니다.

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

예 : RR = 128 (HEX 0x80), RA = 50 (50% 또는 .5), RB = -20

결과 빨간색 채널 : (128 * .5) + (-20) = 44 (Hex 0x2c)

솔직히 말해서,이 모든 것이 너무 혼란스러워서 나는 변형을 피하는 단순한 정신을 선호하고 훨씬 더 간단한 setrgb ()와 함께갑니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top