2011-11-18 9 views
1

브라우저 크기를 조정하지 않으면 Chrome의 Flash Player가 업데이트되지 않는 이상한 문제가 있습니다. 이 앱은 Flex로 작성된 온라인 디자인 도구이며 사용자가 이미지를 업로드하고자를 수있는 기능 중 하나입니다. 이미지가 잘로드되고 자르기 작업은 이미지를 다시로드하지 않지만 Bitmap.copyPixels를 사용하여 자른 버전을 만듭니다.플래시 및 Chrome 렌더링 버그

localhost (파일 시스템에서 로컬 서버 일뿐만 아니라)에서 테스트 할 때 문제가 발생하지 않습니다. 그러나 우리의 QA 서버에서 브라우저의 크기를 변경하지 않으면 이미지가 나타나지 않습니다. 화면을 새로 고칩니다.

내가 AS3의 모든 평소 용의자를 시도했습니다/플렉스는 다시 그리기,의 updateAfterEvent,로 invalidateDisplayList, 강제로 등

는 이 우리가 해낸 하나 개의 해키 솔루션은 픽셀로 브라우저의 크기를 조정하는 것이지만입니다

분명히 이상적이지 않고 해결 방법을 원합니다. :)

감사합니다! 여기

var cropData:BitmapData = new BitmapData(_crop.width, _crop.height); 
var originalData:BitmapData = new BitmapData(_loader.width, _loader.height); 
originalData.draw(_loader); 
cropData.copyPixels(originalData, _crop, new Point()); 

var crop:Bitmap = new Bitmap(cropData); 
crop.smoothing = true; 
this.addChild(crop); 

if (_width > 0 && _height > 0) 
{ 
    crop.width = _width; 
    crop.height = _height; 
} 
+1

문제점이 무엇인지 알 수 없습니다. 어떤 종류의 업데이트를 기대하십니까? 이 업데이트는 어떻게 트리거됩니까? 그것은 하나의 환경에서 작동하기 때문에 다른 환경에서는 작동하지 않기 때문에 나의 첫 번째 충동은 이것이 버그가 아니라는 것입니다. 그러나 문제를 일으키는 두 환경 간에는 다른 것이 있습니다. – JeffryHouser

+0

로더와 컨테이너 코드가 도움이 될 것입니다. –

답변

1

있을 것 같습니다이 설정 '불투명' Flex mx : Panel 구성 요소를 닫지 않아도 화면이 업데이트되지 않는 Chrome 용 플래시 플레이어의 가끔 버그입니다.

wmode 매개 변수를 제거하면 위의 문제가 해결되지만 버그가 남아 있습니다.

2

내 첫 충동이 두 가지 환경의 컴파일러는 달라요 번 리눅스 박스에서 플래시 빌더 및 mxmlc에 의해 컴파일 된 결과는 아니라는 것을 발견 있다는 것입니다 ... 참조 비트 맵 코드입니다 똑같다.

2

"this"에 enterFrame 이벤트를 추가하고 자르기 비트 맵을 이동하여 어떤 일이 발생하는지보십시오. 그것의보기에서, 그것은 플래시/크롬의 버그입니다. 다른 브라우저에서도 작동합니까?

편집 :

에 한번이를 추가하고 어떻게되는지 :

그것이 오류를 제공하는 경우
var crop:Bitmap = new Bitmap(cropData); 
crop.smoothing = true; 
this["cropTest"] = crop; // Add this 
this.addEventListener(Event.ENTER_FRAME, onEnterFrameTest); // Add this 
this.addChild(crop); 

// Add this function 
protected function onEnterFrameTest(evt : Event) : void { 
    this["cropTest"].x += this["cropTest"].x > 0 ? -1 : 1; 
} 

, 그냥이에 선언 된 변수와이 [ "cropTest을"] 전환합니다.

EDIT2 :

다음과 같이 모든 표시된 코드를 바꿉니다 :

플래시 플레이어에 W 모드의 PARAM 세트에 포함 된
this["loaderTest"] = _loader; 
this.addEventListener(Event.ENTER_FRAME, onEnterFrameTest); // Add this 

// Add this function 
protected function onEnterFrameTest(evt : Event) : void { 
    this.removeEventListener(onEnterFrameTest); 

    var _loader = this["loaderTest"]; 
    var cropData:BitmapData = new BitmapData(_crop.width, _crop.height); 
    var originalData:BitmapData = new BitmapData(_loader.width, _loader.height); 
    originalData.draw(_loader); 
    cropData.copyPixels(originalData, _crop, new Point()); 

    var crop:Bitmap = new Bitmap(cropData); 
    crop.smoothing = true; 
    this.addChild(crop); 

    if (_width > 0 && _height > 0) 
    { 
     crop.width = _width; 
     crop.height = _height; 
    } 
} 
+0

예를 들어 주셔서 감사합니다. 불행하게도 렌더링 버그가 발생합니다. 브라우저의 크기를 조정할 때까지 이미지가 나타나지 않습니다. 위의 x 위치 춤을 보았습니다. – kreek

+0

originalData를 비트 맵의 ​​내용으로 사용하면 'var crop : Bitmap = new Bitmap (originalData);' 무슨 일이야? – felipemaia

+0

동일한 결과, 크롬 크기가 조정될 때까지 이미지가 없습니다. Flex를 재현 할 수 있는지 확인하기 위해 곧바로 AS3 프로젝트를 시도 할 것입니다. – kreek