擋字幕腳本(用美劇練聽力和口語表達時產生的想法)

這應該算是一篇日記。

英語聽力和口語一直都是我的痛點,所以最近都有在學習英語。基本節奏就是白天學英語加看專業課論文,晚上看美劇。

但是有一個很大的誤區,就是認爲看美劇可以練習口語表達,當然如果看無字幕的原味美劇(生肉)肯定沒問題,可是自己看的都是帶中文字幕的美劇,所以你懂的。基本上整個劇看下來都是在看中文字幕,也就是在不斷地複習中文思維。這點個人認爲是學英語很大的誤區。於是在網上搜索擋字幕的神器,發現並不多。用起來不太友好。於是就產生了一個想法,寫一個擋字幕小腳本。

說幹就幹,打開Idea,創建了一個空的項目後,開始構思。我需要一個GUI窗體,我稱呼它爲遮擋窗體。然後可以用鼠標隨意拖拽,外加鼠標拉伸來調整大小。最後一點也是個人認爲最重要的一點,我想按下一個鍵時讓此遮擋窗體暫時消失,鬆開該按鍵時讓它再出出現,繼續擋住字幕區域。目的是爲了能在看美劇時,在實在聽不懂的地方,能馬上看到字幕,鬆開按鍵又能立馬擋住字幕區域。
ok,差不多構思完成,讓我們開始寫這個程序吧。

簡要總結下用到的方法:

1>遮擋窗體
用到JFrame。
2>監聽事件
addMouseListener,addKeyListener。

個人認爲,遇到的最大的問題,就是在鍵盤監聽這一塊,當我打開播放器播放時,該窗體失去焦點,對該遮擋窗體的鍵盤監聽就失效了,當我選中窗體時,播放器窗體就失去了焦點,不能用鍵盤快進快退視頻了,總之兩者完全沒有耦合性,而是平行獨立存在的窗體。於是我就要想辦法找一個全局鍵盤監聽的方法,解決這個問題,有點類似於wechat和qq上面的全局截圖快捷鍵。終於在網上找到了個熱鍵修改的方法來解決這個問題,java本身不具備這樣的方法,用的github別人寫的方法,先清除某個按鍵上面的全局熱鍵,也就是讓鍵盤的某個鍵失去本來的功能,再重新定義它的功能(想要達到的目的),結束程序後恢復該按鍵原本的功能。

最終勉強寫出來了,而且很爛,我知道自己用的都是很遠古的方法,可能網上有很多更好的方法,比如用canvas等js來寫會簡單且好看得多。這點我同意,那就繼續嘗試,持續保持好奇心,穩固原有知識,學習新內容吧。

彩蛋:今天一不小心發現了QQ影音實現了字幕遮擋功能,區域自定義,還是播放器封裝好的功能,嗯,比我做的好,挺好用的。qoq~

效果圖:

catalogue

Breaking Bad

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章