AndEngine이 구동되는 라이브 벽지에서 잠시 동안 심각한 성능 문제를 다루었습니다. (어떤 문제가 발생했는지 알지 못하기 전에 잠시 후 다른 질문을 게시했습니다. 제대로 작동하도록하는 유일한 방법은 몇 가지 스프라이트를 병합하는 것입니다.AndEngine 병합 Sprites
나는 똑같은 크기의 6 개 정도의 큰 스프라이트를 서로의 위에 직접 쌓아 올렸습니다. 이렇게하면 모든 것이 하나의 이미지처럼 보이지만 원하는 부분을 코드를 통해 각 부분을 다른 색상으로 설정할 수 있습니다. 어떤 이유에서든 알파를 전혀 사용하지 않는 블렌딩 모드를 사용할 때 스프라이트를 레이어하는 것은 (이미지에 알파가 없더라도) 프레임 속도에 큰 손상을 주며 주변에서 간단한 방법을 찾을 수 없습니다. 이.
내가 도달 한 해결책은 필자가 스프라이트를 개별적으로 필요로하는 것을 수행하고, 이들을 하나로 통합해야한다는 것이다. 나는 AndEngine의 여러 클래스들로 다이빙을하면서 꽤 많은 시간을 보냈고 그 과정에서 아무 것도 파괴하지 않으려 고 노력했지만, 어떻게해야 하는지를 알 수 없다.
다른 스프라이트를 때 리거나 스프라이트를 다시 임시 텍스처 아트라스에 넣기가 어렵다는 것은 확실합니다. 나는 그것을 어떻게 얻는지를 꽤 이해할 수 없습니다. .
편집 :
public void onLoadResources(){
this.mTestAtlas = new BitmapTextureAtlas(512, 1024, TextureOptions.NEAREST_PREMULTIPLYALPHA);
Bitmap b = BitmapFactory.decodeStream(layer1);
Bitmap a = overlay(b);
test = new BitmapTextureAtlasSource(a);
this.mTesting = BitmapTextureAtlasTextureRegionFactory.createFromSource(this.mTestAtlas, test, 0, 0);
this.getEngine().getTextureManager().loadTexture(this.mTestAtlas);
}
public Scene onLoadScene(){
layer1Sprite = new Sprite(x, y, width, height, this.mTesting);
scene.attachChild(layer1Sprite);
}
public static Bitmap overlay(Bitmap bmp1) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
Paint layer1Paint = new Paint();
ColorFilter layer1Filter;
layer1Filter = new LightingColorFilter(Color.rgb(175, 0, 175), 1);
layer1Paint.setColorFilter(layer1Filter);
canvas.drawBitmap(bmp4, 0, 0, layer1Paint);
return bmOverlay;
}
나는 어떤 결과 전에 비슷한 시도했다, 그러나 당신이 준 링크보고 몇을 찾기 위해 주위를 검색 후, 나는 가야 관리했다. 실제로는 훌륭하게 작동하는 것처럼 보이지만 아직 이상한 문제가 있습니다. 이러한 방식으로 생성 된 스프라이트는 다른 앱에서 가져 오거나 휴대 전화를 다시 켜는 것처럼 다시 시작할 때 화면에서 사라집니다.그것은 나에게 조금 이상한 것 같지만, 나는 그것에 대한 간단한 이유가 있다고 확신한다. – Shamrock
귀하의 이미지가 가비지 수집 된 것으로 의심됩니다. 안드로이드가 활동을 죽이면 이미지를 복원 할 수 있도록 파일에 이미지를 작성하는 것이 좋습니다. 어쩌면 코드를 게시할까요? –
내 설정이 다듬어 진 버전을 추가했습니다. 아주 가난한 구조와 명명법에 대해 유감스럽게 생각합니다.이 코드를 정리할 때 적절한 코드를 수정하려고합니다. 나는 이미 그곳에있는 것의 반복 된 것들을 제거했다. (나는 다중 이미지를 결합하고있다. 따라서 "오버레이"방법의 필요성). 내가 포함되어 있어야만하는 것을 놓친 경우 나는 그것을 게시하게되어 기쁩니다. 가비지 콜렉션이라는 것이 옳은 것 같습니다. GC에 손대지 말라고 지시하는 방법이 있을까요 아니면 그것을 처리하는 가장 좋은 방법은 이미지로 저장하는 것일까 요? – Shamrock