第八章:第二個(gè)版本選擇題的制作
讀到這你發(fā)現(xiàn)什么,我是發(fā)現(xiàn)了,MOOCK不是在教AS,他簡(jiǎn)直是在上編程課。
在第一個(gè)版本的制作里你發(fā)現(xiàn)了什么缺點(diǎn)?是的,輸入了很多次AS,很麻煩。 我們要做的是用函數(shù)來集中我們的代碼,只有集中了才好修改,越復(fù)雜的程序越是如此(想象一下在很多個(gè)MC之間查代碼,真是頭痛,當(dāng)然是集中一塊好) 這個(gè)多選題,我們就歸結(jié)成兩個(gè)函數(shù)吧answer和gradeUser
代碼(可以直接看源程序,在上面地址那個(gè)ZIP里面的quiz-version2.fla): 大部分的代碼都被集中到第一幀了,千萬不要被一大堆代碼嚇著了,代碼這么長(zhǎng),只是為了讓閱讀者看得更清楚而已。(其實(shí)越短的代碼才越可怕呢,呵呵) // Stop the movie at the first question stop ();
// Initialize main timeline variables 定義變量 var displayTotal; // Textfield for displaying user's score var numQuestions = 2; // Number of quiz questions var q1answer; // User's answer for question1 var q2answer; // User's answer for question2 var totalCorrect = 0; // Number of questions answered correctly 以上和例一一樣 var correctAnswer1 = 3; // The correct choice for question 1 第一題的正確答案 var correctAnswer2 = 2; // The correct choice for question 2 第二題的正確答案
// Function to register user's answers 這個(gè)函數(shù)的功能是提交答題者的答案 function answer (choice) { answer.currentAnswer++; //現(xiàn)在answer.currentAnswer是1,正在提交的是第一題,下一次answer.currentAnswer就變成2,代表提交的是第二題 set ("q" + answer.currentAnswer + "answer", choice); // 不復(fù)雜不復(fù)雜,"q" + answer.currentAnswer + "answer"第一題的時(shí)候就是q1answer,第二題是q2answer,把參數(shù)choice傳過來的值放到兩個(gè)變量里面而已 if (answer.currentAnswer == numQuestions) { // 判斷是不是兩題都答完了,是就轉(zhuǎn)到問題結(jié)束幀 gotoAndStop ("quizEnd"); } else { gotoAndStop ("q" + (answer.currentAnswer + 1)); } }
// Function to tally user's score 這個(gè)函數(shù)是改題的 function gradeUser() { // Count how many questions user answered correctly 將兩個(gè)答案和正確答案比較,對(duì)就totalCorrect加一 //此處用了一個(gè)for循環(huán),大家如有疑問的,可以查AS字典,在帝國(guó)就有中文版 for (i = 1; i <= numQuestions; i++) { // 下面用的eval有必要說一下,它的作用是將字符串和變量組成一個(gè)新的變量名,是個(gè)很方便的功能 if (eval("q" + i + "answer") == eval("correctAnswer" + i)) { totalCorrect++; } }
// Show user's score in an on-screen text field 將答案顯示出來,與第一個(gè)例子同 displayTotal = totalCorrect; }
好了,第一幀的函數(shù)寫好了,之后每個(gè)答案的選擇按鈕就簡(jiǎn)單了 例如第一題的選項(xiàng)一,就寫: on (release) { answer(1); } 第二題的寫法同上(如果你的選擇題有很多道,做法都是一樣的,只要復(fù)制第一題,然后把題目改了就行) 最后在quizEnd幀里面調(diào)用改題的函數(shù)gradeUser();
分析第二個(gè)例子是代碼,你會(huì)發(fā)現(xiàn)比第一個(gè)例子精簡(jiǎn)了很多。
而集中在同一幀的代碼,將: * 更容易修改 * 更容易升級(jí) * 更少的出錯(cuò)機(jī)會(huì) * 更容易查錯(cuò) * 更精簡(jiǎn)(更少的字節(jié)數(shù))
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁(yè) 可以重復(fù)的函數(shù) 下一頁(yè) 數(shù)組(arrays)
◎進(jìn)入論壇Flash專欄版塊參加討論
|