2009-06-03 4 views
2

AS3에서 스테이지의 마지막 렌더링에 액세스하는 방법이 있습니까? 그 어딘가에 캐시 된 렌더링 결과가 액세스 가능합니까? 특히 너무 비싸기 때문에 스테이지를 직접 비트 맵으로 다시 렌더링 할 수 없습니다. 그래서 마지막 렌더링을 사용하려고합니다.플래시에서 마지막으로 렌더링 된 화면 래스터 가져 오기

화면의 특정 경계 내에서 열 왜곡 효과를 사용하려고하기 때문에이 기능이 필요합니다. 2D에서이를 수행하는 표준 방법은 변위 맵을 사용하여 원래 이미지를 지터 처리하는 것입니다. 물론 Flash에서 열 왜곡을 수행 할 수있는 다른 아이디어에 대해서도 열려 있습니다.

답변

2

나는 정말로 (비록 내가 왜 그런지는 알지 못하지만) 우리는 이것에 접근 할 수 없다고 확신한다. 플래시는 프레임마다 스테이지의 변경 사항 만 다시 그립니다. Flash Debug Player를 마우스 오른쪽 버튼으로 클릭하고 "Redraw Regions 표시"를 선택하면이 사실을 알 수 있습니다.

사람들은 Convolution FilterDisplacement Map Filter으로 무엇을하는지 볼 수 있습니다. 다음은 몇 가지 예는 다음과 같습니다

이 예들은 매우 작은 무대의 크기를 가지고 있지만, 좋은 속도로, 잘 작동하는 것 같다.

1

저는 99.9 %를 확신 할 수 없습니다. 전에는 언급 한 적이 없었습니다. 그래도 훌륭한 기능이 될 것입니다. 죄송합니다. 특히 도움이되지 않습니다.

1

래스터에 액세스 할 수 없지만 해결 방법이 있습니다.

응용 프로그램 Sprite (또는 MovieClip)을 스테이지에 배치하는 대신 응용 프로그램 스프라이트를 비트 맵에 그려 스테이지에 배치하십시오. 이렇게하면 한 번만 렌더링되지만 마지막 렌더링에서 비트 맵에 액세스 할 수 있습니다.

단점은 플래시가 각 프레임 (더러운 사각형뿐만 아니라)의 모든 스프라이트를 렌더링한다는 점입니다.

+0

+1, 나는 두려웠습니다. 불행히도 사전 렌더링은 제 상황 (성능에 민감)에 좋은 옵션이 아닙니다. –

1

Flash Player 10이 필요하지 않은 경우 왜곡하려는 스테이지 또는 DisplayObject에 픽셀 벤더 필터를 부착 할 수 있습니다.

그러나 플래시가 표준 필터와 마찬가지로 커버 아래에 캐시 비트 맵을 만드는 경우 성능은 자체 비트 맵을 만드는 것보다 좋지 않습니다.

관련 문제