2014-03-28 3 views
1

iPad 용 Flash에서 고해상도 일러스트레이션으로 응용 프로그램을 개발 중입니다. 어떤 경우에는 화면의 한쪽에서 다른쪽으로 큰 이미지를 이동해야합니다 (간단한 이동 애니메이션). iPad 4에서 내 앱을 실행하면 애니메이션이 원활 해집니다. iPad 2에서 동일한 앱을 실행하면 이미지가 이동하는 데 큰 어려움을 겪습니다. 앱이 실제로 느려집니다. iPad 2 성능 문제 Adobe Air

나의 현재 어도비 에어 옵션

은 다음과 같습니다 모드를 렌더링 : GPU 해상도 : 높은 단계 품질 :

다른 아이 패드 장치에 이러한 설정을 적용 할 수있는 방법이 있나요 고? 아니면 다른 제안이 있습니까? 감사합니다.

+0

이미지 이동에 대한 코드를 표시하십시오. – Craig

+0

어떤 프레임 속도를 사용하고 있습니까? 기본 24fps는 일반적으로 저해상도 장치에서 원활한 애니메이션을 수행하기에는 너무 낮습니다. 그것을 30, 48, 60에 부딪 치고 전혀 개선되는지 봅니다 (전체 앱을 테스트해야합니다. 프레임 속도가 높을수록 각 프레임의 렌더링 시간이 짧아지고 프레임을 떨어 뜨릴 확률이 높아짐) –

+0

난 그냥 타이머를 통해 이미지의 x 위치를 이동합니다. 타이머는 다음과 같이 설정됩니다. timer = new Timer (1,0); – user481960

답변

0

'단순 이동 애니메이션'을 사용하면 느린 프로세서의 경우 키 프레임에서 키 프레임으로 이동하는 것을 여러 프레임에 걸쳐 수행 할 수 있습니다. ENTER_FRAME 루프 내에서 'x'또는 'y'값을 변경하여 이미지를 프로그램 방식으로 이동하십시오. 그런 다음 이미지가 원하는 위치에 도달하면 루프를 종료하십시오.

이미 이와 같은 작업을 수행중인 경우 코드를 알려주십시오.

0

다른 iPad 장치에이 설정을 적용 할 수있는 방법이 있습니까? 또는 다른 제안 사항이 있으십니까?

렌더링 목록의 해상도가 높은 이미지의 변환은 렌더링 모드가 GPU로 설정되어 있어도 매우 비쌉니다. 저는이 정확한 문제를 자주 다루었습니다. 특히 Starling과 같은 하드웨어 가속 라이브러리 및 프레임 워크를 사용하면 가장 좋은 결과를 얻을 수 있습니다. 기본 starling 설정을 통합하고 이미지를 QuadBatch에 추가 한 다음 QuadBatch를 번역 할 수 있습니다. 이것은 CPU 대신 GPU를 이용하게되므로 성능이 훨씬 좋아집니다.

먼저 설치가 (일반적으로 메인 클래스에)보고, 라이브러리를 포함한 후 :

private var _starling:Starling = new Starling(myClass, stage); 
_starling.start(); 

이 찌르레기를 시작, 전달 "myClass가"이 얻을 것이다 여기에이 될지 매우 기본적인 예이다 starling에 의해 인스턴스화된다. 당신 같은 _quadBatch 다른 표시 객체와 훨씬 부드러워을 수행해야 할 사용하여 모든 일반 번역을 할 수있는이 시점에서

//class level variable of type QuadBatch 
private var _quadBatch:QuadBatch; 

public function myClass() { 
    //add event listener for added to stage 
    addEventListener(Event.ADDED_TO_STAGE, onAdded); 
} 

private function onAdded(e:Event):void { 
    removeEventListener(Event.ADDED_TO_STAGE, onAdded); 
    _quadBatch = new QuadBatch(); 
    addChild(_quadBatch); //add quadbatch to the stage3d display list 
    addImageToQuad(); 
} 

private function addImageToQuad():void { 
    //first you create a starling texture from your bitmap 
    var texture:Texture = Texture.fromBitmap(myBitmapImage); 

    //add it to the quad as a starling Image type 
    var image:Image = new Image(texture); 
    _quadBatch.addImage(image); 
} 

: 그래서 당신의 myClass가 당신이 뭔가를 할 것입니다. 이는 매우 기본적인 구현이지만, 고해상도 이미지로 작업하는 경우 기본 표시 목록 렌더링으로 더 나은 성능을 얻지 못하기 때문에이 방법을 사용해 보는 것이 좋습니다. 마지막으로 renderMode를 "direct"로 설정합니다 (비록 Starling/Stage3D를 사용할 때 자동으로 발생한다고 생각하기는하지만).