大家好,我是郭立員~
今天來做一個模拟手持彈幕效果的腳本,所謂手持彈幕就是手機屏幕上的滾動文字,如下圖:
先來看看我做的模拟效果,然後再給大家講怎麼做的。
下面開始這一期腳本教程的講解:
在按鍵中能夠在屏幕上顯示文字,主要有showmessage命令和懸浮窗命令,考慮到屏幕純黑色,我們選擇懸浮窗命令。
整個腳本的制作邏輯是這樣的:
【1】模拟屏幕純黑色背景,設置懸浮窗背景為黑色
【2】懸浮窗的大小要和屏幕一樣,所以要獲取屏幕的大小尺寸:
Dim x=GetScreenX()
Dim y=GetScreenY()
FW.NewFWindow "懸浮窗1", 0, 0, x, y
FW.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,整個滑動需要的單位數量就是(文字寬度 屏幕寬度)/單位速度,用計次循環執行整個操作,如下所示:
Dim speed=20
For i = 0 To int((width x)/speed)
FW.SetLeft "文字", x - speed * i
Delay 100
Next
【6】讓文字重複循環
每次整段文字滑出屏幕後,讓文字的位置重新回到屏幕的右側
FW.SetLeft "文字", x
完整代碼如下:
Dim x=GetScreenX()
Dim y=GetScreenY()
Dim text="永恒榮耀,不滅星辰"
Dim zi=60
Dim width=utf8.len(text)*zi
Dim speed=20
FW.NewFWindow "懸浮窗1", 0, 0, x, y
FW.SetBackColor("懸浮窗1", "000000")
FW.AddTextView("懸浮窗1","文字",text,x,500,width x,500)
FW.SetTextColor "文字", "ffffff"
FW.SetTextSize("文字",40)
FW.Show ("懸浮窗1")
For 5
FW.SetLeft "文字", x
For i = 0 To int((width x)/speed)
FW.SetLeft "文字", x - 20 * i
Delay 100
TracePrint x - 20 * i
Next
Next
補充說明:
測試設備:雷電模拟器
代碼涉及到的一些可修改的參數,我都在最開始用變量定義了,包括文字内容,滾動速度等,這些都可以用界面輸入框控制。
目前沒找到自動旋轉屏幕的命令,測試是豎屏顯示的滾動,效果不太好,如果你知道此命令可以在文章留言區給我留言,當然我也會去搜索查找。
=正文完=
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!