이 주제는 이미 사망 한 것으로 알고 있지만 답변을 찾을 수없는 매우 구체적인 질문이 있습니다.AS3에 애셋, 비트 맵 캐싱 및 비트 맵 변환 포함
내 프로그램에서 수행중인 작업은 여러 가지 모바일 자산을 확장하고 여러 모바일 플랫폼을 지원하기 위해 확장 한 다음 계속 진행하는 것입니다.
나는 비트 맵 캐싱이 모바일 응용 프로그램의 성능을 향상시키는 좋은 방법이라고 읽었습니다. 임베디드 자산과 관련하여, 이는 단순히 임베디드 자산의 단일 인스턴스를 만들고 여러 번 사용하는 행위입니까? 예를 들면 다음과 같습니다.
[Embed(source = "png.png")] private static var img:Class;
private static var data:BitmapData = new img().bitmapData;
private var bmp1:Bitmap = new Bitmap(data); private var bmp2:Bitmap = new Bitmap(data);
"new"키워드를 사용하여 만든 모든 애셋이 메모리에 저장된 이미지의 단일 인스턴스를 참조하고 메모리의 다른 곳에있는 고유 한 복사본을 만들 것이라고 가정합니다.
다음으로 및 cacheAsBitmapMatrix
클래스의 매개 변수는 포함 된 자산을 사용할 때 이러한 속성을 설정합니다.
AS3에서 비트 맵을 확장 할 때 마지막으로, 규모 행렬을 사용하여 BitmapData
을 다시 그려야하는 것이 더는 Bitmap
클래스의 scaleX
및 scaleY
속성을 사용하는 것이 더 효율적이다, 또는인가?
미리 도움을 청하십시오!
비트 맵 정보에 대한 정보를 주셔서 감사합니다. 내일 몇 가지 테스트를 실시 할 예정입니다. 스케일링에 관한 한, 콘텐츠를 스케일링하는 이유는 모바일 장치의 해상도가 달라지기 때문입니다. 원본 텍스처는 640x960 (iPhone4)이지만 다른 해상도의 장치를 포함하여 여러 장치에서 작동하기를 원하기 때문에 장치 창이로드 될 때 그래픽을 확장해야 장치 창에 맞출 수 있습니다. 이유 나는이 방법을 사용하고 있습니다. 왜냐하면 stage.ScaleMode가 나를 위해 작동하지 않는 것처럼 보이기 때문입니다.하지만 아마도 Flixel을 사용했기 때문일 수 있습니다. – Eternalspirit
아 글쎄 -이 경우 Matrix-scaleX/Y를 각 프레임마다 계산해야하기 때문에 비트 맵을 몇 프레임 (즉, 축소하는 애니메이션)으로만 조정해야하지만 유용 할 수 있습니다. 불필요하게 각 프레임을 계산합니다 (한 번만 변경하는 경우). 영구 변환을 원한다면 Matrix를 사용하십시오. 이것이 당신을 혼란스럽게하지 않았 으면 좋겠다. – MickMalone1983
그래, 한 번만 확장 한 다음 항상 확장 된 BitmapData를 사용해야합니다. 매 프레임마다 스케일을 다시 계산할 필요가 없습니다. 왜냐하면 이미지를 항상 스케일링하기를 원하기 때문입니다. – Eternalspirit