cocos2d-x視訊控制元件VideoPlayer的使用者操作欄進度條去除
阿新 • • 發佈:2019-02-07
cocos目前出了新的視訊播放器控制元件,僅支援ios和android平臺,不支援window平臺。專案打算使用一段視屏片頭,所以使用該視訊控制元件來播放片頭。
目前遇到兩個問題:
(1)視訊控制元件移除有問題,會報異常。
(2)視訊控制元件有使用者操作欄,使用者點選螢幕會停止視訊播放。
對於第一個問題,主要是移除控制元件時衝突引起的,目前簡單處理是做一個延時處理,先stop視訊播放,然後一個Action移除自身,如下:
local function onComplete()
video:stop()
video:runAction(
cc.Sequence:create (
cc.CallFunc:create(callback),
cc.RemoveSelf:create()
)
)
end
第二個問題處理起來比較麻煩,做法是去除控制元件實現中的使用者點選和使用者操作欄。
在android版本里視訊會有一個點選螢幕暫停和恢復的功能,這個是在java層實現的,直接註釋掉點選的響應,就可以遮蔽使用者的操作。
Cocos2dxVideoView.java 201
@Override
public boolean onTouchEvent(MotionEvent event) {
if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP)
{
if (isPlaying()) {
//pause();
} else if(mCurrentState == STATE_PAUSED){
//resume();
}
}
return true;
}
在ios版本里視訊會有一個操作欄,這個oc程式碼裡的視訊控制元件有個樣式,更改controlStyle 這個屬性,即可隱藏進度條,另外修改userInteractionEnabled 屬性,讓視訊不響應點選事件。
UIVideoPlayer-ios.mm
self.moviePlayer.allowsAirPlay = false;
self.moviePlayer.controlStyle = MPMovieControlStyleNone;// MPMovieControlStyleEmbedded;
self.moviePlayer.view.userInteractionEnabled = false; //true;
除了上述問題,該視訊控制元件目前只能遮蓋在使用者顯示層的上層,對於某些比如嵌入播放之類操作,依然有很多問題,希望cocos能後續繼續完善。