FLVPlayback 및 플래시 9.0.115+를 사용하여 이전 전체 화면 크기를 조정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/102059

문제

이전 버전의 플래시에서는 전체 화면 모드로 들어가면 스테이지의 높이와 너비가 화면 크기에 맞춰 늘어났습니다.이제 하드웨어 크기 조정이 완료되었으므로 높이와 너비가 비디오의 크기(가로세로 비율이 다른 경우 테두리 포함)로 설정됩니다.

동영상 위에 컨트롤을 배치하지 않는 한 괜찮습니다.이전에는 크기를 제어할 수 있었습니다.하지만 이제는 비디오와 같은 규모로 확대되고 끔찍하게 픽셀화되었습니다.컨트롤이 보기 흉하고 자막을 읽을 수 없습니다.

사용자가 하드웨어 스케일링을 끌 수도 있지만 달성할 수 있는 것은 앤티앨리어싱을 끄는 것뿐입니다.컨트롤은 여전히 ​​​​추악하게 폭발했습니다.

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

도움이 되었습니까?

해결책 2

나는 결국 이것에 대한 답을 찾았습니다.문제는 FLVPlayback 구성 요소가 이제 stage.fullScreenSourceRect 속성을 사용하여 하드웨어 규모의 전체 화면 모드로 전환된다는 것입니다.그렇게 하면 스테이지나 구성 요소의 크기를 늘리는 대신 stage.fullScreenSourceRect에서 제공하는 렌더링된 영역을 늘려 화면을 채웁니다.

이를 중지하려면 UIManager의 하위 클래스를 사용하는 FLVPlayback의 하위 클래스를 만들고 stage.fullScreenSourceRect를 설정하는 함수를 재정의해야 합니다.단점은 하드웨어 확장성을 잃게 된다는 것입니다.하지만 좋은 점은 플레이어가 세 살짜리 아이가 크레용으로 그린 ​​것처럼 보이지 않는다는 것입니다.

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();

구성 요소 라이브러리에서 사용자 정의 클래스를 사용할 수 있게 만드는 방법이 있는지 모르겠습니다.

다른 팁

이 문제를 해결하는 또 다른 방법이 있습니다. 이 방법은 더 간단하고 저에게 꽤 잘 맞는 것 같습니다.

myFLVPlayback.전체화면 테이크오버 = false;

그만큼 fullScreenTakeOver 속성은 Flash Player 9에 도입되었습니다. 업데이트 3.문서는 모두 약간 모호하지만 여기에 더 많은 정보가 있습니다.

사용하여 FLVPlayback Flash Player 9 업데이트 3이 포함된 구성요소

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/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top