In the end, I found the answer to this question. The problem is that the FLVPlayback component now uses the stage.fullScreenSourceRect property to enter full-screen mode with hardware scaling. When he does this, he stretches the display area set by stage.fullScreenSourceRect to fill the screen, rather than increasing the size of the scene or any components.
To stop it, you need to create a subclass of FLVPlayback that uses the UIManager subclass and override the function that defines stage.fullScreenSourceRect. From the bottom, you lose hardware scaling; but on the other hand, your player does not look as if he was drawn by three-year-old pencils.
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) { } } } }
We are adding FLVPlayback to our movie using ActionScript, so we just need to replace
var myFLVPLayback:FLVPlayback = new FLVPlayback();
with
var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();
I don't know if there is a way to make a custom class available in the component library.
source share