2012-01-26 5 views
2

나는 그런 액션 스크립트 3에서 내가 값을 읽어얻기 SWF 부울 매개 변수

/SWFUploader/upload.swf?single=true

로 내가 부르는 SWF 있습니다. 하지만 작동하지 않습니다. 여기 (첫 번째 블록이 http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html에서 가져온 것입니다) 내 테스트 코드입니다 :

var keyStr:String; 
var valueStr:String; 
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 
for (keyStr in paramObj) { 
    valueStr = String(paramObj[keyStr]); 
    trace(keyStr + " = " + valueStr); 
} 

var isSingle:Boolean = this.loaderInfo.parameters.single as Boolean; 
var isSingle1:Boolean = this.loaderInfo.parameters['single'] as Boolean; 
var isSingle2:Boolean = LoaderInfo(this.root.loaderInfo).parameters['single'] as Boolean; 
var isSingle3:Boolean = LoaderInfo(this.root.loaderInfo).parameters.single as Boolean; 
trace(isSingle + ", " + isSingle1 + ", " + isSingle2 + ", " + isSingle3); 

는 그리고 절망적이 추적되는 결과 두 줄이 : 내가 잘못

single = true 
false, false, false, false 

을 뭐하는 거지?

+0

아, 주조 문제입니다. 부울 대신에 위 코드 중 일부를 String으로 바꾸면 추적이 모두 "true"가됩니다. 그래서 내 질문은 잘 될 수 있습니다 : 어떻게 매개 변수 값 문자열 캐스팅 할 : "true"부울 : ActionScript에서 true (왜 어차피 일어나지 않습니다)? – dumbledad

+0

변수 유형을 가져 오려면이 trace (typeof (isSingle))를 사용하십시오. – mgraph

+0

감사합니다. mgraph는 이러한 종류의 문제를 디버깅하는 데 유용한 ActionScript 조각입니다. – dumbledad

답변

6

ActionScript가 비어 있고 null이 아님 문자열이 부울 true에 캐스팅되었습니다.

var singleStr:String = this.loaderInfo.parameters.single; 
var singleBool:Boolean = singleStr == "true"; 
+0

두 번째 라인은 실제로 캐스트가 아니지만 잘 작동합니다. 감사. – dumbledad