Swift 2 0 實現簡單彈幕功能

2021-09-07 02:56:43 字數 1311 閱讀 1722

前言

簡單實現彈幕功能,表跟我談效率,但也有用佇列控制同時彈的數量。

宣告正文

let danmaku_speed: cgfloat = 150

//彈幕每秒移動速度

let danmaku_space_time: nstimeinterval = 1

//彈幕之間的時間間隔

let danmaku_max_row = 3

//最多同時彈幕行數

let danmakufont = uifont.systemfontofsize(18) //

彈幕字型大小

var rowarray = array>(count: 3, repeatedvalue: array())

var danmakuqueue = nsoperationqueue() //

佇列class

danmaku : nsobject

}func queuedanmaku(msg: msg)

else

else

}let danmaku = danmaku(msg, weakself.danmakufont, row, abs(delay) +lastdanmaku.delay)

self?.performselectoronmainthread("

senddanmaku:

", withobject: danmaku, waituntildone: true

)

return

} }}}

sleep(

1000

) }

while self !=nil

}}))

}func senddanmaku(danmaku: danmaku) )

label.removefromsuperview()

}}

**說明:

**控制了最多同時只能彈三行,每行最後一條如果延遲大於跑彈幕的時間(已經有一條處於完全等待狀態)就自動切到下一行,超過最大限制就等待。

*  rowarray 主要用於查詢前乙個彈幕的位置和時間

*  別忘了在 deinit 裡面加上 danmakuqueue.cancelalloperations()

*  注意 nsblockoperation 的 block 並不在主線程上

swift 2 0 迴圈語句

9.迴圈語句 while var tiaojian 4 while tiaojian 0 swift 1.0 還有 do while 但是 swift 2.0 沒有了,只有repeat while repeat while tiaojian 6 for 其實沒多大要注意的,並且我們也不常用。forv...

swift2 0異常處理

異常處理,英文名為exceptional handling,是代替日漸衰落的error code方法的新法,提供error code 所未能具體的優勢。異常處理分離了接收和處理錯誤 這個功能理清了程式設計者的思緒,也幫助 增強了可讀性,方便了維護者的閱讀和理解。異常處理 又稱為錯誤處理 功能提供了處...

Swift2 0異常處理

在丟擲異常之前,我們需要在函式或方法的返回箭頭 前使用 throws 來標明將會丟擲異常 func mymethodretrunstring throws string func mymethodretrunnothing throws func mymethod throws do catch m...