0

好的,我是 ActionScript 菜鸟。我可以做“点击这里去那里”之类的东西,所有的时间线脚本。

然后我把这个项目扔在我的腿上(因为我是“Flash Guy”),虽然我读过很多有意义的东西,但我需要有人告诉我在哪里编码。我保证一旦这一切结束我会回去学习真正的 AS3,我有书和一个很好的教程。

这是任务。我有一个 SWF 文件(我们将其称为 parent.swf),它要求用户在文本字段 (hospNameInput) 中输入名称,并将其保存到变量 (hName) 中。

var hName:String;

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

我需要在另一个 SWF(child.swf,由 parent.swf 加载)中使用字符串变量“hName”,以便将名称文本添加到文件的许多帧上的文本框中。它本质上是一个美化的幻灯片,在框架上具有一些交互性,他们希望能够为他们正在展示的人个性化它。

我在 child.swf 中有文本框,我想用 parent.swf 中的变量“hName”中的文本填充,例如:

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

就像我说的,我只是一个懦弱的时间线编码员。有人可以给我相当明确的说明,说明在每个 SWF 中放入什么以使其正常工作吗?

我保证会阅读书籍并学会正确执行此操作,外部 .as 文件等等!

4

2 回答 2

0

尝试通过 Loader 对象的 content 属性访问该变量。content 属性应该直接引用加载的 swf 的时间线。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#content

于 2013-02-10T00:40:27.377 回答
0

对于仍然遇到此问题的任何人,您可以尝试以下步骤...

  • 您必须使用代码创建文本框。首先将输入框添加到stage
  • 加载外部 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:一个

于 2013-02-12T07:13:29.550 回答