Ui video player new style looping input options

This commit is contained in:
minggo 2019-04-10 18:33:05 -07:00 committed by GitHub
parent 5c29e0066f
commit ffcf627c13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 468 additions and 11 deletions

View File

@ -66,6 +66,8 @@ public class Cocos2dxVideoHelper {
private final static int VideoTaskRestart = 10;
private final static int VideoTaskKeepRatio = 11;
private final static int VideoTaskFullScreen = 12;
private final static int VideoTaskSetLooping = 13;
private final static int VideoTaskSetUserInputEnabled = 14;
final static int KeyEventBack = 1000;
static class VideoHandler extends Handler{
@ -157,11 +159,24 @@ public class Cocos2dxVideoHelper {
}
break;
}
case VideoTaskSetLooping: {
Cocos2dxVideoHelper helper = mReference.get();
helper._setLooping(msg.arg1, msg.arg2 != 0);
break;
}
case VideoTaskSetUserInputEnabled: {
Cocos2dxVideoHelper helper = mReference.get();
helper._setUserInputEnabled(msg.arg1, msg.arg2 != 0);
break;
}
case KeyEventBack: {
Cocos2dxVideoHelper helper = mReference.get();
helper.onBackKeyEvent();
break;
}
}
default:
break;
}
@ -257,6 +272,36 @@ public class Cocos2dxVideoHelper {
}
}
}
public static void setLooping(int index, boolean looping) {
Message msg = new Message();
msg.what = VideoTaskSetLooping;
msg.arg1 = index;
msg.arg2 = looping ? 1 : 0;
mVideoHandler.sendMessage(msg);
}
private void _setLooping(int index, boolean looping) {
Cocos2dxVideoView videoView = sVideoViews.get(index);
if (videoView != null) {
videoView.setLooping(looping);
}
}
public static void setUserInputEnabled(int index, boolean enableInput) {
Message msg = new Message();
msg.what = VideoTaskSetUserInputEnabled;
msg.arg1 = index;
msg.arg2 = enableInput ? 1 : 0;
mVideoHandler.sendMessage(msg);
}
private void _setUserInputEnabled(int index, boolean enableInput) {
Cocos2dxVideoView videoView = sVideoViews.get(index);
if (videoView != null) {
videoView.setUserInputEnabled(enableInput);
}
}
public static void setVideoRect(int index, int left, int top, int maxWidth, int maxHeight) {
Message msg = new Message();

View File

@ -198,7 +198,7 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
@Override
public boolean onTouchEvent(MotionEvent event) {
if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP)
if( mUserInputEnabled && ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP))
{
if (isPlaying()) {
pause();
@ -211,6 +211,8 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
}
private boolean mIsAssetRouse = false;
private boolean mLooping = false;
private boolean mUserInputEnabled = true;
private String mVideoFilePath = null;
private static final String AssetResourceRoot = "assets/";
@ -246,6 +248,14 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
requestLayout();
invalidate();
}
public void setLooping(boolean looping) {
mLooping = looping;
}
public void setUserInputEnabled(boolean enableInput) {
mUserInputEnabled = enableInput;
}
public void stopPlayback() {
if (mMediaPlayer != null) {
@ -291,6 +301,7 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
mMediaPlayer.setDisplay(mSurfaceHolder);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setScreenOnWhilePlaying(true);
mMediaPlayer.setLooping(mLooping); // CROWDSTAR
//}
mDuration = -1;
@ -428,8 +439,13 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
public void onCompletion(MediaPlayer mp) {
mCurrentState = STATE_PLAYBACK_COMPLETED;
mTargetState = STATE_PLAYBACK_COMPLETED;
release(true);
// Do not release the player if we are looping as we still need the
// the player resources to exist
if (!mLooping) {
release(true);
}
if (mOnVideoEventListener != null) {
mOnVideoEventListener.onVideoEvent(mViewTag,EVENT_COMPLETED);
}
@ -441,7 +457,8 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
private static final int EVENT_PAUSED = 1;
private static final int EVENT_STOPPED = 2;
private static final int EVENT_COMPLETED = 3;
private static final int EVENT_ERROR = 4;
public interface OnVideoEventListener
{
void onVideoEvent(int tag,int event);
@ -454,6 +471,10 @@ public class Cocos2dxVideoView extends SurfaceView implements MediaPlayerControl
mCurrentState = STATE_ERROR;
mTargetState = STATE_ERROR;
if (mOnVideoEventListener != null) {
mOnVideoEventListener.onVideoEvent(mViewTag, EVENT_ERROR);
}
/* If an error handler has been supplied, use it and finish. */
if (mOnErrorListener != null) {
if (mOnErrorListener.onError(mMediaPlayer, framework_err, impl_err)) {

View File

@ -65,6 +65,26 @@ int createVideoWidgetJNI()
return ret;
}
void setLoopingJNI(int index, bool looping)
{
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.c_str(), "setLooping", "(IZ)V")) {
t.env->CallStaticVoidMethod(t.classID, t.methodID, index, looping);
t.env->DeleteLocalRef(t.classID);
}
}
void setUserInputEnabledJNI(int index, bool enableInput)
{
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.c_str(), "setUserInputEnabled", "(IZ)V")) {
t.env->CallStaticVoidMethod(t.classID, t.methodID, index, enableInput);
t.env->DeleteLocalRef(t.classID);
}
}
//-----------------------------------------------------------------------------------------------------------
using namespace cocos2d::experimental::ui;
@ -77,6 +97,10 @@ VideoPlayer::VideoPlayer()
, _keepAspectRatioEnabled(false)
, _videoPlayerIndex(-1)
, _eventCallback(nullptr)
, _isPlaying(false)
, _isLooping(false)
, _isUserInputEnabled(true)
, _styleType(StyleType::DEFAULT)
{
_videoPlayerIndex = createVideoWidgetJNI();
s_allVideoPlayers[_videoPlayerIndex] = this;
@ -109,6 +133,23 @@ void VideoPlayer::setURL(const std::string& videoUrl)
(int)Source::URL,_videoURL);
}
void VideoPlayer::setLooping(bool looping)
{
_isLooping = looping;
setLoopingJNI(_videoPlayerIndex, _isLooping);
}
void VideoPlayer::setUserInputEnabled(bool enableInput)
{
_isUserInputEnabled = enableInput;
setUserInputEnabledJNI(_videoPlayerIndex, enableInput);
}
void VideoPlayer::setStyle(StyleType style)
{
_styleType = style;
}
void VideoPlayer::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags)
{
cocos2d::ui::Widget::draw(renderer,transform,flags);
@ -231,6 +272,16 @@ bool VideoPlayer::isPlaying() const
return _isPlaying;
}
bool VideoPlayer::isLooping() const
{
return _isLooping;
}
bool VideoPlayer::isUserInputEnabled() const
{
return _isUserInputEnabled;
}
void VideoPlayer::setVisible(bool visible)
{
cocos2d::ui::Widget::setVisible(visible);
@ -294,6 +345,9 @@ void VideoPlayer::copySpecialProperties(Widget *widget)
if (videoPlayer)
{
_isPlaying = videoPlayer->_isPlaying;
_isLooping = videoPlayer->_isLooping;
_isUserInputEnabled = videoPlayer->_isUserInputEnabled;
_styleType = videoPlayer->_styleType;
_fullScreenEnabled = videoPlayer->_fullScreenEnabled;
_fullScreenDirty = videoPlayer->_fullScreenDirty;
_videoURL = videoPlayer->_videoURL;

View File

@ -51,6 +51,10 @@ using namespace cocos2d::experimental::ui;
- (void) setKeepRatioEnabled:(BOOL) enabled;
- (void) setFullScreenEnabled:(BOOL) enabled;
- (BOOL) isFullScreenEnabled;
- (void) setRepeatMode:(MPMovieRepeatMode)repeatMode;
- (void) setControlStyle:(MPMovieControlStyle)controlStyle;
- (void) setUserInteractionEnabled:(BOOL)userInteractionEnabled;
-(id) init:(void*) videoPlayer;
@ -67,7 +71,9 @@ using namespace cocos2d::experimental::ui;
int _width;
int _height;
bool _keepRatioEnabled;
MPMovieRepeatMode _repeatMode;
MPMovieControlStyle _controlStyle;
BOOL _userInteractionEnabled;
VideoPlayer* _videoPlayer;
}
@ -75,6 +81,11 @@ using namespace cocos2d::experimental::ui;
{
if (self = [super init]) {
self.moviePlayer = nullptr;
_repeatMode = MPMovieRepeatModeNone;
_controlStyle = MPMovieControlStyleEmbedded;
_userInteractionEnabled = YES;
_videoPlayer = (VideoPlayer*)videoPlayer;
_keepRatioEnabled = false;
}
@ -123,6 +134,31 @@ using namespace cocos2d::experimental::ui;
return false;
}
-(void) setControlStyle:(MPMovieControlStyle)controlStyle
{
_controlStyle = controlStyle;
if (self.moviePlayer != nullptr) {
self.moviePlayer.controlStyle = _controlStyle;
}
}
-(void) setRepeatMode:(MPMovieRepeatMode)repeatMode
{
_repeatMode = repeatMode;
if (self.moviePlayer != nullptr) {
self.moviePlayer.repeatMode = _repeatMode;
}
}
-(void) setUserInteractionEnabled:(BOOL)userInteractionEnabled
{
_userInteractionEnabled = userInteractionEnabled;
if (self.moviePlayer != nullptr) {
self.moviePlayer.view.userInteractionEnabled = _userInteractionEnabled;
}
}
-(void) setURL:(int)videoSource :(std::string &)videoUrl
{
if (self.moviePlayer != nullptr) {
@ -143,14 +179,17 @@ using namespace cocos2d::experimental::ui;
self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
}
self.moviePlayer.allowsAirPlay = false;
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.moviePlayer.view.userInteractionEnabled = true;
self.moviePlayer.controlStyle = _controlStyle;
self.moviePlayer.repeatMode = _repeatMode;
auto clearColor = [UIColor clearColor];
self.moviePlayer.backgroundView.backgroundColor = clearColor;
self.moviePlayer.view.backgroundColor = clearColor;
self.moviePlayer.view.userInteractionEnabled = _userInteractionEnabled;
for (UIView * subView in self.moviePlayer.view.subviews) {
subView.backgroundColor = clearColor;
subView.userInteractionEnabled = _userInteractionEnabled;
}
if (_keepRatioEnabled) {
@ -233,6 +272,8 @@ using namespace cocos2d::experimental::ui;
if (self.moviePlayer != NULL) {
[self.moviePlayer.view setFrame:CGRectMake(_left, _top, _width, _height)];
[self.moviePlayer play];
self.moviePlayer.view.userInteractionEnabled = _userInteractionEnabled;
self.moviePlayer.repeatMode = _repeatMode;
}
}
@ -270,6 +311,9 @@ VideoPlayer::VideoPlayer()
, _keepAspectRatioEnabled(false)
, _videoPlayerIndex(-1)
, _eventCallback(nullptr)
, _isLooping(false)
, _isUserInputEnabled(true)
, _styleType(StyleType::DEFAULT)
{
_videoView = [[UIVideoViewWrapperIos alloc] init:this];
@ -301,6 +345,33 @@ void VideoPlayer::setURL(const std::string& videoUrl)
[((UIVideoViewWrapperIos*)_videoView) setURL:(int)_videoSource :_videoURL];
}
void VideoPlayer::setLooping(bool looping)
{
_isLooping = looping;
[((UIVideoViewWrapperIos*)_videoView) setRepeatMode:_isLooping ? MPMovieRepeatModeOne : MPMovieRepeatModeNone];
}
void VideoPlayer::setUserInputEnabled(bool enableInput)
{
_isUserInputEnabled = enableInput;
[((UIVideoViewWrapperIos*)_videoView) setUserInteractionEnabled:enableInput];
}
void VideoPlayer::setStyle(StyleType style)
{
_styleType = style;
switch (style) {
case StyleType::DEFAULT:
[((UIVideoViewWrapperIos*)_videoView) setControlStyle:MPMovieControlStyleEmbedded];
break;
case StyleType::NONE:
[((UIVideoViewWrapperIos*)_videoView) setControlStyle:MPMovieControlStyleNone];
break;
}
}
void VideoPlayer::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags)
{
cocos2d::ui::Widget::draw(renderer,transform,flags);
@ -403,6 +474,16 @@ bool VideoPlayer::isPlaying() const
return _isPlaying;
}
bool VideoPlayer::isLooping() const
{
return _isLooping;
}
bool VideoPlayer::isUserInputEnabled() const
{
return _isUserInputEnabled;
}
void VideoPlayer::setVisible(bool visible)
{
cocos2d::ui::Widget::setVisible(visible);
@ -462,6 +543,9 @@ void VideoPlayer::copySpecialProperties(Widget *widget)
if (videoPlayer)
{
_isPlaying = videoPlayer->_isPlaying;
_isLooping = videoPlayer->_isLooping;
_isUserInputEnabled = videoPlayer->_isUserInputEnabled;
_styleType = videoPlayer->_styleType;
_fullScreenEnabled = videoPlayer->_fullScreenEnabled;
_fullScreenDirty = videoPlayer->_fullScreenDirty;
_videoURL = videoPlayer->_videoURL;

View File

@ -58,7 +58,19 @@ namespace experimental{
PLAYING = 0,
PAUSED,
STOPPED,
COMPLETED
COMPLETED,
ERROR
};
/**
* Styles of how the the video player is presented
* For now only used on iOS to use either MPMovieControlStyleEmbedded (DEFAULT) or
* MPMovieControlStyleNone (NONE)
*/
enum class StyleType
{
DEFAULT = 0,
NONE
};
/**
@ -95,6 +107,27 @@ namespace experimental{
* @return A remoting URL address.
*/
virtual const std::string& getURL() const { return _videoURL;}
/**
* @brief Set if playback is done in loop mode
*
* @param looping the video will or not automatically restart at the end
*/
virtual void setLooping(bool looping);
/**
* Set if the player will enable user input for basic pause and resume of video
*
* @param enableInput If true, input will be handled for basic functionality (pause/resume)
*/
virtual void setUserInputEnabled(bool enableInput);
/**
* Set the style of the player
*
* @param style The corresponding style
*/
virtual void setStyle(StyleType style);
/**
* Starts playback.
@ -129,6 +162,22 @@ namespace experimental{
* @return True if currently playing, false otherwise.
*/
virtual bool isPlaying() const;
/**
* Checks whether the VideoPlayer is set with looping mode.
*
* @return true if the videoplayer is set to loop, false otherwise.
*/
virtual bool isLooping() const;
/**
* Checks whether the VideoPlayer is set to listen user input to resume and pause the video
*
* @return true if the videoplayer user input is set, false otherwise.
*/
virtual bool isUserInputEnabled() const;
/**
* Causes the video player to keep aspect ratio or no when displaying the video.
@ -196,16 +245,20 @@ namespace experimental{
};
bool _isPlaying;
bool _isLooping;
bool _isUserInputEnabled;
bool _fullScreenDirty;
bool _fullScreenEnabled;
bool _keepAspectRatioEnabled;
StyleType _styleType;
std::string _videoURL;
Source _videoSource;
int _videoPlayerIndex;
ccVideoPlayerCallback _eventCallback;
void* _videoView;
};
}

View File

@ -31,6 +31,7 @@ using namespace cocos2d::experimental::ui;
VideoPlayerTests::VideoPlayerTests()
{
ADD_TEST_CASE(VideoPlayerTest);
ADD_TEST_CASE(SimpleVideoPlayerTest);
}
bool VideoPlayerTest::init()
@ -76,8 +77,12 @@ bool VideoPlayerTest::init()
auto ratioSwitch = MenuItemFont::create("KeepRatioSwitch", CC_CALLBACK_1(VideoPlayerTest::menuRatioCallback, this));
ratioSwitch->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
ratioSwitch->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 150));
auto loopToggle = MenuItemFont::create("LoopToogle", CC_CALLBACK_1(VideoPlayerTest::menuLoopCallback, this));
loopToggle->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
loopToggle->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 170));
auto menu = Menu::create(resourceVideo,onlineVideo,ratioSwitch,fullSwitch,pauseItem,resumeItem,stopItem,hintItem,nullptr);
auto menu = Menu::create(resourceVideo,onlineVideo,ratioSwitch,loopToggle,fullSwitch,pauseItem,resumeItem,stopItem,hintItem,nullptr);
menu->setPosition(Vec2::ZERO);
_uiLayer->addChild(menu);
@ -85,6 +90,12 @@ bool VideoPlayerTest::init()
_videoStateLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
_videoStateLabel->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 200));
_uiLayer->addChild(_videoStateLabel);
_loopStatusLabel = Label::createWithSystemFont("(1)","Arial",10);
_loopStatusLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
_loopStatusLabel->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 185));
_uiLayer->addChild(_loopStatusLabel);
createVideo();
return true;
@ -111,6 +122,16 @@ void VideoPlayerTest::menuRatioCallback(Ref* sender)
}
}
void VideoPlayerTest::menuLoopCallback(Ref* sender)
{
if (_videoPlayer)
{
_videoPlayer->setLooping(! _videoPlayer->isLooping());
_loopStatusLabel->setString(_videoPlayer->isLooping() ? "(OO)" : "(1)");
}
}
void VideoPlayerTest::menuResourceVideoCallback(Ref* sender)
{
if (_videoPlayer)
@ -235,3 +256,149 @@ void VideoPlayerTest::videoEventCallback(Ref* sender, VideoPlayer::EventType eve
break;
}
}
// Simple Video Test
SimpleVideoPlayerTest::SimpleVideoPlayerTest()
{
_videoPlayer = nullptr;
_style = cocos2d::experimental::ui::VideoPlayer::StyleType::NONE;
_userInputEnabled = true;
_switchUserInputEnabled = nullptr;
_switchStyle = nullptr;
}
void SimpleVideoPlayerTest::updateButtonsTexts()
{
if (_switchUserInputEnabled)
{
std::string str = _userInputEnabled ? "< User Input Enabled >" : "< User Input Disabled >";
_switchUserInputEnabled->setString(str);
}
if (_switchStyle)
{
std::string str = " - ";
switch(_style)
{
case cocos2d::experimental::ui::VideoPlayer::StyleType::NONE:
_switchUserInputEnabled->setVisible(false);
str = "< NO Sytle >";
break;
case cocos2d::experimental::ui::VideoPlayer::StyleType::DEFAULT:
str = "< Default Style >";
_switchUserInputEnabled->setVisible(true);
break;
default:
break;
}
_switchStyle->setString(str);
}
}
bool SimpleVideoPlayerTest::init()
{
if ( !UIScene::init() )
{
return false;
}
_visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect();
MenuItemFont::setFontSize(16);
_switchStyle = MenuItemFont::create("Switch Style", CC_CALLBACK_1(SimpleVideoPlayerTest::switchStyleCallback, this));
_switchStyle->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
_switchStyle->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 50));
_switchUserInputEnabled = MenuItemFont::create("Enable User Input", CC_CALLBACK_1(SimpleVideoPlayerTest::switchUserInputCallback, this));
_switchUserInputEnabled->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
_switchUserInputEnabled->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 100));
auto menu = Menu::create(_switchUserInputEnabled,_switchStyle,nullptr);
menu->setPosition(Vec2::ZERO);
_uiLayer->addChild(menu);
createVideo();
updateButtonsTexts();
return true;
}
void SimpleVideoPlayerTest::menuCloseCallback(Ref* sender)
{
Director::getInstance()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
void SimpleVideoPlayerTest::switchStyleCallback(Ref* sender)
{
switch (_style) {
case cocos2d::experimental::ui::VideoPlayer::StyleType::NONE:
_style = cocos2d::experimental::ui::VideoPlayer::StyleType::DEFAULT;
break;
case cocos2d::experimental::ui::VideoPlayer::StyleType::DEFAULT:
_style = cocos2d::experimental::ui::VideoPlayer::StyleType::NONE;
break;
default:
break;
}
if (_videoPlayer)
{
_videoPlayer->setStyle(_style);
}
//createVideo();
updateButtonsTexts();
}
void SimpleVideoPlayerTest::switchUserInputCallback(Ref* sender)
{
_userInputEnabled = !_userInputEnabled;
if (_videoPlayer)
{
_videoPlayer->setUserInputEnabled(_userInputEnabled);
}
//createVideo();
updateButtonsTexts();
}
void SimpleVideoPlayerTest::createVideo()
{
if (_videoPlayer)
{
_uiLayer->removeChild(_videoPlayer);
}
auto centerPos = Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2,_visibleRect.origin.y + _visibleRect.size.height /2);
auto widgetSize = _widget->getContentSize();
_videoPlayer = VideoPlayer::create();
_videoPlayer->setPosition(centerPos);
_videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
_videoPlayer->setContentSize(Size(widgetSize.width * 0.4f,widgetSize.height * 0.4f));
_videoPlayer->setLooping(true);
_videoPlayer->setStyle(_style);
_videoPlayer->setUserInputEnabled(_userInputEnabled);
_uiLayer->addChild(_videoPlayer);
// _videoPlayer->addEventListener(CC_CALLBACK_2(SimpleVideoPlayerTest::videoEventCallback, this));
_videoPlayer->setFileName("cocosvideo.mp4");
_videoPlayer->play();
}

View File

@ -47,6 +47,7 @@ public:
void menuResumeCallback(cocos2d::Ref* sender);
void menuStopCallback(cocos2d::Ref* sender);
void menuHintCallback(cocos2d::Ref* sender);
void menuLoopCallback(cocos2d::Ref* sender);
void sliderCallback(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType eventType);
@ -59,10 +60,42 @@ private:
cocos2d::MenuItemFont* _hintItem;
cocos2d::experimental::ui::VideoPlayer* _videoPlayer;
cocos2d::Label* _videoStateLabel;
cocos2d::Label* _loopStatusLabel;
cocos2d::Rect _visibleRect;
cocos2d::Layer* _rootLayer;
};
class SimpleVideoPlayerTest : public UIScene
{
public:
CREATE_FUNC(SimpleVideoPlayerTest);
SimpleVideoPlayerTest();
virtual bool init() override;
void menuCloseCallback(cocos2d::Ref* sender);
void switchStyleCallback(cocos2d::Ref* sender);
void switchUserInputCallback(cocos2d::Ref* sender);
private:
void createVideo();
cocos2d::Rect _visibleRect;
cocos2d::experimental::ui::VideoPlayer* _videoPlayer;
cocos2d::MenuItemFont* _switchUserInputEnabled;
cocos2d::MenuItemFont* _switchStyle;
bool _userInputEnabled;
cocos2d::experimental::ui::VideoPlayer::StyleType _style;
void updateButtonsTexts();
};
#endif // __tests__VideoPlayerTest__