2011-10-27 8 views
1

왜 AS3 colorTransform은 모양의 테두리 만 변형시키는 지 알고 싶습니다.ActionScript 3 색상 변형이 테두리 만 변경됨

Similar question 게시되어 있지만 그렇게 할 수있는 엄청난 해결 방법이 필요하다고 생각하지 않습니다.

sh.transform.colorTransform = new ColorTransform(1, 1, 1, 1, red_offset, green_ofs, b_off, 0); 

만 모양의 테두리는 다음과 같은 나는 색상을하지만, 우리가 여기 with(sh.graphics) do을 사용할 수 있습니다 알고

var sh:Shape = new Shape(); 
sh.graphics.lineStyle(4, 0x000000); 
sh.graphics.beginFill(0xFFFF00); 
sh.graphics.drawRect(0, 0, 200, 200); 
sh.graphics.endFill(); 
addChild(sh); 

너희 변환 :

내가 좋아하는 무언가가있다 변형. 필자는 서로 다른 필을 사용하여 개체를 프레임마다 다시 그리려고했지만 성능면에서는 과도한 수준이었습니다. 약 10 개의 3D 비행기가 성능 저하 요인이었습니다.

,하지만 난 정말 내가 스핀 내 동네 짱 - 슈퍼 semi3d - 스피너를 필요로하는 문제를 알고 싶습니다 beginFill()lineStyle()가 설정 한 펜을 사용하지 않고, 그 문제의 원인이 될 수 있기 때문에 내가 아니라 생각할 수

그의 국경이 아니라 색을 바꾸는 동안! :)

미리 감사드립니다.

답변

1

왜 ColorTransform이 선 색에만 영향을 주는지 (단지 설계 결정처럼 보이지만) ColorMatrixFilter은 전체 모양 (테스트 됨)을 변형 할 것입니다. 그것을 두려워하지 마십시오. 아주 간단합니다. 행렬의 처음 네 열은 승수 (1.0은 100 %)이고 결과에 다섯 번째 열이 추가됩니다.

 var sht:Shape = new Shape(); 
     sht.graphics.lineStyle(4, 0x7F7FFF); 
     sht.graphics.beginFill(0xFFFFFF); 
     sht.graphics.drawRect(0, 0, 200, 200); 
     sht.graphics.endFill(); 
     sht.x = 300; 
     sht.y = 100; 
     sht.filters = [ new ColorMatrixFilter(
      [ 0.5, 0.0, 0.0, 0.0, 0.0, 
       0.0, 1.0, 0.0, 0.0, 0.0, 
       0.0, 0.0, 0.7, 0.0, 0.0, 
       0.0, 0.0, 0.0, 1.0, 0.0 
      ])]; 
     addChild(sht); 
+0

큰 감사! 내가 할 수있는 한 빨리 시도 할 것이다. 그런데 ColorMatrixFilter가 훨씬 더 많은 전력을 제공한다면 ColorTransform의 핵심은 무엇입니까? –

+1

ColorTransform은 더 간단하고 빨라야합니다 - 하나의 벡터 곱셈 또는 네 개의 스칼라 곱셈이고, ColorMatrixFilter는 네 개의 벡터 멀 스와 한 개의 덧셈입니다. – alxx