블로그 이미지
플래시 개발자랍니다... 하지만 여긴 플래시 전문 블로그가 아닌 그냥 개인 블로그랍니다
미나토

Recent Comment

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 40,987total
  • 8today
  • 22yesterday

'LoaderInfo'에 해당되는 글 2건

  1. 2007/05/17 FlashVars 가져오기
  2. 2007/05/16 LoaderInfo class 의 문제...
2007/05/17 10:57 Flash Platform
어제 고민에 빠졌던 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>


첫번째 방식이나 두번째 방식이나 위의 코드에서 뿌려주는 것은 같다.
 
하지만 첫번째 방식으로는 변수명으로 접근을 할 수가 없고 두번째 방식으로는 접근할 수가 있다. 그러므로 브라우저 호환성을 위해서는 두번째 방식을 써야한다.
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토
2007/05/16 13:51 Flash Platform
아직 한참 공부 중이니 내가 잘못하고 있는 것일 수도 있다.


AS 2.0 까지는 swf?변수명=값 을 받아오려면 바로 변수명으로 접근을 받아 String 로 리턴을 받을 수 있었다.
3.0에서는 그 방법이 더이상 불가능하기 때문에 LoaderInfo 클래스를 이용해야 한다.



레퍼런스에는 딱히 샘플이 안나와 있고 해서 테스트 샘플을 만들어봤는데 몇몇 포럼이나 인터넷을 돌아다니며 찾아본 바로는 딱히 다르지 않다.


var p:Object = root.loaderInfo.parameters;
var txt:TextField = new TextField();
txt.autoSize = TextFieldAutoSize.LEFT;
for(var i in p)
{
    txt.appendText(i + " = " + p[i]);
}



그러나 아무 값도 나오질 않는다... 뭐가 잘못된걸까...
흠... 좀 더 연구해봐야겠다
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토