Как прочитать HTML-файл cookie во Flash? - PullRequest
3 голосов
/ 06 декабря 2010

Я надеюсь, что меня укажут в правильном направлении. Проблема в том, что я пытаюсь понять, как читать файлы cookie, созданные в HTML, во Flash. У меня есть видеоплеер, который должен автоматически воспроизводиться один раз в 24 часа, а на следующий день он должен снова воспроизводиться автоматически для конечного пользователя.

Вот так выглядит скрипт на странице HTML, который отображает Flash player и cookie:

<script type="text/javascript">
var so = new SWFObject("flvplayer.swf", "mymovie", "640", "394", "8", "#90ab69");
var x = readCookie('homepageIntro') // <- The Cookie (How do I read this in Flash?)
so.addParam("quality", "high");
so.addParam("wmode", "transparent");
so.useExpressInstall('expressinstall.swf');
so.addVariable("autostart", "false");
so.addVariable("file", "video.flv");
so.addVariable("key", "");
so.addVariable("showfsbutton", "false");
so.addVariable("noControls", "false");
so.addVariable("home", "true");
so.write("flashcontent");
</script>

Не зная, как прочитать это var x внутри Flash, я пытался обойти его, используя Flash-cookie, однако теперь видеоплеер будет автоматически воспроизводиться только один раз и никогда больше не будет воспроизводиться автоматически (невозможно очистить Flash cookie).

public function sharedObjectCheck():void
{
    if (mySharedObject.data.flashCookie == "true"){
        //Code to NOT autoplay video
    } else if (mySharedObject.data.flashCookie == null){
        mySharedObject.data.flashCookie = "true"; //if first time, set the cookie value
        mySharedObject.flush(); //add the cookie
    }
}

Я провел некоторый поиск и обнаружил, что позволяет странице HTML воспроизводить Flash-ролик только один раз (не при повторном посещении…) , но опять же, это всего лишь функция Flash, которая никогда не допускает перезапуска в определенный период времени .

Итак, мой вопрос моим коллегам по укладке флэш-памяти: как мне прочитать это var x (cookie) во Flash?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

Прямым ответом на ваш вопрос является использование ExternalInterface

import flash.external.*

try {
  var cookie : String = ExternalInterface.call("readCookie", "homepageIntro") as String;
} catch (error : SecurityError) {
  trace("SecurityError:", e.message);
} catch (error : Error) {
  trace("Error:", e.message);
}

Скорее всего, вам также потребуется установить allowScriptAccess , чтобы разрешить выполнение вызова.

Использование LSO, вероятно, является лучшим вариантом или передача значения x в качестве FlashVar.

1 голос
/ 06 декабря 2010

Вы пытались присвоить значение x для flashvars?

so.addVariable("cookie", x);

В этом случае вы сможете получить его во Flash, выполнив это в классе документа:

var params:Object = this.loaderInfo.parameters;
var cookie:Object = params.cookie;
0 голосов
/ 06 декабря 2010

Делайте это с помощью flash-cookie, но на самом деле сохраняйте последний раз при автоматическом воспроизведении, а не просто флаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...