「按鍵精靈」模擬手持彈幕(滾動文字)

大家好,我是3分鐘學堂的郭立員~

今天來做一個模擬手持彈幕效果的腳本,所謂手持彈幕就是手機屏幕上的滾動文字,如下圖:

先來看看我做的模擬效果,然后再給大家講怎么做的。

下面開始這一期腳本教程的講解:

在按鍵中能夠在屏幕上顯示文字,主要有showmessage命令和懸浮窗命令,考慮到屏幕純黑色,我們選擇懸浮窗命令。

整個腳本的制作邏輯是這樣的:

【1】模擬屏幕純黑色背景,設置懸浮窗背景為黑色

【2】懸浮窗的大小要和屏幕一樣,所以要獲取屏幕的大小尺寸:

Dimx=GetScreenX()Dim y=GetScreenY()FW.NewFWindow"懸浮窗1",0,0, x, yFW.SetBackColor("懸浮窗1","000000")FW.Show ("懸浮窗1")

【3】設置要顯示的文字及文字顏色大小

FW.AddTextView("懸浮窗1","文字","文字內容",x,500,width+x,500)FW.SetTextColor"文字","ffffff"FW.SetTextSize("文字",40)

【4】文字的起始位置,文字的滾動距離

這一步很關鍵,在觀察別人做的手持彈幕后,發現彈幕是從屏幕右側進入,向左滾動直到全部消失,然后重新從屏幕右側進入,循環往復。

那么起始位置就是屏幕的右側,也就是一個屏幕的寬度x,在有一個問題是文字的滾動距離。

通過圖片可以看到,需要滾動距離是文字寬度和屏幕寬度之和。

屏幕寬度是x

文字寬度需要通過計算,先要知道單個文字的寬度,在乘以文字的數量。

Dim text="要顯示的文字內容"Dim zi=60//單個字的寬度,和文字大小有關系Dim width=utf8.len(text)*zi

【5】怎么讓文字滾動起來

循環修改文字的左側的位置坐標

假設100毫秒滾動一次,每次滾動20像素,那么單位速度就是20,整個滑動需要的單位數量就是(文字寬度+屏幕寬度)/單位速度,用計次循環執行整個操作,如下所示:

Dimspeed=20Fori = 0 To int((width+x)/speed)FW.SetLeft"文字", x - speed * iDelay100Next

【6】讓文字重復循環

每次整段文字滑出屏幕后,讓文字的位置重新回到屏幕的右側

FW.SetLeft"文字", x

完整代碼如下:

Dim x=GetScreenX()Dim y=GetScreenY()Dim text="永恒榮耀,不滅星辰"Dim zi=60Dim width=utf8.len(text)*ziDim speed=20FW.NewFWindow"懸浮窗1",0,0, x, yFW.SetBackColor("懸浮窗1","000000")FW.AddTextView("懸浮窗1","文字",text,x,500,width+x,500)FW.SetTextColor"文字","ffffff"FW.SetTextSize("文字",40)FW.Show ("懸浮窗1")For5FW.SetLeft"文字", x? ? For i =0Toint((width+x)/speed)? ? ? ? FW.SetLeft"文字", x -20* i? ? ? ? Delay100TracePrint x -20* i? ? NextNext

補充說明:

測試設備:雷電模擬器

代碼涉及到的一些可修改的參數,我都在最開始用變量定義了,包括文字內容,滾動速度等,這些都可以用界面輸入框控制。

目前沒找到自動旋轉屏幕的命令,測試是豎屏顯示的滾動,效果不太好,如果你知道此命令可以在文章留言區給我留言,當然我也會去搜索查找。

=正文完=

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容