2008-09-19 4 views
4

이전 버전의 플래시에서는 전체 화면 모드로 전환하면 스테이지의 높이와 너비가 화면 크기로 증가되었습니다. 하드웨어 스케일링이 완료되면 높이와 너비가 비디오의 크기로 설정됩니다 (종횡비가 다른 경우 경계선이 더해짐).FLVPlayback 및 플래시 9.0.115+를 사용하여 이전 전체 화면 크기 조정을 사용할 수 있습니까?

동영상 위에 컨트롤을 배치하지 않는 한 괜찮습니다. 전에 크기를 조절할 수있었습니다. 하지만 지금은 비디오와 같은 스케일로 날아가 버렸고, 끔찍하게 픽셀 화되었습니다. 컨트롤이 추악하고 자막을 읽을 수 없습니다.

사용자가 하드웨어 스케일링을 해제 할 수는 있지만, 모든 작업은 앤티 앨리어싱을 해제하는 것입니다. 컨트롤은 여전히 ​​추악한 상태로 날아갑니다.

이전 크기 조정 동작을 되돌릴 수있는 방법이 있습니까?

+0

어떤 OS 당신은에입니까? – Oli

+0

Windows에서 개발 중입니다. Flash CS3에서 개발중인 AS3 플래시 무비입니다. 클라이언트는 주로 창을 사용하지만 상당한 비율은 Mac을 사용합니다. – Simon

답변

1

내가 결국 이것에 대한 답을 찾았습니다. 문제는 FLVPlayback 구성 요소가 stage.fullScreenSourceRect 속성을 사용하여 하드웨어 확장 된 전체 화면 모드로 들어가는 것입니다. 그렇게하면 무대 나 구성 요소의 크기를 늘리는 대신 stage.fullScreenSourceRect에 의해 지정된 렌더링 된 영역이 화면을 채우도록 펼쳐집니다.

중지하려면 UIManager의 하위 클래스를 사용하는 FLVPlayback의 하위 클래스를 만들고 stage.fullScreenSourceRect를 설정하는 함수를 재정의해야합니다. 아래쪽에서는 하드웨어 확장을 잃을 수 있습니다. 그러나 위쪽면에서는 플레이어가 3 살짜리 크레용으로 그려진 것처럼 보이지 않습니다.

CustomFLVPlayback.as :

import fl.video.*; 
use namespace flvplayback_internal; 

public class CustomFLVPlayback 
{ 
    public function CustomFLVPlayback() 
    { 
     super(); 
     uiMgr = new CustomUIManager(this); 
    } 
} 

CustomUIManager.as :

import fl.video.*; 
import flash.display.StageDisplayState; 

public class CustomUIManager 
{ 
    public function CustomUIManager(vc:FLVPlayback) 
    { 
     super(vc); 
    } 

    public override function enterFullScreenDisplayState():void 
    { 
     if (!_fullScreen && _vc.stage != null) 
     { 
      try 
      { 
       _vc.stage.displayState = StageDisplayState.FULL_SCREEN; 
      } catch (se:SecurityError) { 
      } 
     } 
    } 
} 

우리는 액션 스크립트를 사용하여 우리의 영화에 FLVPlayback 구성을 추가, 그래서 우리는 단지와

var myFLVPLayback:FLVPlayback = new FLVPlayback(); 

를 교체해야

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback(); 

구성 요소 라이브러리에서 사용자 지정 클래스를 사용할 수 있는지 여부를 알 수 없습니다.

-1
stage.align  = StageAlign.TOP_LEFT; 
stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.addEventListener(Event.RESIZE, onStageResize); 

function onStageResize(event:Event):void { 
    //do whatever you want to re-position your controls and scale the video 
    // here's an example 
    myFLVPlayback.width = stage.stageWidth; 
    myFLVPlayback.height = stage.stageHeight - controls.height; 
    controls.y = stage.stageHeight - controls.height; 
} 

또는, 나는 이것에 대해 완전히 확실하지 않다, 당신은 FLVPlayback 구성에 확장 일부 9 슬라이스를 수행하려고 할 수도 있지만, 문제가 해결 있을지 모르겠어요.

9 슬라이스 크기 조절 튜토리얼 : http://www.sephiroth.it/tutorials/flashPHP/scale9/

+0

새로운 배율 동작에서는 작동하지 않습니다. 전체 화면으로 전환되면 stage.stageWidth 및 stage.stageHeight는 화면이 아닌 비디오의 크기로 설정됩니다. – Simon

+0

젠장, 미안, 나는 그 사람들이 업데이트 될 것이라고 생각했다. 당신의 방법은 당신이해야했던 것보다 더 노력해야합니다. 다행히도 Flash 10에서이 문제를 해결할 것입니다. – UltimateBrent

2

더 쉽게 해결할 수있는 또 다른 방법이 있습니다.이 방법이 더 간단하고 잘 작동하는 것 같습니다.

myFLVPlayback. fullScreenTakeOver = false;

fullScreenTakeOver 속성은 플래시 플레이어 9 업데이트 3 년에 도입되었다. 워드 프로세서는 모든 조금 애매하지만, 좀 더 많은 정보는 여기있다 :

Using the FLVPlayback component with Flash Player 9 Update 3

+0

그 설정이 좋은 시작입니다. 당신이 그것을 사용한다면 레이아웃의 나머지 부분을 스스로해야만합니다. 플레이어가 화면을 채우지 않을 것입니다. – Simon

+1

링크가 끊어졌습니다 ... – Moshe

+0

Meh. Lemme은 기사를 찾으면 URL을 편집 할 것입니다. – aaaidan

관련 문제