Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在浏览器中打开时防止SWF拉伸_Actionscript 3_Flash_Browser_Haxe_Stretch - Fatal编程技术网

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

Actionscript 3 在浏览器中打开时防止SWF拉伸,actionscript-3,flash,browser,haxe,stretch,Actionscript 3,Flash,Browser,Haxe,Stretch,在浏览器中打开SWF时,它通常会拉伸以适应整个屏幕。我想阻止这种事情发生。也就是说,当SWF打开时,它将以适当的大小显示在浏览器中,无论是在左上角还是在中间 我知道这可以在HTML页面中完成,而且当使用独立播放器时,它将以适当的大小打开。但是,我希望将其单独部署为SWF,用户很可能会在浏览器中打开它 那么,是的,有什么方法可以防止这种行为吗?我正在使用Haxe,但是AS3代码也会很有帮助。我已尝试将stage.scaleMode设置为StageScaleMode。没有缩放,但没有帮助。使用对齐和

在浏览器中打开SWF时,它通常会拉伸以适应整个屏幕。我想阻止这种事情发生。也就是说,当SWF打开时,它将以适当的大小显示在浏览器中,无论是在左上角还是在中间

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


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

使用对齐和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>

var flashvars={
};
变量参数={
菜单:“假”,
音阶:“noScale”,
allowFullscreen:“真”,
allowScriptAccess:“始终”,
bgcolor:“”,
wmode:“直接”//可能导致FP设置和网络摄像头出现问题
};
变量属性={
id:“布局经理”
};
swfobject.embeddeswf(
“layoutmanager.swf”,
“altContent”、“100%”、“100%”、“10.0.0”,
“expressInstall.swf”,
flashvars、参数、属性);
html,正文{高度:100%;溢出:隐藏;}
正文{页边距:0;}

否则,如果不查看您的代码,就很难预测您有什么可以阻止扩展,或者您只是误解了它实际上使用的是完整的浏览器大小,但SWF并没有被拉伸,而是填满了空间。

所以很明显,这是我使用的引擎HaxePunk的原因。我通过将其放入主类(扩展
引擎
)来修复它:


但在大多数其他情况下,卢卡斯的回答应该足够了。

奇怪的是,stage.scaleMode必须做到这一点。你会在你的主swf或类似的东西中加载其他swf吗?@Binou:不会。真奇怪。这可能是因为我使用的是Haxe和/或HaxePunk引擎,但据我所知,我正在进入基本阶段。您是在初始化引擎之前还是之后设置它?也许引擎之后会做些什么?试试这个解决方案,因为HaxePunk有自己的管理displayObjects的方法,我想你必须在HaxePunk论坛上提问,这不是as3问题谢谢!尽管这对我的具体问题没有帮助,但它确实适用于大多数情况。
HXP.screen.scaleX = HXP.screen.scaleY = 1;