2011-12-22 5 views
0

복잡한 애니메이션을 벡터에서 비트 맵으로 변환 중입니다. 애니메이션이 기본 타임 라인에있을 때 비트 맵으로 변환하는 것이 쉽습니다. 그러나 애니메이션 안에 애니메이션이있는 경우 모든 재생 헤드를 재귀 적으로 이동해야하기 때문에 모든 장면이 매우 지저분 해집니다.MovieClip과 그 모든 자식의 재생 헤드 이동

다른 방법이 있나요? 예를 들어, MovieClip의 play 메서드를 실행하면 모든 애니메이션이 제대로 동작하지만 너무 느립니다 (응용 프로그램의 각 프레임마다 하나의 프레임 만 변환 할 수 있음).

+1

복잡한 애니메이션을 벡터에서 비트 맵으로 변환한다는 것은 정확히 무엇을 의미합니까? 어떻게 지내니? 아마 어떤 코드일까요? – annonymously

+0

간단합니다. BitmapData 클래스를 사용하여 애니메이션 된 MovieClip을 스프라이트로 래스터 화합니다. 이것은 게임의 성능을 향상시키는 일반적인 방법입니다. – miguelSantirso

+1

'재생 헤드 이동'이란 무엇입니까? gotoAndStop()? 만약 당신이 각 무비 클립을 살펴보고 각 프레임을 래스터 화한다면, 단점이 프로보다 중요하다고 말할 수 있습니다. 왜 애니메이션을 비트 맵으로 래스터 화해야합니까? 그것들이 많이있는 경우 벡터를 사용하는 것보다 비트 맵을 사용하여 처리하는 데 더 많은 처리 능력이 필요할 것입니다. – annonymously

답변

0

성능을 저장하기 위해 매 프레임마다 무비 클립을 래스터 화해야한다고 생각하지 않습니다. 그것은 단순히 어떤 것도 속도를 낼 수 없습니다. 플래시 렌더러가 이미 무비 클립을 래스터 이미지로 변환하여 화면에 표시 할 수 있으므로 왜 두 번해야합니까?

렌더러가 이미 수행중인 래스터 화는 캐시입니다. 그렇다면 매우 간단합니다.

var mc:MovieClip = new MovieClip(); 
mc.chacheAsBitmap = true; 

이 속성은 DisplayObject에 정의되어 있습니다. 또한 Flash IDE에서이 작업을 수행 할 수 있습니다. 등록 정보> 디스플레이 아래의 확인란입니다.

마지막으로, 동영상 클립이 모든 프레임을 변경하는 경우 비트 맵으로 캐시하면 렌더러가 모든 프레임을 변경 한 이후에 래스터 화해야하기 때문에 성능이 향상되지 않습니다. 무비 클립이 연속 된 여러 프레임에서 동일하면 래스터 화 과정을 피하기 위해 진행하십시오.

+0

래스터 화에는 두 가지 이유가 있습니다. 첫 번째는 게임 플레이 중에 프레임 속도가 일정한 지 확인하는 것입니다. 'cacheAsBitmap' 애트리뷰트를 사용하고 싶지만 기대했던만큼 좋은 결과를 내지 못합니다 (우리는 그 옵션도 테스트했습니다). 두 번째 이유는 대역폭 사용을 줄이는 것입니다. 우리 게임의 래스터 화 된 그래픽은 약 300MB를 차지하지만 게임은 벡터 그래픽을 0.25MB 만 다운로드합니다. – miguelSantirso

+0

당신이 나를 믿지 않을 경우를 대비하여 ... http://www.bytearray.org/?p=290 :) – miguelSantirso

+0

우리는 서로를 오해했습니다. 기사에서 "이 디스플레이 객체를 x 및 y로 이동하는 것 이상의 일을하면 각 프레임마다 Flash Player가 화면을 업데이트하기 전에 메모리에 캐시 된 사본을 업데이트하고 있습니다." 앞서 말한 것처럼 무비 클립이 모든 프레임을 변경하면 비트 맵으로 캐싱해도 성능이 향상되지 않습니다. 이 기사는 의도하지 않은 것을 수행 할 수 없다는 이유로 cacheAsBitmap을 취소합니다. 원하는 기술을 블리 팅 (blitting)이라고합니다. 내 예를 업데이트하겠다. 그 동안 http://www.adobe.com/devnet/flash/articles/blitting_mc를 확인하십시오.html –

관련 문제