Я в конце концов нашел ответ на этот вопрос. Проблема заключается в том, что компонент FLVPlayback теперь использует свойство stage.fullScreenSourceRect для входа в полноэкранный режим с аппаратным масштабированием. Когда он это делает, он растягивает визуализированную область, заданную stage.fullScreenSourceRect, чтобы заполнить экран, а не увеличивает размер сцены или каких-либо компонентов.
Чтобы остановить это, вы должны создать подкласс FLVPlayback, который использует подкласс UIManager, и переопределить функцию, которая устанавливает 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 в наш фильм, используя actioncript, поэтому нам просто нужно заменить
var myFLVPLayback:FLVPlayback = new FLVPlayback();
с
var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();
Я не знаю, есть ли способ сделать пользовательский класс доступным в библиотеке компонентов.