大家好,我是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
補充說明:
測試設備:雷電模擬器
代碼涉及到的一些可修改的參數,我都在最開始用變量定義了,包括文字內容,滾動速度等,這些都可以用界面輸入框控制。
目前沒找到自動旋轉屏幕的命令,測試是豎屏顯示的滾動,效果不太好,如果你知道此命令可以在文章留言區給我留言,當然我也會去搜索查找。
=正文完=