2

2 つのボタンを押して 2 つの異なる XML ファイルを切り替えようとしています。最初のボタンを押すと t2.wml をロードし、もう 1 つのボタンを押すと t1.xml をロードします。「num」を静的な値に設定するとすべてが機能しますが、押したボタンに応じてnumの値を変更したいと考えています。

明らかな何かを見逃したと思いますが、何がわからず、ここで立ち往生しています。

誰でもこの問題を解決する方法について何か考えがありますか? num の値を変更する関数が機能しないのはなぜですか? :)

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

stop();

var language:String;
var num:int;
var xmlData:XML = new XML ();   
var array:Array = ["t2.xml", "t1.xml"];
var loader_ul:URLLoader = new URLLoader();
loader_ul.load(new URLRequest(array[num]));



engBtn0.addEventListener(MouseEvent.CLICK, engButton);
sweBtn1.addEventListener(MouseEvent.CLICK, sweButton);
engBtn0.addEventListener(MouseEvent.CLICK, fileLoaded);
sweBtn1.addEventListener(MouseEvent.CLICK, fileLoaded);


function engButton (e:Event) {

    language = "eng";
    trace (language);
    trace (num);
    } // end engButton


 function sweButton (e:Event) {

    language = "swe";
    trace (language);
    trace (num);
    } // end sweButton



 function fileLoaded(e:Event)    {

    if (language == "eng"){
            num = 0;
            trace (num);
            xmlData = XML(loader_ul.data);
            myText_text.htmlText = xmlData.testeng;

    } else if (language == "swe") {

            num = 1;
            trace (num);
            xmlData = XML(loader_ul.data);
            myText_text.htmlText = xmlData.testswe;

    } else {
                    trace ("Error");
            }


  } // end fileLoaded

前もって感謝します!ここで本当に助けが必要です。

4

1 に答える 1

0

私は次のようにします:

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

stop();

var language: String;

var loader_ul: URLLoader = new URLLoader();
loader_ul.addEventListener(Event.COMPLETE, fileLoaded)

engBtn0.addEventListener(MouseEvent.CLICK, engButton);
sweBtn1.addEventListener(MouseEvent.CLICK, sweButton);

function engButton(e: Event) {
    language = "eng";
    loader_ul.load(new URLRequest('t2.xml');
} 

function sweButton(e: Event) {
    language = "swe";
    loader_ul.load(new URLRequest('t1.xml')); 
} 

function fileLoaded(e:Event) {
    var xmlData:XML = new XML(e.target.data);

    if(language == "swe"){
        myText_text.htmlText = xmlData.testswe;
    } else if(language == "eng" {
        myText_text.htmlText = xmlData.testeng;
    }
}

基本的に、ボタン自体から XML をロードし、 を追加します。eventListener完了すると、ロードされた xml を正しいテキストフィールドに配置するloader関数がトリガーされます。(XML をorfileLoadedよりも一般的なものに変更します。testswetesteng

それが役に立てば幸い。

より一般的なものにしたい場合は、次のようにします。

engBtn0.addEventListener(MouseEvent.CLICK, onButtonClick);
sweBtn1.addEventListener(MouseEvent.CLICK, onButtonClick);

function onButtonClick(e:MouseEvent):void {
    var xmlfile:String = "";

    switch(e.target.name){
        case 'engBtn0':
            language = 'eng';
            xmlfile = 't2.xml';
            break;
        case 'sweBtn1':
            language = 'swe';
            xmlfile = 't1.xml';
            break;
    }
    loader_ul.load(new URLRequest(xmlfile)); 
}

そして、 ;にeventlistenersますます多くcaseの s を追加します。switch

于 2013-08-06T11:58:03.727 に答える