2015-02-01 4 views
0

학교 프로젝트 용으로 AS3에서 게임을 만들고 있습니다 (AIR API 사용). 나는 AS3에서 1 년 동안의 경험이 있기 때문에 나는 능숙하지만 전문가는 아니라고 말할 것이다. 어쨌든, 나는 AS3에서 스프라이트 애니메이션을 시도한 적이 없으며 접근 방법을 잘 모릅니다.AS3에서 애니메이션을 만드는 방법은 무엇입니까?

애니메이션의 각 프레임을 표시하기 위해 비트 맵 목록을 만들고 addChild() 및 removeChild()를 호출하면 이러한 함수가 매우 효율적이지 않기 때문에 프레임 속도에 영향을 미칩니다 (이전에 시도해 본 결과, 한 번에 너무 많은 애니메이션이 나오면 프레임 속도를 조정하십시오.) 또한 BitmapData 객체 목록을 만들고 비트 맵을 표시 목록에 추가 한 다음 각 프레임마다 다른 BitmapData를 가리키는 방법을 시도해 보았습니다. 그러나이 방법은 전혀 작동하지 않습니다.

그래서 가장 좋은 방법은 무엇입니까? 예를 들어, XNA에서는 스프라이트 배치를 사용하여 화면에 그려주는 스프라이트 클래스를 만든 다음 스프라이트 객체의 목록을 만들어 애니메이션을 생성하기 위해 순환시킵니다. actionscript에서 비슷한 결과를 얻을 수있는 방법이 있습니까?

+1

하나의 비트 맵을 사용하여 BitmapDatas를 순환하는 것에 대해 작동하지 않은 것은 무엇입니까? AS3을 한 지 오래되었지만 그런 식으로하지 않는 이유는 분명하지 않습니다. – 31eee384

+1

@ 31eee384 분명히 그는 그 비트 맵이나 그 비트 맵의 ​​부모 중 하나에 대해 사실로 'cacheAsBitmap'을 설정했습니다.이 비트 맵 기반 애니메이션은 나사산을 기반으로합니다. – Vesper

+0

@ 31eee384 실제로 작동시킬 수있는 방법을 찾았습니다. 속성을 변경하기 전에 비트 맵 개체를 만든 직후에 비트 맵 데이터를 설정해야했습니다. – android927

답변

1

첫 번째 (간단한) 방법 : 멀티 프레임 MovieClip을 애니메이션으로 사용할 수 있습니다. 각 프레임에 이미지를 넣고 스테이지에 MovieClip을 놓으십시오. play(), stop(), gotoAndPlay(), gotoAndStop()을 사용하여이 애니메이션을 제어 할 수 있습니다. 그것은 일반적인 플랫폼 게임에 대한 많은 문제없이 작동 할 것입니다 (나는 오래 전에 그것을했습니다).

두 번째 (고급) 방법 : 비트 맵 블리 팅을 사용합니다. 각 애니메이션에 대해 애니메이션의 각 프레임을 포함하는 비트 맵 이미지를 만듭니다. 이 이미지를 현재 애니메이션 객체에 픽셀을 복사하는 소스로 사용하십시오. 현재 프레임에 해당하는 소스 비트 맵 내부의 특정 사각형 영역을 복사하면됩니다. destinationBitmapData는 당신이 블리트하고 당신의 "캔버스"인 경우

는 실제 블록 전송 여기

destinationBitmapData.copyPixels(sourceBitmapData, areaRectangle, destinationPoint); 

발생; sourceBitmapData는 모든 애니메이션 프레임을 포함하는 소스 이미지입니다. areaRectangle는, 복사하는 영역을 정의하는 소스 이미지 내의 Rectangle입니다. destinationPoint는 캔버스의 복사 영역의 왼쪽 위 좌표입니다.

대상 캔버스는 작은 개체 (예 : 주위를 움직이는 게임 캐릭터)이거나 모든 개체가있는 전체 게임 화면 일 수 있습니다. 나는. 블리 팅을하지 않고 각 객체를 따로 따로 추가하는 대신 하나의 커다란 캔버스를 가지고 필요한 부분을 직접 블릿 할 수 있습니다.

즉, 블리 팅을 사용하는 다양한 기성 엔진과 2D 스프라이트의 3D 가속과 같은 고급 기술이 이미 있습니다.

그들 중 하나는 Starling입니다.

+0

첫 번째 해결책은 순수한 액션 스크립트를 사용하여 flashdevelop에서 작업하고 있으므로 플래시를 사용하여 아무 것도 할 수 없습니다. 두 번째 해결책이 효과가있을 수 있으므로 아마도 시도해 보겠습니다. starling에 관해서는 좋은 소식을 들었지만, 이미 며칠간이 프로젝트에 참여하고 있으며 지금 당장 모든 것을 바꿀 여력이 없습니다. – android927

+0

저는 FlashDevelop도 사용합니다. 그러나 플래시 IDE에 필요한 모든 영화 클립을 만든 다음 FD 프로젝트에 포함 할 SWC 라이브러리로 게시하십시오.Flash에는 코드가없고 그래픽 만 있습니다. –

관련 문제