`

Cocos2D Playing Video

 
阅读更多
#import "cocos2d.h"
#import "Recipe.h"

#import <MediaPlayer/MediaPlayer.h>

//Interface
@interface Ch1_PlayingVideoFiles : Recipe
{
	MPMoviePlayerController *moviePlayer;
}

-(CCLayer*) runRecipe;
-(void)moviePlayBackDidFinish:(NSNotification*)notification;
-(void)playMovie;
-(void)stopMovie;
-(void)cleanRecipe;

@end



//Implementation
@implementation Ch1_PlayingVideoFiles

-(CCLayer*) runRecipe {
	//Load our video file
	NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"example_vid" ofType:@"mov"]];
	
	//Create a MPMoviePlayerController object
	moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

	//Register to receive a notification when the movie has finished playing.
	[[NSNotificationCenter defaultCenter] addObserver:self
		selector:@selector(moviePlayBackDidFinish:)
		name:MPMoviePlayerPlaybackDidFinishNotification
		object:moviePlayer];

	//Set the movie's control style and whether or not it should automatically play.
	if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
		//Use the new 3.2 style API.
		moviePlayer.controlStyle = MPMovieControlStyleNone;
		moviePlayer.shouldAutoplay = YES;
				
		CGSize winSize = [[CCDirector sharedDirector] winSize];
		moviePlayer.view.frame = CGRectMake(45, 50, winSize.width-90, winSize.height-100);
		[[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view];
	} else {
		//Use the old 2.0 style API.
		moviePlayer.movieControlMode = MPMovieControlModeHidden;
		[self playMovie];
	}
	
	return self;
}

-(void)moviePlayBackDidFinish:(NSNotification*)notification {
	//If playback is finished we stop the movie.
	[self stopMovie];
}

-(void)playMovie {
	//We do not play the movie if it is already playing.
	MPMoviePlaybackState state = moviePlayer.playbackState;
	if(state == MPMoviePlaybackStatePlaying) {
		NSLog(@"Movie is already playing.");
		return;
	}
	
	[moviePlayer play];
}

-(void)stopMovie {
	//We do not stop the movie if it is already stopped.
	MPMoviePlaybackState state = moviePlayer.playbackState;
	if(state == MPMoviePlaybackStateStopped) {
		NSLog(@"Movie is already stopped.");
		return;
	}
	
	//Since playback has finished we remove the observer.
	[[NSNotificationCenter defaultCenter] removeObserver:self
		name:MPMoviePlayerPlaybackDidFinishNotification
        object:moviePlayer];

	//If the moviePlayer.view was added to the openGL view, it needs to be removed.
	if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
		[moviePlayer.view removeFromSuperview];
	}
}

-(void)cleanRecipe {
	[self stopMovie];
	[moviePlayer release];
	[super cleanRecipe];
}

@end
分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d入门cocos2d入门

    cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门

    cocos2d-x json字符串与cocos2d::Value转换工具

    该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...

    cocos2d-x windows vs2010配置

    "cocos2d-x windows vs2010 配置详解" 本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    《cocos2d-x 动画工具 Flash2Cocos2d-x 1.3:将Flash创意带入移动游戏开发》 在移动游戏开发领域,cocos2d-x是一款广泛使用的开源游戏引擎,以其高效、跨平台的特性深受开发者喜爱。而Flash2Cocos2d-x则是一个专为...

    cocos2d的学习资料

    Cocos2d是一款广泛应用于游戏开发、图形界面和2D应用程序的开源框架,它支持多种编程语言,包括Python(cocos2d),Objective-C(cocos2d-objc)以及C++(cocos2d-x)。这篇学习资料是针对cocos2d/x,特别是cocos2d-...

    cocos2d学习资源汇总

    cocos2d-x学习资源汇总 cocos2d-x是一款功能强大且广泛应用于游戏开发的游戏引擎,由于其跨平台、开源、自由的特性,吸引了许多开发者的关注。以下是关于cocos2d-x的学习资源汇总,旨在帮助初学者快速入门和提高...

    cocos2d-iphone-2.0.tar.gz

    Cocos2d-iPhone是一个广泛使用的2D游戏开发框架,专为iOS设备(如iPhone和iPad)设计。这个开源项目让开发者能够轻松地创建高质量的游戏、应用和交互式内容,而无需深入理解底层图形和物理编程。"cocos2d-iphone-2.0...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    cocos2d 2.0与UIKit结合的例子

    在iOS开发中,Cocos2d是一个非常流行的2D游戏引擎,它提供了丰富的图形渲染、动画和物理模拟功能。UIKit则是Apple为构建iOS用户界面的主要框架。将Cocos2d与UIKit结合,可以让开发者在游戏或者应用中融入原生的iOS...

    cocos2d-x版本的对对碰代码

    【cocos2d-x版本的对对碰代码】是一个基于Cocos2d-x游戏引擎实现的经典消除类游戏项目,它将原有的Cocos2d版本的对对碰游戏移植到了跨平台的Cocos2d-x框架下。Cocos2d-x是Cocos2d的C++扩展,支持iOS、Android、...

    cocos2D源代码

    《cocos2D-x源代码解析与学习指南》 cocos2D-x是一款跨平台的2D游戏开发框架,广泛应用于移动设备和桌面平台的游戏开发。这个标题所提及的“cocos2D-x源代码”提供了对框架核心功能的深入理解和自定义优化的机会。...

    Cocos2D权威指南

    第1章 开始前的准备工作 1 第2章 你的第一款iPhone游戏:垂直射击游戏 38 第3章 Cocos2D核心类 69 第4章 Cocos2D中的动作、特效与动画 152 第5章 Cocos2D中的文本渲染系统 229 共19章

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    cocos2d初级教程-Cocos2d SimpleGame源码

    Ray Wenderlich的《Cocos2d SimpleGame》,被认为是cocos2d的初学者最好的教程,这本书被Cocos2D-X团队从objective-c转化到了c++版,并发布在了github上。在此感谢Ray Wenderlich的慷慨相助。 源代码是在cocos2d-x ...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    Cocos2d-Java跨平台游戏引擎

    Cocos2d-Java跨平台游戏引擎 Cocos2d-Java是基于Cocos2d-X,使用Java语言来开发Cocos2d跨平台游戏的引擎,和-lua,-js的api风格相近,方便快捷,便于习惯Java的开发者开发跨平台游戏。 知识点一:Cocos2d-Java的...

    cocos2d 入门教程

    【cocos2d 入门教程】 cocos2d 是一款强大的开源游戏开发框架,尤其在iOS平台上,它被广泛用于创建2D游戏、演示和其他交互式应用。本教程将带你深入了解cocos2d的基本概念、核心功能以及如何在iOS上进行游戏开发。 ...

    cocos2d-x游戏代码

    cocos2d-x游戏代码

    cocos2d-x实战 c++卷教程及完整源码

    cocos2d-x实战 c++卷教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 3、根据书籍...

Global site tag (gtag.js) - Google Analytics