首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取swfobject的flashvars问题

读取swfobject的flashvars问题
EN

Stack Overflow用户
提问于 2011-09-26 16:23:41
回答 3查看 2.1K关注 0票数 0

我有一个1.2mb的闪存swf。我正在使用动态嵌入的swfobject嵌入它。

代码语言:javascript
复制
<script type="text/javascript">
var flashvars = {};

flashvars.campaignid = "12345678890";
var params = {};
params.allowscriptaccess = "always";
var attributes = {};
swfobject.embedSWF("soccer.swf", "myAlternativeContent", "550", "400", "10.0.0", false, flashvars, params, attributes);
</script>

我正在尝试在我的document类中读取campaignid ...

代码如下所示

代码语言:javascript
复制
public function Main()
{    
    loaderInfo.addEventListener(ProgressEvent.PROGRESS,update); 
    loaderInfo.addEventListener(Event.COMPLETE,onLoadedMovie); 
}                 
private function update(e:ProgressEvent):void         
{
}

private function onLoadedMovie(e:Event)
{
    campId=this.root.loaderInfo.parameters["campaignid"]; 
}

当我警告这个值时,我得到了null,当我在一个小文件中使用相同的方法时,它是有效的。有谁可以帮我?问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-27 13:36:20

我通过在嵌入代码中添加变量得到了答案。像这样

代码语言:javascript
复制
swfobject.embedSWF("soccer.swf?campaignid=1234556"", "myAlternativeContent", "550", "400", "10.0.0", false, flashvars, params, attributes);

感谢您的帮助:)

票数 2
EN

Stack Overflow用户

发布于 2011-09-27 20:12:22

Adam Harte的答案是正确的,我认为问题出在您的AS3代码中的某个地方,下面这一点让我特别困惑:

代码语言:javascript
复制
public function Main() 
{     
    loaderInfo.addEventListener(ProgressEvent.PROGRESS,update);  
    loaderInfo.addEventListener(Event.COMPLETE,onLoadedMovie);  
}

private function update(e:ProgressEvent):void { } 

private function onLoadedMovie(e:Event) 
{ 
    campId=this.root.loaderInfo.parameters["campaignid"];  
} 

我已经创建了一个简单的(且有效的)示例,说明您的代码应该是什么样子:

index.html

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>FlashVars</title>
    <meta name="language" content="en" />
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <script src="js/swfobject.js" type="text/javascript"></script>
    <script type="text/javascript">
        var flashvars = { campaignid: "12345678890" };
        var params = { menu: "false", scale: "noScale", allowFullscreen: "true", allowScriptAccess: "always", bgcolor: "", wmode: "direct" };
        var attributes = { id:"FlashVars" };
        swfobject.embedSWF("FlashVars.swf", "altContent", "100%", "100%", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
    </script>
    <style type="text/css">
        html, body { height:100%; overflow:hidden; }
        body { margin:0; }
    </style>
</head>
<body>
    <div id="altContent">
        <h1>FlashVars</h1>
        <p>Alternative content</p>
        <p>
            <a href="http://www.adobe.com/go/getflashplayer">
                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
            </a>
        </p>
    </div>
</body>
</html>

Main.as(document类):

代码语言:javascript
复制
package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

    public class Main extends Sprite 
    {
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            if (loaderInfo.parameters.campaignid)
            {
                var textField:TextField = new TextField();
                textField.autoSize = TextFieldAutoSize.LEFT;
                textField.text = loaderInfo.parameters.campaignid;
                addChild(textField);

            }// end if

        }// end function

    }// end class

}// end package

以下是在浏览器中运行的示例图像:

票数 1
EN

Stack Overflow用户

发布于 2011-09-26 17:23:00

也许可以在将主类添加到舞台后尝试获取var。这将确保一切都已加载并准备就绪。尝试如下所示:

代码语言:javascript
复制
public function Main()
{
    if (stage) init();
    else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void 
{
    removeEventListener(Event.ADDED_TO_STAGE, init);

    var campId:String = this.root.loaderInfo.parameters["campaignid"];
    trace('campId', campId);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7552420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档