2009-11-11 3 views
0

나는 이것을 Adobe 포럼에 올렸지 만 좋은 대답은 없을 것이라고 생각합니다. 나는 플래시 게임을하고 같은 문제를 겪은 누군가의 도움을 찾고 있습니다.인터넷 익스플로러 플래시 성능

단계 내 문제 재현 :

  1. 플래시에 간단한 점 DisplayObject를 만들기를

    dot.graphics.beginFill(color); 
    dot.graphics.drawCircle(0, 0, 2); 
    dot.graphics.endFill(); 
    
  2. 프레임 여러 번을 조합

    bitmapData.draw(dot, null, null, "normal", null, _smoothing); 
    
  3. 테스트 프레임 속도를 비트 맵 점을 그립니다 , 플래시 플러그인 버전 Win32에서

기대 : 나는 Flash10b.ocx를 사용하여 IE7에서 프레임 속도 25 % 감소를보고하고

(10.0.22) 50 :

프레임 속도는 대부분의 경우

관측에 가까워 야 Flash10c.ocx (10.0.32)를 사용하여 프레임 속도가 감소합니다. FireFox, Safari 및 Mac OSX에서 사용되는 PLugins는 동일한 속도 저하를 나타내지 않습니다.

도와주세요은 :

나는 인터넷 익스플로러에서 볼 성능 문제에 대한 도움말/확인을 좀하고 싶습니다. Adobe 및 Flash 커뮤니티는 인터넷에서 훌륭하지만이 문제에 대한 정보는 없지만 10.0.32에서 10.0.22 사이의 동영상 재생에 대한 보고서는별로 없습니다.

내 생각 엔 IE 플래시 플러그인에서 Win32로 그리기 호출을 전달하고 있으며 속도가 느린 것 같습니다.

내 솔루션은 다음과 같습니다

대신 무승부를 사용하여 비트 맵마다 그리기, 그리기 비트 맵 호출 캐시 및 CopyPixels를 사용합니다. 이 작업을 수행 할 때 성능은 브라우저간에 10 % 내에서 동일합니다.

bitmapData.copyPixels(dot.bitmapData,dot.bitmapData.rect,new Point(dot.x,dot.y),null,null,true); 

루프 내가 사용하고 있습니다 :

  • IE에서 내 응용 프로그램의 메모리 사용은 다음과 같습니다에 대한

    function enterFrame(e:Event) { 
        bitmap.lock(); 
    
        for (var i:int=0;i<particles.length;i++) { 
         draw(particle[i]); 
        } 
    
        bitmap.unlock(); 
    } 
    

    내가 좋아하는 다른 가능성 "알려진"문제에 대한 참고 자세한 내용을 알고 (플래시 플레이어의 경우 33MB, IE의 경우 16MB).

  • IE에서는 메모리 페이지 오류가 10k/초 이상인 반면 플래시 플레이어에서는 메모리 페이지 오류가 발생하지 않습니다.
  • IE에서 stage.invalidate는 성능 저하 문제를 일으키는 것으로 보입니다.
  • IE에서 비트 맵에 흐림 필터를 넣는 것이 플래시 플레이어에서 더 큰 성능을 발휘합니다.

답변

0

플래시 플러그인의 성능은 모든 플랫폼/브라우저/부 버전/디버거/등에서 다릅니 까?타겟 고객의 공통 분모를 가장 적게 코딩하는 것 외에도 이러한 차이를 상쇄 할 수있는 방법은 거의 없습니다.

즉, bitmapData.draw은 모든 호출에서 벡터 데이터의 재 래스터 화를 강제하므로 느립니다. 후드에서 Flash는이 방법도 사용하지만 화면의 더러운 영역을 추적하여 사용자가 수행하는 것보다 더 적은 부분을 호출합니다 (디버거에서이 영역을 "시각적으로 보려면"다시 그리기 영역 표시 ").

bitmapData.copyPixels 솔루션은 수동 래스터 구현을위한 올바른 솔루션입니다. 이것은 플래시에서 고성능의 복잡한 애니메이션을 얻는 유일한 메커니즘입니다.

0

확인해 주셔서 감사합니다. 자물쇠의 목적은 플래시가 다시 그리기를 최소화하는 데 도움이된다고 생각했습니다. 플래시 앱이 60 fps에 가까워지고 있어도 말더듬이 나는 것을 봅니다.

내가 모든 것을 올바르게 코딩했는지 궁금해하는 사람들보다. 새로운 tweenlite 성능 예제 코드를 약 150 픽셀/초의 선형 이동으로 수정했습니다. 이것은 사람들이 볼 수있는 말더듬이를 강조합니다. 예는 http://forums.greensock.com/viewtopic.php?f=1&t=1857입니다.

+0

아, 그게 처음으로 등장한 이후 플레이어에 있었던 유명한 플래시 "전단"버그입니다. 해결책이나 해결 방법이 없습니다. –