輕松學(xué)習(xí)E-Prime(三十四):制作按鈕敏簿?讀取MouseResponseData中被試點(diǎn)擊的位置

這一節(jié)我們準(zhǔn)備制作按鈕,也就是讓用戶能用鼠標(biāo)來點(diǎn)擊的按鈕宣虾。比如說做選擇題惯裕,我們讓被試操縱鼠標(biāo)來點(diǎn)擊。
首先安岂,我們要設(shè)置鼠標(biāo)為顯示的轻猖,我們可以在Device中設(shè)置:


設(shè)置鼠標(biāo)為實(shí)驗(yàn)中可見

當(dāng)然啦,我們也可以在實(shí)驗(yàn)過程中通過代碼進(jìn)行設(shè)置域那。如果您希望在實(shí)驗(yàn)過程中展示或隱藏鼠標(biāo)咙边,就必須用代碼猜煮,方法如下:

Mouse.ShowCursor True

加入這一句到你想要顯示鼠標(biāo)的地方就可以了。相應(yīng)的败许,隱藏自然就是把True改為False王带。
這一步很容易,接下來市殷,問題的關(guān)鍵在于我們要接收被試點(diǎn)擊鼠標(biāo)的地方愕撰,判斷是否點(diǎn)擊到了物體。這一點(diǎn)醋寝,在E-Prime中提供了方法搞挣。
我們首先加入一個(gè)Slide1控件,在里面加入我們想要問的問題音羞,以及相應(yīng)的選項(xiàng)囱桨。比如說下面是我的“示例程序”里的無聊問題:


示例程序

正確答案是C。(順便說一下嗅绰,卡希爾將軍是我大學(xué)時(shí)的外號(hào))
那么我們要達(dá)到的效果就是舍肠,當(dāng)被試用鼠標(biāo)點(diǎn)擊的時(shí)候,點(diǎn)到ABC三個(gè)選項(xiàng)框就提示錯(cuò)誤窘面,點(diǎn)到C提示正確翠语,點(diǎn)到其他地方不做任何反應(yīng)。
首先财边,我們要在Slide1中設(shè)置接收鼠標(biāo)按鍵肌括。

在Slide1中設(shè)置其接收鼠標(biāo)按鍵

如果你想只允許被試按左鍵,就設(shè)定Allowable為1制圈。
接下來先安排一下要用到的控件:
示例程序中的樹狀圖

然后按步驟完成:
1.把FeedbackDisplay1的Input Object Name改為Slide1们童。
2為了方便代碼的書寫畔况,我修改了Slide1中各控件的Name屬性:
Slide1中各控件的Name屬性

Name屬性為“Text1”的SlideText對(duì)應(yīng)的是顯示問題的那個(gè)SlideText鲸鹦。自然,“OptionA”對(duì)應(yīng)A選項(xiàng)跷跪,“OptionB”對(duì)應(yīng)B選項(xiàng)馋嗜,依次類推。
3.在Inline1中輸入下列代碼:

Mouse.ShowCursor True
Dim theState as SlideState
Set theState = Slide1.States ("Default")
Dim ptMouse As Point
Dim strHit As String
Mouse.GetCursorPos ptMouse.x, ptMouse.y
strHit = theState.HitTest(ptMouse.x, ptMouse.y)
if strHit = "Default" or strHit = "Text1" then
goto Label1
end if
If strHit = "OptionC" Then
Slide1.ACC=1
else
Slide1.ACC=0
End If


對(duì)應(yīng)結(jié)果

Mouse.ShowCurser前面說過吵瞻,用來設(shè)定鼠標(biāo)是否顯示葛菇。
接下來我們定義了一個(gè)名為theState的SlideState,SlideState就是我常說的Slide的頁面橡羞,并設(shè)定它為Slide1中的Default頁面眯停。我們這次主要要用到的是其HitTest方法。該方法能檢測某個(gè)點(diǎn)是否包含某個(gè)控件卿泽,并返回包含的控件的Name屬性(如果沒學(xué)過編程莺债,“返回”一詞你可以姑且可以這么理解。就是會(huì)會(huì)變成一個(gè)變量,然后你可以賦值給另一個(gè)變量)齐邦。當(dāng)然它還有其他屬性和方法椎侠,見下方。

SlideState類中包含的屬性和方法

我們又定義了一個(gè)Point類的實(shí)例措拇,名為ptMouse我纪;還定義了一個(gè)string名為strHit。
Point類用來表示一個(gè)點(diǎn)丐吓,它有x屬性和y屬性浅悉。
接下來這句:

Mouse.GetCursorPos ptMouse.x, ptMouse.y

我們使用了鼠標(biāo)的GetCursorPos方法,該方法的作用是券犁,把鼠標(biāo)當(dāng)前的點(diǎn)分別賦給后面兩個(gè)參數(shù)仇冯。在這個(gè)句子里,我們賦給了ptMouse的x屬性和y屬性族操。除非你有多個(gè)鼠標(biāo)苛坚,否則鼠標(biāo)默認(rèn)名稱Mouse。
當(dāng)然色难,你也可以另外定義兩個(gè)整數(shù)泼舱,比如:

Dim px as integer, py as integer
Mouse.GetCursorPos px, py

然后你調(diào)用GetCursorPos方法的時(shí)候,px和py的值就變成你鼠標(biāo)當(dāng)前坐標(biāo)的x值和y值枷莉。比如你的鼠標(biāo)這是在坐標(biāo)為198,201的地方娇昙。那么px就變成198,py就變成201笤妙。同理冒掌,我們這次寫的代碼,會(huì)讓ptMouse的x屬性和y屬性為鼠標(biāo)點(diǎn)擊時(shí)候的坐標(biāo)的x值和y值蹲盘。因?yàn)槲覀兪窃诒辉嚢聪率髽?biāo)按鍵的瞬間股毫,調(diào)用了GetCursorPos方法。
下一句:

strHit = theState.HitTest(ptMouse.x, ptMouse.y)

非常簡單召衔,我們調(diào)用了theState這個(gè)SlideState的HitTest方法铃诬,檢查了ptMouse.x, ptMouse.y這一屏幕上的坐標(biāo)是否有控件。如果有苍凛,就把控件的名字賦給strHit趣席。
比如說被試點(diǎn)了Text1,strHit就是“Text1”醇蝴;被試點(diǎn)了選項(xiàng)A宣肚,strHit就是“OptionA”(因?yàn)槲以O(shè)置其Name屬性為OptionA);用戶點(diǎn)了空白處悠栓,strHit就是“Default”霉涨。
因此接下來的這段語句:

if strHit = "Default" or strHit = "Text1" then
goto Label1
end if

我們判斷了被試是不是點(diǎn)擊了空白處或者點(diǎn)擊了我們顯示問題用的SlideText弧呐。如果是,就goto Label1嵌纲,重來俘枫;如果不是,就說明用戶點(diǎn)擊了選項(xiàng)逮走,程序繼續(xù)鸠蚪。
然后接下來我們判斷用戶是否點(diǎn)擊了正確的選項(xiàng):

If strHit = "OptionC" Then
Slide1.ACC=1
else
Slide1.ACC=0
End If

ACC屬性表示是否是正確的,1表示正確师溅,0表示錯(cuò)誤茅信。通過設(shè)置ACC屬性,來讓FeedbackDisplay1顯示我們要的內(nèi)容墓臭。各個(gè)能記錄反應(yīng)的控件都有這個(gè)屬性蘸鲸。
所以,如果strHit是“OptionC”的話窿锉,說明被試點(diǎn)擊了選項(xiàng)C酌摇,那么我們設(shè)置Slide1的ACC屬性為1,表示正確嗡载,F(xiàn)eedbackDisplay1就會(huì)顯示“Correct”窑多;否則說明點(diǎn)擊了其它選項(xiàng),ACC設(shè)為0洼滚,F(xiàn)eedbackDisplay1顯示“Incorrect”埂息。
看到這里你明白了嗎?原來FeedbackDisplay是通過檢查Input Object Name所表示的Object的ACC屬性來判斷自己要顯示什么內(nèi)容的遥巴。只不過過去我們沒有使用代碼來親自設(shè)置千康,而是E-Prime通過我們設(shè)置的接收反應(yīng)按鍵的控件的Correct屬性來自動(dòng)進(jìn)行了判斷。(本節(jié)可參考“示例實(shí)驗(yàn)3-14”

階段練習(xí)

①設(shè)計(jì)一個(gè)實(shí)驗(yàn)铲掐。實(shí)驗(yàn)一共會(huì)在屏幕上顯示10次刺激拾弃,每次刺激,屏幕上都顯示一個(gè)問題和四個(gè)選項(xiàng)迹炼。四個(gè)選項(xiàng)里只有一個(gè)是正確的砸彬,被試必須移動(dòng)鼠標(biāo),點(diǎn)擊正確的選項(xiàng)斯入。點(diǎn)擊之后給予選擇的結(jié)果被試是否正確的反饋。
②將上一題做如下修改:四個(gè)選項(xiàng)可能有多個(gè)是正確的蛀蜜,也可能沒有正確選項(xiàng)刻两。被試必須選擇出他/她認(rèn)為正確的那些選項(xiàng),并點(diǎn)擊“確定”按鈕滴某,之后給予正負(fù)反饋磅摹。被選中的Object通過把背景色變成紅色來提示被選中滋迈。


此為開源免費(fèi)教程。教程所用資源等請(qǐng)?jiān)L問目錄或?qū)n}户誓,或者Github頁面:
http://www.reibang.com/p/5bbf1c274370
https://github.com/zkx654321/Learn-E-Prime-Easily

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饼灿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子帝美,更是在濱河造成了極大的恐慌碍彭,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼潭,死亡現(xiàn)場離奇詭異庇忌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舰褪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門皆疹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人占拍,你說我怎么就攤上這事略就。” “怎么了晃酒?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵残制,是天一觀的道長。 經(jīng)常有香客問我掖疮,道長初茶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任浊闪,我火速辦了婚禮恼布,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘搁宾。我一直安慰自己折汞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布盖腿。 她就那樣靜靜地躺著爽待,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翩腐。 梳的紋絲不亂的頭發(fā)上鸟款,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音茂卦,去河邊找鬼何什。 笑死,一個(gè)胖子當(dāng)著我的面吹牛等龙,可吹牛的內(nèi)容都是我干的处渣。 我是一名探鬼主播伶贰,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罐栈!你這毒婦竟也來了黍衙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤荠诬,失蹤者是張志新(化名)和其女友劉穎琅翻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浅妆,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡望迎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凌外。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩尊。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖康辑,靈堂內(nèi)的尸體忽然破棺而出摄欲,到底是詐尸還是另有隱情,我是刑警寧澤疮薇,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布胸墙,位于F島的核電站,受9級(jí)特大地震影響按咒,放射性物質(zhì)發(fā)生泄漏迟隅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一励七、第九天 我趴在偏房一處隱蔽的房頂上張望智袭。 院中可真熱鬧,春花似錦掠抬、人聲如沸吼野。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞳步。三九已至,卻和暖如春腰奋,著一層夾襖步出監(jiān)牢的瞬間单起,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工氛堕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馏臭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓讼稚,卻偏偏與公主長得像括儒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锐想,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355