在浏览器中打开时防止SWF拉伸

时间:2013-11-22 06:24:39

标签: actionscript-3 flash browser haxe stretch

在浏览器中打开SWF时,它通常会拉伸以适应整个屏幕。我想防止这种情况发生。也就是说,当打开SWF时,它只会在浏览器中以适当的大小出现在左上角或中间位置。

我知道这可以在HTML页面中完成,而且当使用独立播放器时,它将以适当的大小打开。但是,我希望将其作为SWF部署,并且用户可能会在浏览器中打开它。

所以是的,有什么方法可以阻止这种行为吗?我正在使用Haxe,但AS3代码也会有用。我尝试将stage.scaleMode设置为StageScaleMode.NO_SCALE,但这没有帮助。

2 个答案:

答案 0 :(得分:2)

使用align和scaleMode

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

也可以在html包装器中设置:

<script src="js/swfobject.js"></script>
<script>
    var flashvars = {
    };
    var params = {
        menu: "false",
        scale: "noScale",
        allowFullscreen: "true",
        allowScriptAccess: "always",
        bgcolor: "",
        wmode: "direct" // can cause issues with FP settings & webcam
    };
    var attributes = {
        id:"layoutmanager"
    };
    swfobject.embedSWF(
        "layoutmanager.swf", 
        "altContent", "100%", "100%", "10.0.0", 
        "expressInstall.swf", 
        flashvars, params, attributes);
</script>
<style>
    html, body { height:100%; overflow:hidden; }
    body { margin:0; }
</style>

否则没有查看你的代码很难预测你有什么可以防止缩放 - 或者只是你误解了它实际上是使用完整的浏览器大小但是SWF没有被拉伸但填补空间。

答案 1 :(得分:0)

显然,这与我使用的引擎HaxePunk有关。我设法通过将它放在主类(扩展Engine)中来修复它:

HXP.screen.scaleX = HXP.screen.scaleY = 1;

在大多数其他情况下,Lukasz的答案应该足够了。