Как передать 2 переменные во Flash? - PullRequest
0 голосов
/ 27 сентября 2011

Во-первых, я использую 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, в HTML-коде, который публикует Flash, нет ac_fl_runcontent<embed src=... тоже нет.Этот div - тело html-файла, который мне дает Flash:

 <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; ?>"/>

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Вот что-то простое, чтобы дать вам идею:

Код:

<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 голос
/ 27 сентября 2011

лучший / самый простой способ добавить 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 сделает все остальное. определенно стоит посмотреть ...

...