0

首先,我使用的是 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 时,ac_fl_runcontentFlash 发布的 html 代码中没有。而且也没有<embed src=...。这个 div 是 Fl​​ash 给我的 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_name以及this.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; ?>"/>
4

2 回答 2

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
);
于 2011-09-27T07:54:14.910 回答
1

将 SWF 添加到 html 页面的最佳/最简单的方法是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 会完成其余的工作。绝对值得一看...

于 2011-09-27T07:43:01.920 回答