Flashムービー内の同じドメインのCookie値を取得しようとしています。これは可能ですか?
ユーザーに変数fooを設定させ、任意のWebプログラミング言語を使用してそれを保存することを見てみましょう。その言語で簡単にアクセスできますが、HTMLページに印刷して渡さずにFlashムービーでアクセスしたいと思います。
Flashムービー内の同じドメインのCookie値を取得しようとしています。これは可能ですか?
ユーザーに変数fooを設定させ、任意のWebプログラミング言語を使用してそれを保存することを見てみましょう。その言語で簡単にアクセスできますが、HTMLページに印刷して渡さずにFlashムービーでアクセスしたいと思います。
データの保存と取得だけを行う場合は、SharedObject クラスを使用することをお勧めします。詳細については、 Adobe の SharedObject リファレンスを参照してください。
HTTP Cookie にアクセスする場合は、ExternalInterface を使用して JavaScript と通信する必要があります。ここで行う方法は、HTTPCookies というヘルパー クラスを用意することです。
HTTPCookies.as:
import flash.external.ExternalInterface;
public class HTTPCookies
{
public static function getCookie(key:String):*
{
return ExternalInterface.call("getCookie", key);
}
public static function setCookie(key:String, val:*):void
{
ExternalInterface.call("setCookie", key, val);
}
}
Flash オブジェクトで「allowScriptAccess」パラメータを使用して JavaScript を有効にする必要があります。
次に、次のように、getCookie と setCookie の JavaScript 関数のペアを作成する必要があります ( quirksmode.orgに感謝します) 。
HTTPCookies.js:
function getCookie(key)
{
var cookieValue = null;
if (key)
{
var cookieSearch = key + "=";
if (document.cookie)
{
var cookieArray = document.cookie.split(";");
for (var i = 0; i < cookieArray.length; i++)
{
var cookieString = cookieArray[i];
// skip past leading spaces
while (cookieString.charAt(0) == ' ')
{
cookieString = cookieString.substr(1);
}
// extract the actual value
if (cookieString.indexOf(cookieSearch) == 0)
{
cookieValue = cookieString.substr(cookieSearch.length);
}
}
}
}
return cookieValue;
}
function setCookie(key, val)
{
if (key)
{
var date = new Date();
if (val != null)
{
// expires in one year
date.setTime(date.getTime() + (365*24*60*60*1000));
document.cookie = key + "=" + val + "; expires=" + date.toGMTString();
}
else
{
// expires yesterday
date.setTime(date.getTime() - (24*60*60*1000));
document.cookie = key + "=; expires=" + date.toGMTString();
}
}
}
Flash プロジェクトに HTTPCookies.as を配置し、Web ページから HTTPCookies.js をロードすると、Flash ムービー内から getCookie と setCookie を呼び出して、HTTP Cookie を取得または設定できるようになります。
これは、非常に単純な値 (文字列または数値) に対してのみ機能しますが、より複雑なものに対しては、SharedObject を使用する必要があります。
フラッシュオブジェクトにはjavascriptを介してアクセスできる関数があると思います。したがって、もっと簡単な方法がない場合は、少なくともjavascript onloadハンドラーを使用して、外部からフラッシュアプリにdocument.cookieを渡すことができます。
詳細はこちら: http: //www.permadi.com/tutorial/flashjscommand/
フラッシュからCookie(ローカル共有オブジェクト)の読み取りと書き込みを行うことができます。Flash Cookieは、ドメイン名のディレクトリ内のPCに保存されます。これらのディレクトリは次の場所にあります。
[Root drive]:\Documents and Settings\[username]\Application Data\Macromedia\Flash Player\#SharedObjects\
アドビからのこの記事は良いスタートです。
一部のグーグルは、クエリ文字列を使用して実行できることを示しています。
Webアプリケーションの場合、URLパラメーターによってswfに値を渡し、(swf内のアクションスクリプトを使用して)それらをサンドボックスに保存できます。
cookie は document.cookie を介して JavaScript で使用できます。Flash の getURL を使用して JavaScript 関数を呼び出してみてください。
getURL('javascript:document.cookie = "varname=varvalue; expires=Thu, 2 Aug 2001 20:47:11 UTC; path="');
HTTPCookies.as の getCookie メソッドは、「return」ステートメントを使用する必要があります。
import flash.external.ExternalInterface;
public class HTTPCookies
{
public static function getCookie(key:String):*
{
return ExternalInterface.call("getCookie", key);
}
public static function setCookie(key:String, val:*):void
{
ExternalInterface.call("setCookie", key, val);
}
}