iOS 彈幕效果

2021-09-29 03:33:43 字數 1789 閱讀 1379

最基本的特點:

1、文字越長的彈幕,跑的越快,彈幕的速度和文字長度有關係.

2、彈幕不相互碰撞(開始結束均不碰撞)。

需要考慮的方面:
1、重用或者釋放;

2、暫停和繼續;

3、load新資料;

4、碰撞問題;

原理分析

檢測模型陣列裡面所有的模型,是否可以發射 如果可以,直接發射 datasource為資料來源

遍歷所有的彈道,在每個彈道裡面,進行檢測(檢測開始碰撞 檢測結束碰撞)

確定可以發射,把彈幕檢視加到彈道背景裡面。

當彈幕移動到螢幕外的時候,移除彈幕。

技術實現~~

以下是部分核心**,完整demo參見這裡.

- (bool)checkboomandbiuwith:(id)model 

//2.絕對等待時間沒有 暫時可以發射 需要判斷 是否與前乙個彈幕檢視產生碰撞

uiview * danmakuview = [self.delegate danmakuviewwithmodel:model];

nstimeinterval lefttime = [self.lanelefttimearr[i] doublevalue];

// 速度 = (彈幕檢視的寬度 + 彈幕背景的寬度)/livetime

double speed = ( danmakuview.frame.size.width + self.frame.size.width) / model.livetime;

double distance = lefttime * speed;

if (distance > self.frame.size.width)

[self.danmakuviewarr addobject:danmakuview];

//重置資料

// 距離/秒 = 速度v

self.lanewaittimearr[i] = @(danmakuview.frame.size.width / speed);

self.lanelefttimearr[i] = @(model.livetime);

//3.彈幕肯定可以發射

先把彈幕檢視,加到彈幕背景裡面

cgrect frame = danmakuview.frame;

frame.origin = cgpointmake(self.frame.size.width, danmakuh * i);

danmakuview.frame = frame;

[self addsubview:danmakuview];

[uiview animatewithduration:model.livetime delay:0 options:uiviewanimationoptioncurvelinear animations:^ completion:^(bool finished) ];

return yes;

}return no;

}

iOS之彈幕效果

彈幕效果展示 步驟 1.2.然後的步驟就需要我們好好地思考一下,做任何一件事都要做好計畫,首先要確定要在我們建立的檢視裡面新增label 標籤 設定標籤的顏色這裡不過多說。有注釋。值得注意的是,我們的標籤是並不是乙個。而是一些標籤進行迴圈的滾動,怎麼達到這個效果呢。首先我們不能直接在viewdidl...

iOS 簡單彈幕效果

彈幕的簡單效果就是這樣,我是仿照別人的簡單例項做了簡單的彈幕 廢話少說進入正題 簡單的思路來說就是在螢幕上顯示lable,這些lable的位置顏色以及內容不一樣 第一步 建立乙個plist用於儲存資料 第二步 建立控制器用於顯示彈幕,並將此控制器作為window的跟控制器 第三步 寫乙個方法用來建立...

Jquery實現彈幕效果

前端顯示 吐槽 發射 樣式 html,body boxdom iddom content title text btn string js function crespan.css 擴充套件字幕顏色 var spandom boxdom span last child alert spandom.h...