scaleform.minarto.com

FlashVars 가져오기 본문

ActionScript

FlashVars 가져오기

미나토 2007. 5. 17. 10:57
어제 고민에 빠졌던 LoaderInfo 문제를 해결하였다. 코드의 문제가 아닌 html 상의 문제로 cs3에서 제너레이트하는 html과 충돌이 있었던 것 같다.


html

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
        width="550"
        height="400"
        align="middle"
        id="test">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="test.swf?num=1" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="test.swf?num=1"
           width="550"
           height="400"
           autostart="false"
           quality="high"
           bgcolor="#ffffff"
           name="test"
           align="middle"
           allowScriptAccess="sameDomain"
           type="application/x-shockwave-flash"
           pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>



as3.0

var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
addChild(tf);

try
{
 var properties:String;
 var value:String;
 var parameters:Object = LoaderInfo(this.root.loaderInfo).parameters;
 for (properties in parameters)
 {
  value = String(parameters[properties]);
  tf.appendText(properties + " = " + value + "\n");
 }
}
catch (error:Error)
{
 tf.appendText(error);
}


 여기까지는 여기저기 검색해보면 나오게 되는 방식으로 값을 뿌려본 것이다.

그런데 한가지 더 발견한 것이 있다.


익스플로러(7)에서 테스트를 하면 예상했던 대로 num = 1 이라고 나오지만,
파이어폭스(2)와 오페라(9)에서는 (경로)test.swf?num = 1 이라고 나오게 된다.

요컨데 플래시에서 변수명으로 접근하려면 그걸 해결하려면 swf?변수명=값 으로 넣지 말고 FlashVars 를 이용해야 한다


html

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
        width="550"
        height="400"
        align="middle"
        id="test">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="test.swf" />
    <param name="quality" value="high" />
 <param name="FlashVars" value="kkk=1" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="test.swf"
           width="550"
           height="400"
           autostart="false"
           quality="high"
           bgcolor="#ffffff"
           FlashVars="kkk=1"
           name="test"
           align="middle"
           allowScriptAccess="sameDomain"
           type="application/x-shockwave-flash"
           pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>


첫번째 방식이나 두번째 방식이나 위의 코드에서 뿌려주는 것은 같다.
 
하지만 첫번째 방식으로는 변수명으로 접근을 할 수가 없고 두번째 방식으로는 접근할 수가 있다. 그러므로 브라우저 호환성을 위해서는 두번째 방식을 써야한다.