SWFObject 2.0动态扩展

时间:2012-02-08 19:04:32

标签: flash dynamic scale swfobject

我正在尝试使用我的Flash嵌入HTML页面做一些不同的事情。我在右键单击上下文菜单中添加了一个选项,可在两种比例模式之间切换: noscale exactfit 。当我将swf作为独立程序运行但不在HTML页面中运行时,这是有效的。有没有人有任何想法,如果有办法嵌入一个SWF并动态改变比例模式?也许嵌入100%的宽度和高度?但是我试过了,它打破了嵌入式javascript代码。

<script type="text/javascript">
    var params = {};
    params.scale = "exactfit"
    var flashVars = {};
    swfobject.embedSWF("UserInterfaceStagingCR.swf", "myContent", "1440", "900", "9", null, flashVars, params);
</script>

1 个答案:

答案 0 :(得分:1)

See this post about resizing a SWF set to 100% width/height

但是如果你想从noScale切换到exactFit(反之亦然),你可能需要编辑JavaScript中的param节点。

我从未真正尝试过(我不确定它是否会起作用),但这是我要试验的内容:

function setScaleMode(mode){

    var paramNodes = document.getElementsByTagName("param");

    for(var i=0, len=paramNodes.length; i<len; i++){
        var node = paramNodes[i];
        if(node.name === "scale"){
            //switch to whatever scale mode you want to use.
            node.value = mode;
            //exit loop
            return;
        }
    }

}

var params = { scale: "exactfit" };
var flashVars = {};

swfobject.embedSWF("UserInterfaceStagingCR.swf", "myContent", "1440", "900", "9", false, flashVars, params);

(当然,如果页面上有多个SWF,则需要修改此代码。)

然后让你的ActionScript通过ExternalInterface调用JavaScript:

ExternalInterface.call("setScaleMode", "noscale");