2013-02-09 103 views
0

好的,我是ActionScript noob。我可以做「點擊這裏去」那種東西,所有的時間線腳本。從另一個SWF文件訪問SWF文件中的變量

然後我把這個項目放在我的腿上(因爲我是「閃電俠」),儘管我已經閱讀了一些有意義的東西,我需要有人告訴我到底該怎麼編碼哪裏。我保證,一旦這個結束,我會回去學習真正的AS3,我有書和一個很好的教程。

這是任務。我有一個SWF文件(我們稱它爲parent.swf),它要求用戶在文本字段(hospNameInput)中輸入一個名稱,並將其保存到變量(hName)中。

var hName:String; 

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

我需要以加名文本到文本上我的文件的許多幀箱使用字符串變量「hName」另一個SWF(child.swf,這是由parent.swf加載)。它本質上是一個榮耀的幻燈片,在框架上具有一定的互動性,並且他們希望能夠爲他們正在展示的人進行個性化。

我在child.swf文本框,我想從parent.swf在變量「hName」文本來填充,如:

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

就像我說的,我只是一個懦弱的時間線編碼器。有人能夠給我相當明確的指示,告訴我們爲什麼要在每個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:一個

相關問題