台灣最大程式設計社群網站
線上人數
1762
 
會員總數:245912
討論主題:189503
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> 互動式測驗加總 ~ action script 如何撰寫
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
互動式測驗加總 ~ action script 如何撰寫
價值 : 100 QP  點閱數:1122 回應數:5
樓主

stevenchiou
初學者
98 43
842 94
發送站內信

您們好 :
幫部門製作互動式測驗,但從未接觸過script,想請各位高手幫忙,測驗題型如下 ~

題目共有5題,每一題有5個選項(正常、輕度、中度、嚴重、非常嚴重)(利用radiobutton製作),
每一個選項都有各自的分數 (0-4分),
點選完後,按完成鈕則會加總判斷該去哪個影格呈現動畫 (測驗結果的動畫共有4種-正常、輕、中、重度),
其間如果使用者重新點選所選擇的,則程式要排除重複加總,
另外,想要在4個動畫中,呈現該使用者的分數,則應該怎麼寫,程式要寫在哪個影格?


動畫已完成,但不知該如何撰寫程式,想請大家幫忙指導,謝謝。

搜尋相關Tags的文章: [ scritp ] , [ radiobutton ] , [ 互動 ] , [ 測驗 ] ,
本篇文章發表於2014-05-19 14:29
1樓
最有價值解答

han
檢舉此回應
從組件裡面拉 radiobutton 然後先定好群組 你有五個題目 所以有五個群組 每個群組會有5個radiobutton 我說的群組為屬性裡面的GroupName
然後設定好命名 在屬性欄位設定命名 你有25顆按鈕 所以要命名25個 假如命名為a1到a25
照你設定的話 a1-a5為群組6
照你設定的話 a6-a10為群組2
照你設定的話 a11-a15為群組3
照你設定的話 a16-a20為群組4
照你設定的話 a21-a25為群組5

然後要創建一個元件 計算總分 我先把它命名為TotalValue

接下來 在影格上按F9 開始寫程式八
-------------------------------------------------------------------

import flash.events.MouseEvent;
var Value:int=0;//總分
var testFor:int=0;//給for迴圈使用
stage.addEventListener(MouseEvent.CLICK,TestValue)//監聽按鈕偵測

function TestValue(e:MouseEvent)
{
if(e.target.name=="TotalValue")//假如點擊的按鈕名稱為TotalValue 會執行以下的事情
{
Value=0;//先把分數清空
for(testFor=0;testFor<=4;testFor++) //偵測按鈕1到5是否有點擊 算出分數
{
if(this["a"+(testFor+1)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕6到10是否有點擊 算出分數
{
if(this["a"+(testFor+6)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕11到16是否有點擊 算出分數
{
if(this["a"+(testFor+11)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕16到20是否有點擊 算出分數
{
if(this["a"+(testFor+16)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕21到25是否有點擊 算出分數
{
if(this["a"+(testFor+21)].selected==true)
{
Value=Value+testFor;
}
}
trace(Value)//在輸出面板輸出總分
}




}



本篇文章回覆於2014-05-19 17:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

stevenchiou
檢舉此回應
Dear han :

非常感謝您,可否再請教,應該是我題型沒寫清楚,
上述的計算完成後,要直接跑到某個對應的影格動畫,
(總分0-5,判斷為正常,去影格2)、(總分6-9,判斷為輕度,去影格3)、(總分10-14,判斷為中度,去影格4)、(總分15以上,判斷為重度,去影格5),
我是在Value=Value+testFor的後面再加上這段嗎 ? (因為不太會寫,還請您別見笑)

Value=Value+testFor;
}
if(Value=0 and <=5){//等於0且小於等於5,跳至影格2
gotoAndStop(2);
}else if(Value>=6 and >=9){//大於等於6且小於等於9,跳至影格3
gotoAndStop(3);
}else if(Value>=10 and >=14){//大於等於10且小於等於14,跳至影格4
gotoAndStop(4);
}else if(Value>=15 ){//大於等於15,跳至影格5
gotoAndStop(5);
}
}
trace(Value)//在輸出面板輸出總分
}




}
本篇文章回覆於2014-05-21 11:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

han
檢舉此回應
恩 加在那沒錯 Value=0 and <=5 要改成 Value=0&&Value<=5 下面依此類推
本篇文章回覆於2014-05-21 14:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

han
檢舉此回應
要改成 Value==0&&Value<=5 才對 ==是代表比對 所以你要比對 就要兩個=
本篇文章回覆於2014-05-21 14:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

stevenchiou
檢舉此回應
Dear han:
我又卡住了,加入程式後,按TotalValue的按鈕,卻無法判斷執行,畫面就一直停在測驗畫面(第一個影格),想請教我是又哪出錯了 ?
1、我把程式放在第一影格中的獨立的action script圖層,沒錯吧 ? 還是說要放在按鈕 ? )
2、還是說是影格2-5裡的動畫要再撰寫什麼 ?
不好意思再麻煩您了

下面是您幫忙撰寫的程式 :

import flash.events.MouseEvent;
var Value:int=0;//總分
var testFor:int=0;//給for迴圈使用
stage.addEventListener(MouseEvent.CLICK,TestValue)//監聽按鈕偵測

function TestValue(e:MouseEvent)
{
if(e.target.name=="TotalValue")//假如點擊的按鈕名稱為TotalValue 會執行以下的事情
{
Value=0;//先把分數清空
for(testFor=0;testFor<=4;testFor++) //偵測按鈕1到5是否有點擊 算出分數
{
if(this["a"+(testFor+1)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕6到10是否有點擊 算出分數
{
if(this["a"+(testFor+6)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕11到16是否有點擊 算出分數
{
if(this["a"+(testFor+11)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕16到20是否有點擊 算出分數
{
if(this["a"+(testFor+16)].selected==true)
{
Value=Value+testFor;
}
}

for(testFor=0;testFor<=4;testFor++)//偵測按鈕21到25是否有點擊 算出分數
{
if(this["a"+(testFor+21)].selected==true)
{
Value=Value+testFor;
}
if(Value==0 && Value<=5){//等於0且小於等於5,跳至影格2
gotoAndStop(2);
}else if(Value>=6 && Value>=9){//大於等於6且小於等於9,跳至影格3
gotoAndStop(1);
}else if(Value>=10 && Value>=14){//大於等於10且小於等於14,跳至影格4
gotoAndStop(4);
}else if(Value>=15){//大於等於15,跳至影格5
gotoAndStop(5);
}}
trace(Value)//在輸出面板輸出總分
}




}
本篇文章回覆於2014-05-26 11:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.