2016-11-10 1 views
0

나는 모든 스프라이트 사용하는 Stage에 표시되는 여러 SpriteContainerMovieClip 개체가 3MB 이상의 PNG SpriteSheet.
어떤 점에서 다른 을로드하여이를 사용하는 다른 Container을 표시합니다.
시행 착오를 진행하면서 속성을 Container으로 설정하는 것만으로는 충분하지 않으므로 removeChild()cache()을 사용하여 적절한 프레임 속도를 얻을 수있었습니다.
문제는 더 많은 컨테이너와 스프라이트 시트를로드 할 때 프레임 속도가 때때로 매우 낮아진다는 것입니다.
사용 된 리소스를 해제하기 위해 취해야 할 다른 단계가 있습니까?
일반적인 함정은 무엇입니까?릴리스 사용되는 리소스는

답변

1

예, 저는 처음에 createJS에서 응용 프로그램을 만들 때 상당히 많은 성능 문제가있었습니다.

프레임 속도가 정상보다 낮 으면 비트 맵에서 생성되지 않은 모든 개체를 캐시해야합니다. 이러한 개체는 항상 새로 고쳐지지 않고 성능을 소비하지 않기 때문입니다. 예를 들어, 모양 유형 객체는 지속적으로 새로 고쳐지고 매우 성능 집약적입니다.

당신은 애니메이션 내용이없는 개체에 대해 다음과 같은 패턴을 사용한다 :

var bounds = displayObject.nominalBounds; 
displayObject.cache(bounds.x, bounds.y, bounds.width, bounds.height); 

이 객체를 캐시하고 거의 성능을 소비 할 것이다. 또한 제거 할 때가되면

//if it was added as a child of a container 
displayObject.parent.removeChild(displayObject); 
//if it was cached prior 
displayObject.uncache(); 
//when you don't need it anymore, for garbage collection 
displayObject = null; 
과 같은 것을 사용하여 자산을 이전해야합니다.
관련 문제