2013-02-09 2 views
0

좋아, 나는 ActionScript 멍청이다. 나는 "거기에 가기 위해 여기를 클릭하십시오"라고하는 일종의 모든 타임 라인 스크립트를 할 수 있습니다.다른 SWF 파일에서 SWF 파일의 변수에 액세스

그런데 나는이 프로젝트를 무릎에 던지게했다. (나는 "플래시 가이"이기 때문에) 그리고 내가 이해할만한 종류의 물건을 읽었지 만, 코드 작성 대상을 정확히 말해 줄 사람이 필요하다. 어디에. 일단 이것이 끝나고 진짜 AS3을 배웠다면 나는 돌아갈 것이라고 약속한다. 나는 책과 좋은 튜토리얼을 가지고있다.

다음은 작업입니다. 사용자에게 텍스트 필드 (hospNameInput)에 이름을 입력하도록 요청하고 변수 (hName)에 저장하는 하나의 SWF 파일 (parent.swf라고합니다)이 있습니다.

var hName:String; 

hospNameInput.addEventListener(Event.CHANGE, inputCapture1); 
function inputCapture1(evt:Event):void 
{ 
hName = hospNameInput.text; 
} 

나는 내 파일의 많은 프레임에 상자를 텍스트로 이름 텍스트를 추가하기 위해 다른 SWF (parent.swf에 의해로드됩니다 child.swf를)에서 문자열 변수 "hName"를 사용해야합니다. 본질적으로 프레임에 몇 가지 상호 작용 기능이있는 영광스러운 슬라이드 쇼이며, 프레젠테이션하는 사람들에게 개인화 할 수 있기를 원합니다. 내가 말했듯이

var frameHeader:String = "01 " + hName + " Today"; 
frameHeader1.text = frameHeader; 
chartLabel.text = hName + " Analysis"; 

, 난 그냥 해요 :

나는 내가 좋아하는, parent.swf에서 변수 "hName"의 텍스트를 채우는 싶습니다 child.swf를 텍스트 상자가 멍청한 타임 라인 코더. 다른 SWF에서이 작업을 수행하기 위해 무엇을 넣어야할지 명확하게 명시 할 수 있습니까?

나는 책을 읽고이 일을 올바르게 배웁니다. 외부 .as 파일과 모든 것을 !!

답변

0

, 당신은 ... 당신은 코드를 사용하여 텍스트 상자를 만들 필요가

  • 를 다음 단계를 시도 할 수 있습니다. 스테이지에 입력 상자를 먼저 추가하십시오.
  • 외부 SWF를로드하고 MovieClip 객체로 처리하십시오.
  • 입력 된 텍스트가있는 텍스트 상자를 MovieClip (로드 된 SWF)에 추가합니다.

아래에서 시도 할 몇 가지 예제 코드가 있습니다. 입력 상자를 추가하고 사용자가 "SWF로드"버튼을 클릭하면 외부 SWF를로드 한 다음 텍스트 상자에 입력 된 텍스트 사본을 추가합니다. "SWF로드"버튼을 만들려면 빨간색 사각형과 같은 간단한 그래픽을 만들고 movieClip으로 변환 한 다음 참조 이름 "btn_load_SWF"를 지정하십시오. (코드는 여전히 버튼처럼 작동합니다). 또한 코드로 텍스트 상자를 만들 때 X & Y 위치에 노트를 표시하고 싶을 수도 있습니다. 스테이지에서 마우스/개체 위치에 대한 힌트를 얻으려면 정보 도구 (CTRL + I)를 사용하십시오. 어쨌든 모든 코드는 한 프레임에 들어갑니다.

//-- For later referencing of Child.swf as though it's MovieClip on stage named "my_Child_Swf" 
var my_Child_Swf:MovieClip; 

//-- create User Input textbox 
var input_txt:TextField = new TextField(); 
input_txt.type = "input"; 
input_txt.border = true; 
input_txt.x = 50; 
input_txt.y = 100; 

//-- create string to hold User Input for passing onto a Child.swf textbox 
var saved_text:String; 

//-- create Name textbox for Child.swf (later will contain text of "saved_text") 
var name_txt:TextField = new TextField(); 
name_txt.type = "dynamic"; 
//name_txt.border = true; 
name_txt.x = 10; 
name_txt.y = 10; 
name_txt.width = 50; 

//-- Now add User Input box to screen 
stage.addChild(input_txt); 

//-- load SWF 
var swf_loader:Loader = new Loader(); 

//add loader object to stage BEFORE you do anything with external SWF.. 
stage.addChild(swf_loader); 
btn_load_SWF.buttonMode = true; 
btn_load_SWF.addEventListener(MouseEvent.CLICK, load_Child_SWF); 

//Button control function 
function load_Child_SWF (event:MouseEvent) : void 
{ 
    saved_text = input_txt.text; //capture text as we begin load of Child SWF 
    trace("input_txt is..." + saved_text); //trace is for testing/confirmation 

    swf_loader.load (new URLRequest ("Child.swf")); 
    swf_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, Child_SWF_ready); 
} 

function Child_SWF_ready (evt:Event) : void 
{ 
    swf_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, Child_SWF_ready); 
    swf_loader.x = stage.stageWidth/2; 
    swf_loader.y = 200; 

    //Treat the Loader contents (Child.swf) as a MovieClip named "my_Child_Swf" 
    my_Child_Swf = swf_loader.content as MovieClip; 

    //Position of text when adding to Child SWF 
    //note: Its top-left corner is new X & Y point set to 0 
    name_txt.x = 10; //10 pixels from 0 point of Child SWF 
    name_txt.y = 10; 

    updateText(); //do instructions inside function "updateText" 
    my_Child_Swf.addChild(name_txt); //add (updated) name text to Child SWF 

} 

function updateText() : void 
{ 
    name_txt.text = saved_text; //apply the saved_input String here 
} 

시작하기에 충분합니다. 들여다 볼 수있는 다른 방법은 글꼴을 설정하고 포함하는 방법, 코드를 통해 텍스트 크기 & 등을 설정하는 것입니다. 타임 라인에서 코딩 작업을 수행하는 기록은 최선의 방법이 아닙니다. 내 모든 코드를 한 곳, .as 파일에 넣었습니다. 나는 당신이 다른 프레임 & 세트의 코드로 이동할 때 일어날 일을 예측할 수 없다. 즉, 이것은 타임 라인 및 작업에서 테스트되었습니다.감사합니다, VC : One