Re: flash&xml,可以幫我看一下程式碼嗎
※ 引述《sshain (飛飛)》之銘言:
: 不知為什麼跑不出來
: doc=new XML();
: doc.load("Homework1.xml");
: doc.ignoreWhite=true
: doc.onLoad=linkdata_onLoad;
: stop();
: function linkdata_onLoad (success){
: if (success)
: {
: e=this.childNodes;
^^^^^^^^^^^^^^^^^
e=this.childNodes[0] // = firstChild
: trace(e);
: e1=e[0].childNodes;
^^^^^^^^^^^^^^^^^^
e1=e.childNodes[0]//
: e11=e1[0].childNodes;
: title=e11[0].firstChild.nodeValue;
: ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
: 這行不知為啥跑不出來
: 就是要顯示Homewrok1的這個
: <內容>下列哪一項正確</內容>
: option1.content=e11[1].firstChild.nodeValue;
: option2.content=e11[3].firstChild.nodeValue;
: option3.content=e11[5].firstChild.nodeValue;
: }
: };
: option1.onRollOver=function () {
: gotoAndStop(2);
: };
: option1.onRollOut=function () {
: gotoAndPlay(1);
: };
: option2.onRollOver=function () {
: gotoAndStop(2);
: };
: option2.onRollOut=function () {
: gotoAndPlay(1);
: };
: option3.onRollOver=function () {
: gotoAndStop(2);
: };
: Homework1的程式碼
: <?xml version="1.0" encoding="UTF-8" ?>
: <content>
: <題目>
: <內容>下列哪一項正確</內容>
: <選項1>(1)3-1=2</選項1>
: <答案>right</答案>
: <選項2>(2)1-1=1</選項2>
: <答案>wrong</答案>
: <選項3>(3)2-1=2</選項3>
: <答案>wrong</答案>
: </題目>
: </conten>
^^ 好像少了一個 t
: 麻煩各位看一下好嗎<(_ _)>謝謝
其實啊,
你的問題最主要是那個 igorneWrite 不知是不是真的是你想像中的作用,
node之間的換行已經是一個child了,
另外那個 <? xml .... ?>也算是 node.
所以你的childNodes的位置會估算錯誤,
如果你用這一段看看 :
for (var i=0; i<=e.childNodes.length; i++){
trace("e.childNodes["+i+"]="+e.childNodes[i])
}
就會看得一清二楚,
告訴你如果我做會怎樣做,
第一, nodeName 我應該不會取中文,
第二, 我把格式這樣定: (按照你的取名法)
<問題 num="1">
<內容>YYYYYYYYYYY</內容>
<選項 num="1" ans="right">XXXXXXX</選項>
<選項 num="2" ans="wrong">XXXXXXX</選項>
<選項 num="3" ans="wrong">XXXXXXX</選項>
</問題>
<問題 num="2">
<內容>YYYYYYYYYYY</內容>
<選項 num="1" ans="right">XXXXXXX</選項>
<選項 num="2" ans="wrong">XXXXXXX</選項>
<選項 num="3" ans="wrong">XXXXXXX</選項>
<選項 num="4" ans="wrong">XXXXXXX</選項>
</問題>
看得出選項改成這樣的好處吧, 就是不一定是只三個選項,
不過, 如果attribute用中文的話, flash應該讀不出來...
第三, 我會採取"認標纖"的策略,
就是
for(var n=0; n<=X.childNodes.length; n++){
if(X.childNodes[n].nodeName=="問題"){
myBuildQuestion(X.childNodes[n])
}
}
function myBuildQuestion(obj){
for(var n=0; n<=obj.childNodes.length; n++){
if(obj.childNodes[n].nodeName=="內容"){
myBuildContent(obj.childNodes[n])
} else if(obj.childNodes[n].nodeName=="選項"){
myBuilChoice(obj.childNodes[n])
}
}
}
function myBuildChoice(obj){
//建立選項
}
function myBuildContent(obj){
// 建立內容
}
這樣的好處是, 可以彈性的處理我想要和不想要的資訊,
只處理我認得的東西, 然後再call不同的function來處理,
另外, 這樣的話, xml檔可以換行, ^o^
如果用這種 e.firstChild.ChildNodes[3].ChildNodes[2]
這種方法來寫的話, 是可以, 不過寫得有點硬....
以後在 .xml 某個地方插一句的話,
那些第幾個child都要重算了,
好! 我已經把我不少的經驗告訴你了,
祝你愉快的完成!
--
我是一杯心酸的果汁...
果汁內懸浮著很多傷心的粒子...
我正需要一支攪拌匙不斷的把我攪拌...
免得粒子在寧靜中沉澱成塊......。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.85.48.159
推
推 163.13.177.98 11/12, , 1F
推 163.13.177.98 11/12, 1F
Flash 近期熱門文章
PTT數位生活區 即時熱門文章