ActionScript
FlashVars 가져오기
미나토
2007. 5. 17. 10:57
어제 고민에 빠졌던 LoaderInfo 문제를 해결하였다. 코드의 문제가 아닌 html 상의 문제로 cs3에서 제너레이트하는 html과 충돌이 있었던 것 같다.
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>
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>
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>
첫번째 방식이나 두번째 방식이나 위의 코드에서 뿌려주는 것은 같다.
하지만 첫번째 방식으로는 변수명으로 접근을 할 수가 없고 두번째 방식으로는 접근할 수가 있다. 그러므로 브라우저 호환성을 위해서는 두번째 방식을 써야한다.