2011-12-25 8 views
0

私はinputTextFieldを持っていて、GamePageクラスの私のinputTextFieldには、あなたがinputTextFieldで書くことができるはずのテキストを取って、inputTextFieldのテキストをxml-filのノードで置き換えたいと思っています。上の私のXmlクラスでは、テキストをinputTextField、exから変換するコードが必要です。私がinputTextFieldに "monkey"と書くと、xml-filの{ANIMAL}ノードをmonkeyに置き換えたいと思います。私のXML内のノードをinputTextFieldから置き換えるにはどうすればいいですか?

package 
{ 

    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.text.TextField; 
    import flash.text.TextFormat; 
    import flash.xml.XMLDocument; 
    import flash.xml.XMLNode; 

    public class Xml extends Sprite 
    { 

     private var xmlText:TextField; 
     private var xml:XML; 
     private var textBox:TextField; 

     public function Xml() 
     { 

      var xmlString:URLRequest = new URLRequest("tales.xml"); 
      var xmlLoader:URLLoader = new URLLoader(xmlString); 

      xmlLoader.addEventListener("complete", init); 

      function init(event:Event):void 
      { 

       var xml:XML = XML(xmlLoader.data); 
       var xmlText:TextField = new TextField(); 

       addChild(xmlText); 

       xmlText.width = 500; xmlText.height = 500; xmlText.x = 5; xmlText.y = 100; 
       xmlText.text = xml.tale; XML.ignoreWhitespace = true; 

       var format:TextFormat = new TextFormat(); 
       format.color = 0x990000; 
       format.size = 18; 

       xmlText.setTextFormat(format); 
      } 
     } 
    } 
} 

これは私のxml-FIL(Google Translated from Swedish)です:

{CITY}から来た{ANIMAL}がかつてありました。 {動物}はサンタのように小さい小さな赤いジュリアスに住んでいました。 {CITY}にはサンタクロースと名前{NAME}もありました。 {ANIMAL}と{NAME}は何年も前から親友でしたが、彼らは同じ小さな赤い家に住んでいました。

+0

英語で質問をできるだけ具体的に投稿してください。また、コードを書式設定して今後作成してみてください。それ以外に、あなたのXMLの内容は何ですか? –

+0

私の質問は英語で、私はちょうど私のxml {nodes}を置き換えたいと思う...はい、私のコードを将来的にフォーマットするつもりです。 – PhatToni

+0

ああ、私の悪い、たぶん、あなたのテキストの本文に少しの情報を入力すればもっと明らかになるでしょう(今はタイトルだけがその質問を説明しています)。私はテキストがあなたのXMLの物語であることに気付かなかった。 –

答えて

1

InputFieldの変更でテキストを置き換える場合は、InputFieldsEvent.CHANGEを聞く必要があります。このリスナー内では、置換を行うメソッドにリダイレクトできます。 XMLをロードした後、このメソッドを呼び出して、初期値を取り除く必要があります。

コード例でInputFieldが表示されませんでしたが、ここではセットアップ方法の簡単な例を示します。私は私が代わりにのみ最初に発生したすべてのインスタンスにフラッシュ検索を行うことが「G」(グローバル)フラグを使用する正規表現を使用していupdateTale()メソッド内

private var animalInputField:TextField; 
private var cityInputField:TextField; 
private var nameInputField:TextField; 
private var xmlText:TextField; 

public function Xml() 
{ 

    var xmlString:URLRequest = new URLRequest("tales.xml"); 
    var xmlLoader:URLLoader = new URLLoader(xmlString); 

    xmlLoader.addEventListener(Event.COMPLETE, init); 

    function init(event:Event):void 
    { 

     xml = XML(xmlLoader.data); 
     xmlText = new TextField(); 

     addChild(xmlText); 

     xmlText.width = 500; xmlText.height = 500; xmlText.x = 5; xmlText.y = 100; 
     xmlText.text = xml.tale; 
     XML.ignoreWhitespace = true; 

     var format:TextFormat = new TextFormat(); 
     format.color = 0x990000; 
     format.size = 18; 

     xmlText.setTextFormat(format); 

     // create inputfields 
     animalInputField = createInputField(); 
     cityInputField = createInputField(); 
     nameInputField = createInputField(); 

     cityInputField.x = 100; 
     nameInputField.x = 200; 

     updateTale(); 
    } 
} 

private function createInputField() : TextField 
{ 
    var inputField:TextField = TextField(addChild(new TextField())); 
    inputField.type = TextFieldType.INPUT; 
    inputField.text = '...'; 

    inputField.addEventListener(Event.CHANGE, onInputChanged); 

    return inputField; 
} 

private function onInputChanged(e:Event):void 
{ 
    updateTale(); 
} 

private function updateTale() : void 
{ 

    var tale:String = xml.tale; 

    tale = tale.replace(/{ANIMAL}/g, animalInputField.text); 
    tale = tale.replace(/{CITY}/g, cityInputField.text); 
    tale = tale.replace(/{NAME}/g, nameInputField.text); 

    xmlText.text = tale; 
} 

はあなたの例では、あなたがプライベートVAR xmlTextxmlを持っていることに注意していませんがinit(event:Event)リスナーの中にあなたがxmlTextと呼ばれる2つのローカル変数やxml aswellを作成するためにそれらを使用することはありませんしてください。

+0

ありがとう、rvmook !!!私は英語で私の物語を書いたはずです、残念私の悪い。あなたのコードの例を試してみよう... – PhatToni

+0

問題はありません、それがどのように動いたか教えてください –

+0

コードデントの仕事。私のxml-fil、{DJUR}と{STAD}の最初の行に消えてしまったことが起こりました。そして、それが起こった唯一のことです... – PhatToni

関連する問題