Использование JSON в качестве конфига в jheery Tools - PullRequest
0 голосов
/ 22 сентября 2009

jQuery Tools имеет flashhembed, который может передавать объект JSON в качестве параметра конфигурации для встроенного Flash-объекта Смотрите официальную страницу .

Но он не говорит точно, как получить объект JSON во Flash. И это вопрос ... Как ??

Ответы [ 2 ]

1 голос
/ 22 сентября 2009

Это зависит от того, находитесь ли вы в AS2 или AS3. Я считаю, что AS2 просто устанавливает переменные в _root, но я могу ошибаться. В AS3 вам нужно будет перейти к вашему объекту root.loaderInfo.parameters. Все переменные хранятся там в парах ключ / значение.

Например:

myAS2Swf.swf?example=72&other="Quack"

// in the swf:
trace( _root.example ); // 72
trace( _root.other   ); // Quack

// in AS3

myAS3Swf.swf?example=42&other="Duck"    

// in the swf:
trace( root.loaderInfo.parameters.example ); // 42
trace( root.loaderInfo.parameters.other   ); // Duck
0 голосов
/ 23 сентября 2009

HTML и JS:

<script type="text/javascript" src="js/jquery.tools.min.js"></script>
<script type="text/javascript">
    $(function(){               
        $("#flashPlacement").flashembed(
            {
                src:"Main.swf"
            },
            {   //flashvars
                myJsonObj:
                {
                    someString:"string",
                    someNumber:123,
                    someOtherObj:
                    {
                        someString:"string2",
                        someNumber:456
                    }
                }
            }
        );
        $("#flashPlacement *").show();
    });
</script>

В части Flash я использовал Casalib 's FlashVarUtil. Но да, то, что сказал Кристофер У. Аллен-Пул (loaderInfo.parameters.myJsonObj), тоже сделает эту работу. (за это проголосовали)

Это будет String в JSON, это та часть, которую я не мог понять, задавая вопрос.

AS3:

import com.adobe.serialization.json.JSONDecoder;
import org.casalib.util.FlashVarUtil;
import org.casalib.util.StageReference;

StageReference.setStage(stage);
var jsonString:String = FlashVarUtil.getValue("myJsonObj");

//use as3corelib's JSONDecoder
//http://code.google.com/p/as3corelib/
var obj:Object = new JSONDecoder(jsonString).getValue();

//now it can be used like...
trace(obj.someOtherObj.someString); //output: string2
...