如何将2个变量传递给Flash?

时间:2011-09-27 05:37:40

标签: flash actionscript-3 flashvars

首先,我使用的是Flash CS5.5,AS3。

我正在尝试将表示姓名和电子邮件地址的变量传递给swf文件。 swf与用户网络摄像头拍照并将图像发送到save.php进行进一步处理。目前我有文本字段供用户输入姓名和电子邮件,但我想消除它们并在幕后添加信息。基本上这就是我想要完成的事情:

 1.Page loads and stores name and email address in variables(index.php).
 2.I'd like to pass name and email address variables to flash to be included with
   the image the swf sends to a php file for processing (save.php)
 3.Page loads flash content(take_picture.swf) and does it's thing.

我使用Zend AMF在类似的情况下工作,其中swf获取从访问数据库的另一个页面传回的所有信息。这里我有我需要的数据而无需访问数据库。我尝试了很多使用FlashVars的变体,但还没有任何工作。我似乎缺少的一件事是当我发布fla时,Flash发布的html代码中没有ac_fl_runcontent。而且也没有<embed src=...。这个div是Flash给我的html文件的主体:

 <div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="760" height="1000" id="take_picture" align="middle">
            <param name="movie" value="take_picture.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="window" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="sameDomain" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="take_picture.swf" width="760" height="1000">
                <param name="movie" value="take_picture.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>

我已经尝试<param name="FlashVars" value="first_name=<?php echo $first_name; ?>&email=<?php echo $email ?>" />在动作面板中添加了this.loaderInfo.parameters.first_namethis.loaderInfo.parameters[first_name]的内容以及其他一些内容,但还没有让它工作。任何帮助将不胜感激。

非常感谢,

标记

编辑:这是我最近的尝试:

 var f_name:String;
 var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
 f_name = String(paramObj[first_name]);
 first_name.text=f_name;

在html中使用这个:

 <param name="FlashVars" value="first_name=<?php echo $first_name; ?>"/>

2 个答案:

答案 0 :(得分:2)

这里有一些简单的方法可以给你一个想法:

嵌入:

<object width="800" height="600">
    <param name="flashvars" value="first_name=blah&email=blah" />
    <embed src="clipping.swf?first_name=blah&email=blah" width="800" height="600" />
</object>

AS3:

var parsed:Object = root.loaderInfo.parameters;

trace(
    parsed.first_name,
    parsed.email
);

答案 1 :(得分:1)

向您的html页面添加SWF的最佳/最简单方法是SWFObject

只需将脚本添加到您的文件

即可
<script type="text/javascript" src="swfobject.js"></script>

然后你可以添加所有必要的属性/参数:

<script type="text/javascript">
    // <![CDATA[

    var width = 800;
    var height = 600;

    var flashVersion = "9.0.115";

    var movie = "clipping.swf";

    var movieName = "flashMovie";
    var bgColor = "#ffffff";

    var express = "expressInstall.swf";

    var replaceDiv = "flashContent";

    var flashvars = {};
    flashvars.first_name = "<?php echo $first_name; ?>";
    flashvars.email = "<?php echo $email; ?>";

    var params = {};
    params.bgcolor = bgColor;
    params.menu = "false";
    params.scale = "noscale";
    params.allowFullScreen = "true";
    params.allowScriptAccess = "always";

    var attributes = {};
    attributes.id = movieName;

    swfobject.embedSWF(movie, replaceDiv, width, height, flashVersion, express, flashvars, params, attributes);


  // ]]>
</script>

我认为这不会像编辑EMBED和OBJECT标签那样令人困惑,你只需要更改一次属性,SWFObject就可以完成剩下的工作。绝对值得一看......