挡字幕脚本(用美剧练听力和口语表达时产生的想法)

这应该算是一篇日记。

英语听力和口语一直都是我的痛点,所以最近都有在学习英语。基本节奏就是白天学英语加看专业课论文,晚上看美剧。

但是有一个很大的误区,就是认为看美剧可以练习口语表达,当然如果看无字幕的原味美剧(生肉)肯定没问题,可是自己看的都是带中文字幕的美剧,所以你懂的。基本上整个剧看下来都是在看中文字幕,也就是在不断地复习中文思维。这点个人认为是学英语很大的误区。于是在网上搜索挡字幕的神器,发现并不多。用起来不太友好。于是就产生了一个想法,写一个挡字幕小脚本。

说干就干,打开Idea,创建了一个空的项目后,开始构思。我需要一个GUI窗体,我称呼它为遮挡窗体。然后可以用鼠标随意拖拽,外加鼠标拉伸来调整大小。最后一点也是个人认为最重要的一点,我想按下一个键时让此遮挡窗体暂时消失,松开该按键时让它再出出现,继续挡住字幕区域。目的是为了能在看美剧时,在实在听不懂的地方,能马上看到字幕,松开按键又能立马挡住字幕区域。
ok,差不多构思完成,让我们开始写这个程序吧。

简要总结下用到的方法:

1>遮挡窗体
用到JFrame。
2>监听事件
addMouseListener,addKeyListener。

个人认为,遇到的最大的问题,就是在键盘监听这一块,当我打开播放器播放时,该窗体失去焦点,对该遮挡窗体的键盘监听就失效了,当我选中窗体时,播放器窗体就失去了焦点,不能用键盘快进快退视频了,总之两者完全没有耦合性,而是平行独立存在的窗体。于是我就要想办法找一个全局键盘监听的方法,解决这个问题,有点类似于wechat和qq上面的全局截图快捷键。终于在网上找到了个热键修改的方法来解决这个问题,java本身不具备这样的方法,用的github别人写的方法,先清除某个按键上面的全局热键,也就是让键盘的某个键失去本来的功能,再重新定义它的功能(想要达到的目的),结束程序后恢复该按键原本的功能。

最终勉强写出来了,而且很烂,我知道自己用的都是很远古的方法,可能网上有很多更好的方法,比如用canvas等js来写会简单且好看得多。这点我同意,那就继续尝试,持续保持好奇心,稳固原有知识,学习新内容吧。

彩蛋:今天一不小心发现了QQ影音实现了字幕遮挡功能,区域自定义,还是播放器封装好的功能,嗯,比我做的好,挺好用的。qoq~

效果图:

catalogue

Breaking Bad

猜你喜欢

转载自blog.csdn.net/qq_37225921/article/details/104772767