0

OK、私は ActionScript 初心者です。「ここをクリックしてそこに行く」ようなこと、すべてのタイムラインのスクリプト作成を行うことができます。

それから私はこのプロジェクトを膝の上に投げ捨てました(私は「フラッシュガイ」だからです)。私は意味のあるものをたくさん読みましたが、何をどこにコーディングするかを正確に教えてくれる人が必要です。これが終わったら戻って本当の AS3 を学ぶことを約束します。書籍と優れたチュートリアルがあります。

これがタスクです。テキストフィールド (hospNameInput) に名前を入力するようユーザーに要求し、それを変数 (hName) に保存する SWF ファイル (parent.swf と呼びます) が 1 つあります。

var hName:String;

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

ファイルの多くのフレームのテキスト ボックスに名前テキストを追加するために、別の SWF (parent.swf によってロードされる child.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

これでまだ問題がある場合は、次の手順を試すことができます...

  • コードを使用してテキスト ボックスを作成する必要があります。最初に入力ボックスをステージに追加します
  • 外部 SWF を読み込み、MovieClip オブジェクトとして扱います。
  • テキスト ボックス (保存された入力を含む) を MovieClip (読み込まれた SWF) に子として追加します。

以下に試すコードの例をいくつか示します。入力ボックスを追加し、ユーザーが「SWF の読み込み」ボタンをクリックすると、外部 SWF が読み込まれ、入力されたテキストのコピーを含むテキスト ボックスが追加されます。「SWF 読み込み」ボタンを作成するには、赤い四角のような単純なグラフィックを作成し、movieClip に変換して参照名「btn_load_SWF」を付けます。(コードはボタンのように機能します)。また、コードでテキスト ボックスを作成する場合、表示する X と Y の位置をメモしておくとよいでしょう。情報ツール (CTRL+I) を使用して、ステージ上のマウス/オブジェクトの位置のヒントを取得します。とにかく、すべてのコードは1つのフレームに収まります..

//-- 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 ファイルという 1 か所にまとめました。別のフレームとコードのセットに移行したときに何が起こるかは予測できません。そうは言っても、これはタイムラインと動作からテストされました。ありがとう、VC:One

于 2013-02-12T07:13:29.550 に答える
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 に答える