« com.karatesystem.Root | Home | packageの外に定義した関数やらクラスやら »

Jan 062008

flashVarsのJSON化

AS3でFlashVarsをJSONに変換して処理しようと思っていたのだけど、なんか上手くいかない。
JavaScriptの関数まで引数として引き渡されてしまう・・・。なんでだろー。なんでだろー。

こんな感じ。

{params}	{"a":100}
{toJSONString}	function (w) {
    var a = [], k, i, v;
    if (w) {
        for (i = 0; i < w.length; i  = 1) {
            k = w[i];
            if (typeof k === 
{config}	../xml/local.xml

追記:2008/01/06 18:36
AS3の問題かと思ったら、普通にAS2でも一緒の問題が起きている・・・。
なんだコリャ。

変数名:toJSONString
変数値:function (w) {
    var a = [], k, i, v;
    if (w) {
        for (i = 0; i < w.length; i  = 1) {
            k = w[i];
            if (typeof k === 
ってな感じ。 JavaScriptを直さねばならんっぽいな・・・。 ってこんなの直す余裕はないのだけど・・・。 ちと調べてみる。

追記:2008/01/06 18:48
ぐぉ・・・JSのJSONパッケージ改変されている・・・。
json2.jsになっている・・・。
メソッドも変わっている。いつの間に・・・
そして変えてみたが全然動かん(涙

追記:2008/01/06 18:52
動いた。ゴメン単純に"encodeURI"を抜いていたのでFlash内で[ " ]が悪さをしていた。
ということで問題なし。
参考までにFlashVarsの中での使い方を書いておく。
一応SWFObject1.5のなかで使う場合。
これまでの記述は

_params = encodeURI(_params.toJSONString());
これがAS2のJSONクラスとメソッド名が統一されて
var _params = {};
_params.a=100;
_params.name="あほです";
_params.aaa=[1,2,3,4,5];
_params = encodeURI(JSON.stringify(_params));
so.addVariable("params", _params);
ってな感じ。(ただしAS3のJSONはもうこの形ではなくencode、decodeなのだけど・・・汗)

これでFlashの中で"LoaderInfo(root.loaderInfo).parameters"経由で取得。
取得した内容はこんな感じ

params / {"a":100,"name":"あほです","aaa":[1,2,3,4,5]}
config / ../xml/config.xml
ま、タイムラインで取得することは無いとおもうので、前述のRootクラスを用いてFlashVarsクラスみたいなので処理する形になるかな・・。 これも出来たらのっけます。(いつになるか不明ですが)

1 Comment

コード部分のCSSの見てくれが変だ・・でもそんなの直す余裕は無いので後日・・・。

Leave a comment

Search and Archives