大家好诅炉,我是3分鐘學(xué)堂的郭立員~
今天來(lái)做一個(gè)模擬手持彈幕效果的腳本箩帚,所謂手持彈幕就是手機(jī)屏幕上的滾動(dòng)文字,如下圖:
先來(lái)看看我做的模擬效果捍岳,然后再給大家講怎么做的。
下面開(kāi)始這一期腳本教程的講解:
在按鍵中能夠在屏幕上顯示文字,主要有showmessage命令和懸浮窗命令锣夹,考慮到屏幕純黑色页徐,我們選擇懸浮窗命令。
整個(gè)腳本的制作邏輯是這樣的:
【1】模擬屏幕純黑色背景银萍,設(shè)置懸浮窗背景為黑色
【2】懸浮窗的大小要和屏幕一樣变勇,所以要獲取屏幕的大小尺寸:
Dimx=GetScreenX()Dim y=GetScreenY()FW.NewFWindow"懸浮窗1",0,0, x, yFW.SetBackColor("懸浮窗1","000000")FW.Show ("懸浮窗1")
【3】設(shè)置要顯示的文字及文字顏色大小
FW.AddTextView("懸浮窗1","文字","文字內(nèi)容",x,500,width+x,500)FW.SetTextColor"文字","ffffff"FW.SetTextSize("文字",40)
【4】文字的起始位置,文字的滾動(dòng)距離
這一步很關(guān)鍵贴唇,在觀察別人做的手持彈幕后搀绣,發(fā)現(xiàn)彈幕是從屏幕右側(cè)進(jìn)入,向左滾動(dòng)直到全部消失戳气,然后重新從屏幕右側(cè)進(jìn)入链患,循環(huán)往復(fù)。
那么起始位置就是屏幕的右側(cè)瓶您,也就是一個(gè)屏幕的寬度x麻捻,在有一個(gè)問(wèn)題是文字的滾動(dòng)距離。
通過(guò)圖片可以看到呀袱,需要滾動(dòng)距離是文字寬度和屏幕寬度之和贸毕。
屏幕寬度是x
文字寬度需要通過(guò)計(jì)算,先要知道單個(gè)文字的寬度夜赵,在乘以文字的數(shù)量崖咨。
Dim text="要顯示的文字內(nèi)容"Dim zi=60//單個(gè)字的寬度,和文字大小有關(guān)系Dim width=utf8.len(text)*zi
【5】怎么讓文字滾動(dòng)起來(lái)
循環(huán)修改文字的左側(cè)的位置坐標(biāo)
假設(shè)100毫秒滾動(dòng)一次油吭,每次滾動(dòng)20像素击蹲,那么單位速度就是20,整個(gè)滑動(dòng)需要的單位數(shù)量就是(文字寬度+屏幕寬度)/單位速度婉宰,用計(jì)次循環(huán)執(zhí)行整個(gè)操作歌豺,如下所示:
Dimspeed=20Fori = 0 To int((width+x)/speed)FW.SetLeft"文字", x - speed * iDelay100Next
【6】讓文字重復(fù)循環(huán)
每次整段文字滑出屏幕后,讓文字的位置重新回到屏幕的右側(cè)
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
補(bǔ)充說(shuō)明:
測(cè)試設(shè)備:雷電模擬器
代碼涉及到的一些可修改的參數(shù)类咧,我都在最開(kāi)始用變量定義了,包括文字內(nèi)容蟹腾,滾動(dòng)速度等痕惋,這些都可以用界面輸入框控制。
目前沒(méi)找到自動(dòng)旋轉(zhuǎn)屏幕的命令娃殖,測(cè)試是豎屏顯示的滾動(dòng)值戳,效果不太好,如果你知道此命令可以在文章留言區(qū)給我留言炉爆,當(dāng)然我也會(huì)去搜索查找堕虹。
=正文完=