我是使用Flash的新手,我試圖使用flash cs5和as3創建多類型問答遊戲。在遊戲中,內容或數據被寫入一個xml文件。如何解決此問題:TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法
我遇到了一系列的問題,我覺得有點難以知道可以使用什麼解決方案。
我有一個可變QNO。 qno用於確定程序將要調用的問題的數量。在我的遊戲中,我需要輸出5個問題。如果qno達到5,程序應該調用將顯示記分牌的下一幀。我的問題是,qno不增加。這個問題會影響我的第三個問題,我會稍後說明。 我已經想通了,這是導致問題的錯誤:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
我該如何解決這個問題?解決^^(動態文本引起的問題,受影響的問題,現在choices.but固定 我已經說過,我打電話的問題,並在XML文件中的選擇。該計劃是調用的代碼,但我也遇到一個問題。它不顯示完整的問題和選擇。我的意思的是,例如,問題是,如何鳥只吃?當你運行程序時,它輸出怎麼做b它與選項一樣,它沒有顯示完整的問題和選擇
這還不是那麼重要,但它是關於得分。我不知道程序是否增加了正確和錯誤的答案變量。但它已經有了一個代碼。我知道在處理這個問題之前我必須先解決第一個問題。
這是代碼集,我使用
這是用於呼叫,其位於框架1
var questions:Array=new Array();
var answers:Array=new Array();
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadXML);
loader.load(new URLRequest("sample.xml"));
function loadXML(e:Event):void
{
var myxml = new XML(e.target.data);
var loop =myxml.ques.length();
for (var i=0;i<loop;i++)
{
questions[i]=myxml.ques[i].q1;
answers[i]=[myxml.ques[i].op1,myxml.ques[i].op2,myxml.ques[i].op3];
}
gotoAndPlay(2);
}
stop();
的XML文件中的代碼這是問題所在的主要代碼
var qno=0;
var rnd1;
var rnd2;
tick.visible=false;
cross.visible=false;
var right_answers=0;
var wrong_answers=0;
function change_question()
{
if(tick.visible)
{
right_answers++;
}
if(cross.visible)
{
wrong_answers++;
}
if(qno==1)
{
gotoAndPlay(3);
}
else
{
tick.visible=false;
cross.visible=false;
rnd1=Math.ceil(Math.random()*3);
rnd2=Math.ceil(Math.random()*questions.length)-1;
q.text=questions[rnd2];
if(questions[rnd2]=="x")
{
change_question();
}
questions[rnd2]="x";
enable_disable(1);
if(rnd1==1)
{
opt1.text=answers[rnd2][0];
opt2.text=answers[rnd2][1];
opt3.text=answers[rnd2][2];
}
if(rnd1==2)
{
opt1.text=answers[rnd2][2];
opt2.text=answers[rnd2][0];
opt3.text=answers[rnd2][1];
}
if(rnd1==3)
{
opt1.text=answers[rnd2][1];
opt2.text=answers[rnd2][2];
opt3.text=answers[rnd2][0];
}
}
}
function enable_disable(a)
{
if(a==0)
{
shade1.mouseEnabled=false;
shade2.mouseEnabled=false;
shade3.mouseEnabled=false;
}
if(a==1)
{
shade1.mouseEnabled=true;
shade2.mouseEnabled=true;
shade3.mouseEnabled=true;
}
}
change_question();
next_b.addEventListener(MouseEvent.CLICK, ButtonAction1);
function ButtonAction1(eventObject:MouseEvent)
{
qno++;
change_question();
}
shade1.addEventListener(MouseEvent.CLICK, ButtonAction2);
shade2.addEventListener(MouseEvent.CLICK, ButtonAction3);
shade3.addEventListener(MouseEvent.CLICK, ButtonAction4);
function ButtonAction2(eventObject:MouseEvent)
{
enable_disable(0);
if(rnd1==1)
{
tick.visible=true;
tick.y=shade1.y;
}
else
{
cross.visible=true;
cross.y=shade1.y;
}
}
function ButtonAction3(eventObject:MouseEvent)
{
enable_disable(0);
if(rnd1==2)
{
tick.visible=true;
tick.y=shade2.y;
}
else
{
cross.visible=true;
cross.y=shade2.y;
}
}
function ButtonAction4(eventObject:MouseEvent)
{
enable_disable(0);
if(rnd1==3)
{
tick.visible=true;
tick.y=shade3.y;
}
else
{
cross.visible=true;
cross.y=shade3.y;
}
}
stop();
我希望有人能幫我解決我的問題,或者是什麼導致問題以這種方式行事。
我已經檢查過代碼並重新輸入了它。我發現引起程序的真正問題是增量函數。 qno,不會增加 – Rovy
TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 \t at quiz_fla :: MainTimeline/change_question() \t at quiz_fla :: MainTimeline/ButtonAction1() – Rovy
這只是表示您試圖訪問尚未實例化或具有空值的對象...可能是由「tick」或「cross」造成的 – PatrickS