2009-09-02 1 views
1

, 그것은 페이지로 리디렉션 것, 뭔가 같은 :Flash/AS3을 사용하여 URL 변수를 가져올 수 있습니까? 사용자가 링크를 클릭하면

www.domain.com/index.php?var=string

변수를 잡기 위해 AS3에서 가능 (var) ??

(예를 들어, PHP $ _GET과 같은 변수를 얻는 방법이 많이 있지만 웹 사이트는 순전히 플래시 기반입니다. PHP를 사용하여 값을 얻고 세션에 저장하고 전달하려고합니다. 메인 페이지가 Flash에 있기 때문에 양식에 저장하고 다른 페이지로 전달할 수 없었으므로 변수를 전달하기 위해 AS3을 사용해야합니다.

+0

가능한 중복 ] (http://stackoverflow.com/questions/2725231/how-to-get-obtain-variables-from-url-in-flash-as3) –

+0

이것은 중복이며, 여기에 답변이 주어졌습니다. http : // stackoverflow .com/a/2725365 –

답변

1

<object> 코드에서 FlashVars를 매개 변수로 사용하여 this tutorial을 확인하십시오. 기본적으로 PHP 또는 Javascript를 사용하여 주소 문자열에서 변수를 가져온 다음 <param> FlashVars 태그에 삽입 할 수 있습니다.

+0

또한 Adobe의 공식 문서 (http : //kb2.adobe)를 참조하십시오.co.kr/cps/164/tn_16417.html –

+0

링크를 제공해 주셔서 감사합니다. 나는 googled했다. 그러나 didnt는이 링크를 발견했다. 글쎄, 그것을 읽고 구현하는 데는 시간이 걸릴 것이다. 성공한다면,이 질문에 대한 가장 좋은 대답으로 당신의 대답을 투표 할 것입니다. –

2
import flash.external.ExternalInterface; 

var urlStr:String = ExternalInterface.call('window.location.href.toString'); 

이 호출은 JS에게 현재 페이지 URL을 제공하도록 요청합니다.

그런 다음이를 구문 분석하여 변수를 추출 할 수 있습니다. 예 : http://manfred.dschini.org/2008/05/12/as3-url-class/.

1

1 초 @ 대니얼스. 이 클래스를 사용하여 문자열을 구문 분석하고이를 호출하기 쉬운 객체에 넣을 수 있습니다.

package 
{ 
    import flash.external.*; 

    public class QueryString 
    { 
     private var _queryString:String; 
     private var _all:String; 
     private var _params:Object; 

     public function QueryString(url:String='') 
     { 
      readQueryString(url); 
     } 
     public function get getQueryString():String 
     { 
      return _queryString; 
     } 
     public function get url():String 
     { 
      return _all; 
     } 
     public function get parameters():Object 
     { 
      return _params; 
     }  

     private function readQueryString(url:String=''):void 
     { 
      _params = new Object(); 
      try 
      { 
       _all = (url.length > 0) ? url : ExternalInterface.call("window.location.href.toString"); 
       _queryString = (url.length > 0) ? url.split("?")[1] : ExternalInterface.call("window.location.search.substring", 1); 
       if(_queryString) 
       { 
        var allParams:Array = _queryString.split('&'); 
        //var length:uint = params.length; 

        for(var i:int=0, index=-1; i < allParams.length; i++) 
        { 
         var keyValuePair:String = allParams[i]; 
         if((index = keyValuePair.indexOf("=")) > 0) 
         { 
          var paramKey:String = keyValuePair.substring(0,index); 
          var paramValue:String = keyValuePair.substring(index+1); 
          _params[paramKey] = paramValue; 
         } 
        } 
       } 
      } 
      catch(e:Error) 
      { 
       trace("Some error occured. ExternalInterface doesn't work in Standalone player."); 
      } 
     } 
    } 
} 

그리고

var myPath:QueryString = new QueryString("http://www.studiosedition.com/?page=articles"); 
trace(myPath.parameters.page); 

이 사이트

http://blog.studiosedition.com/2010/03/query-string-as3/

+0

매력처럼 작동합니다. myPath.parameters.yourvarname과 같이 변수 이름을 URL에서 사용하는 이름과 일치하도록 변경하십시오. 또한 브라우저를 통해 테스트해야하므로 일반 Flash Player를 사용하면 추적 기능을 사용할 수 없습니다. 스테이지에 동적 텍스트 필드를 추가하고 인스턴스 이름을 vars로 지정하고 vars.text = "vars"+ myPath.parameters.yourvarname을 사용했습니다. – crooksy88

1

이에서 촬영은 내 AS3로 GET 쿼리 문자열을 전달하는 데 사용되는 것입니다.

먼저, 여기에 PHP에서 FlashVars를 수집 기본 타임 라인에서 작업을의 (developphp.com에서 수정 된 코드) :

// Claim the offset Number that spaces the text 
// fields so they are not right on top of each other 
var offSet:Number = 18; 
// Claim keyStr variable as a string 
var keyStr:String; 
// Claim valueStr variable as a string 
var valueStr:String; 
// Create the paramObj Object and set it to load parameters 
// from the root level being sent in by FlashVars externally 
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 

// Set Text Format Object, its attributes and values 
var format:TextFormat = new TextFormat(); 
     format.font = "Verdana"; 
     format.size = 15; 
// Create the loop that iterates over all of the variables you send in using FlashVars  
var i=0; 
for (keyStr in paramObj) { 
     i++; 
     valueStr = String(paramObj[keyStr]);  // This line gets the values of each variable sent in 
     var myText:TextField = new TextField(); // Create a text field to read and access each var 
     myText.defaultTextFormat = format; // Set the formatting into the text field properties 
     myText.text = keyStr + " value is: " + valueStr; // Use the vars here, I place into text field waiting 
     myText.y = offSet*i; // Before we place each text field on stage we offSet it 
     myText.width = 380; // Set the width of the text field 

     this.addChild(myText); // Now this line actually places the text field on stage 

} 

은 여기에 (도 developphp.com에서 수정)를 PHP를의

<?php 
$vars = http_build_query($_GET); 
?> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Editor</title> 
<script language="javascript">AC_FL_RunContent = 0;</script> 
<script src="AC_RunActiveContent.js" language="javascript"></script> 
</head> 
<body bgcolor="#333333"> 
<script language="javascript"> 
    if (AC_FL_RunContent == 0) { 
     alert("This page requires AC_RunActiveContent.js."); 
    } else { 
     AC_FL_RunContent(
      'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 
      'width', '400', 
      'height', '400', 
      'src', 'editor', 
      'FlashVars', '<?php echo $vars; ?>',    
      'quality', 'high', 
      'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 
      'align', 'middle', 
      'play', 'true', 
      'loop', 'true', 
      'scale', 'showall', 
      'wmode', 'window', 
      'devicefont', 'false', 
      'id', 'editor', 
      'bgcolor', '#ffffff', 
      'name', 'editor', 
      'menu', 'true', 
      'allowFullScreen', 'false', 
      'allowScriptAccess','sameDomain', 
      'movie', 'editor', 
      'salign', '' 
      ); //end AC code 
    } 
</script> 
<noscript> 
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="400" id="AS3_php_Var_into_flash" align="middle"> 
    <param name="allowScriptAccess" value="sameDomain" /> 
    <param name="allowFullScreen" value="false" /> 
    <param name="movie" value="editor.swf" /> 
    <param name="quality" value="high" /> 
    <param name="bgcolor" value="#ffffff" />  
    <param name="FlashVars" value="<?php echo $vars; ?>" /> 
    <embed src="editor.swf" FlashVars="<?php echo $vars; ?>" quality="high" bgcolor="#ffffff" width="400" height="400" name="editor" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 
    </object> 
</noscript> 
</body> 
</html> 

http_build_query ($ _ GET)는 URL 쿼리 문자열을 Flash 용 쿼리 문자열로 다시 변환하는 편리한 방법입니다.

나는이 간단한 작업을 수행하기 위해 해킹이나 클래스 가져 오기가 필요 없기 때문에이 방법을 선호합니다.

1

이것이 필요한 것입니다.

private function getParams():URLVariables 
{ 
    var url:String = ExternalInterface.call('window.location.href.toString'); 
    var parts:Array = url.split("?"); 
    if(parts.length == 2) 
    { 
     var uv:URLVariables = new URLVariables(parts[1]); 
     return uv; 
    } 
    else 
    { 
     return null; 
    } 
} 

쓰기 귀하의 예제 (www.domain.com/index.php?var=string)에서 사용하려면

var params:URLVariables = getParams(); 
trace(params.var); // traces string 
[받는 방법/플래시 AS3에서 URL에서 변수를 얻기의
관련 문제