Processing中,多個按鍵的鍵盤互動怎麼實現?

時間 2021-06-04 14:19:21

1樓:CJ Mo

我想先將題主的問題作乙個一般化:如何在 Processing 中實現按任意順序按下和釋放任意個鍵,在此過程中永遠只輸出最後按下的那個還沒釋放的鍵的鍵值。

這個問題的難點首先在於在 Processing 中變數 key 儲存的始終是最後乙個按下或釋放的那個鍵的值。因此按下乙個鍵不放,再按另乙個鍵之後,第乙個鍵的資訊如果事先沒有被程式設計師主動儲存起來的話就會「丟失」掉再也找不回來了。其次是雖然 Processing 的官方文件說布林型變數 keyPressed 是只要有鍵被按下它的值就是 true,但文件裡沒有提到的是當同時有多個鍵被按下後,只要有乙個 keyRelease 事件發生,keyPressed 就不再為 true 了,即使此時仍有鍵沒被鬆開。

要解決上面提到的問題,我的做法是用 IntList 資料型別做乙個堆疊,可以按下任意個鍵,按下的鍵值會按先後順序入棧,其間也可以鬆開任意的鍵,鬆開的鍵就從棧中抽走,因而棧頂的鍵值就永遠是最後按下的那個還沒有鬆開的鍵值。然後通過判斷棧的高度是否非零(不是通過 keyPressed 的值,原因前面已經提到)來確定是否列印棧頂的鍵值。

這是程式:

IntList

pkeys

=new

IntList

();//這個是用來堆疊的可變長度int型列表

void

setup

()void

draw

()void

keyPressed

()void

keyReleased()}

}void

printkey()}

(這個程式理論上是對任意個按鍵都適用的,但實際情況下鍵盤上某些鍵一起按時是會發生硬體衝突的,經常是同時按下六個鍵後第七個鍵就無法起作用了。)

raft pre vote 中多個 candidate 相遇後如何選舉?

無名 這個場景跟各個節點超過electiontimeout以後觸發選舉場景很像吧?如果多個節點都同時競爭,就很難選出leader。也就是常說的活鎖。最後都是通過隨機化 electiontimeout來降低活鎖的概率,達到工程上可接受的程度。 RejudgeX 我理解這裡沒有任何問題吧 首先引入pre...

龍珠中為什麼會出現多個神龍?

凌嘯瑾舞 當作者引入那美克星人這乙個概念之後,神龍就已經是可以量產的了。當貝吉塔說出,那美克星人擁有不可思議的魔法,然後就直接問,龍珠是你 比克 製造的嗎?這意味著,龍珠的傳說,在宇宙中早已有所流傳。並且,龍珠的傳說跟那美克星人直接就是硬性繫結了!而隨著故事的展開,去到了那美克星之後,當時那美克星人...

刺激戰場中各種按鍵怎樣擺放最舒適?可以截圖分享嗎?

野原新之助小朋友 我的是這樣的 稍微解釋一下 二指操作 全域性陀螺儀 第三指開揹包 側鏡 人稱視角轉換用了很久了很舒服如果你還沒有除錯出合適的鍵位可以試一試 Karma 非三指勿用此鍵位 走火黨求求你們趕緊換這套鍵位優點 布局減少了視野遮擋,遊戲介面清爽 切槍速度較快 主要操作鍵集中到兩側,對手癌黨...