이제 이 효과를 pv3d에서 사용할 수 있다.
개발자가 do3d(movies/sprites/bitmaps) 와 LightObject3D 를 사용하여 Lens Flares 효과를 사용할 수 있도록 Class 로 생성 되었다.
동작원리
LF 은 실제 3D 포인트에서 2D 효과로 생성되어 진다. 스크린의 가운데와 빛의 투영 각을 알아야 하는데,
각도를 알게 되면, 단지 2D 벡터위에 LF 을 위치시켜주면 된다.
각 Flare 에서 원점으로 부터 빛 사이의 거리에 대해 비율적으로 정의하면된다.
기본적으로 LF Class 에서는 8개의 Flare 를 제공하며 각 순서는 배열의 위치에 대응된다.
Class 사용방법
주 재료는 LensFlare(ViewportLayer) 이며, LightObject3D, 와 Flare 로 사용할 Do3d 배열이다.
그리고 나머지는 viewport 의 넓이와 높이 이며, 이로 인해 스크린영역밖으로는 확장되지 않는다.
lightLayer
는 LF 가 렌더링될 곳이다. 이는 자동적으로 빛의 투영 좌표와 Flare들의 위치를 얻게 된다. flareArray 는
무비클립 배열을 담고 있다. LF Class 는 자동적으로 이런 오브젝트들을 렌더레이어에 추가한다.Flare들의 배열은 아무
Display Object나 사용할 수 있다(MovieClip, Sprite, Shape, or Bitmap)
LF 를 렌더링 하기 위해서는 updateFlare 를 onEnterFrame handler에 써야한다.
updateFlare 의 첫번째 불린 showFlare 는 LF를 보일지 말지를 선택한다.
두번째 testHit Flare 가 DisplayObject 와 만날때 보일지 말지를 선택한다.
몇몇 다른 이야기
LF Class 의 position 배열에서 Flare들의 위치를 변경할 수 있다.
이
는 선택적인 6번째 파라미터로 setFlareArray() 함수로 객체 생성후에 배열을 변경할 수 있다. positions
배열은 flareArray 와 같은 길이를 가지며 Flare DisplayObject 에 연관되어 위치한다. 각각의 설명은
아래와 같다.
- distance : Number - 필수 - Flare를 위치 시키고자 할때 원점으로 부터 빛의 거리 비율이다.
- scale : Number - 필수 - Flare DisplayObject 의 스케일양
- dScale : Number - 중앙으로 부터 떨어진 거리 만큼의 스케일의 양?(the amount of scale to add to the object as it gets further from the center.)
- rotate : Boolean - Flare 의 좌측면이 항상 원점을 향하도록 DisplayObject를 회전할지 말지(whether or not to rotate the DisplayObject to always keep its left side pointing towards the origin.)
- alpha : Number - 외곽에서 서서히 사라지게 할 투명값 0 = 사라지지않음 -> 1=없앰