cocos2d简易引导
2011-09-14 18:04 v2m 阅读(349) 评论(0) 编辑 收藏 举报一.安装
下载:http://www.cocos2d-iphone.org/download
进入目录,执行
./install-templates.sh -u |
如果之前已经存在可以这样强制更新
./install-templates.sh -f -u |
这会安装三个模版:
标准cocos2d模版
带box2d的模版
带chipmunk的模版
二.sprite小例
1.创建一个标准模版生成的工程.
2.在xxxLayer.m中全局声明(也可以不声明,而在后面用getChildByTag)
CCSprite *seeker1; CCSprite *cocosGuy; |
3.在init的if块里面重写
// create and initialize our seeker sprite, and add it to this layer seeker1 = [CCSprite spriteWithFile: @ "seeker.png" ]; seeker1.position = ccp( 50, 100 ); [ self addChild:seeker1]; // do the same for our cocos2d guy, reusing the app icon as its image cocosGuy = [CCSprite spriteWithFile: @ "Icon.png" ]; cocosGuy.position = ccp( 200, 300 ); [ self addChild:cocosGuy]; |
4.动起来(使用action)
上一步的if块最后添加
[ self schedule: @selector (nextFrame:)]; |
然后外面定义nextFrame函数
- ( void ) nextFrame:(ccTime)dt { seeker1.position = ccp( seeker1.position.x + 100*dt, seeker1.position.y ); if (seeker1.position.x > 480+32) { seeker1.position = ccp( -32, seeker1.position.y ); } } |
5.可交互
添加头
#import "CCTouchDispatcher.h" |
重写函数
-( void ) registerWithTouchDispatcher { [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate: self priority:0 swallowsTouches: YES ]; } |
3中if块最后添加
self .isTouchEnabled = YES ; |
添加函数
- ( BOOL )ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { return YES ; } - ( void )ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint location = [ self convertTouchToNodeSpace: touch]; [cocosGuy stopAllActions]; [cocosGuy runAction: [CCMoveTo actionWithDuration:1 position:location]]; } |
三.场景切换
开始:
[[CCDirector sharedDirector] runWithScene: [HelloWorld scene]]; |
替换:
[[CCDirector sharedDirector] replaceScene: [SomeOtherScene scene]]; |
动态替换(pop时不可动画):
CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration:0.5f scene:[SomeOtherScene scene]]]; |
在你用replace方式替换场景的时候,cocos2d自动清理内存。它会移除所有的节点,停止所有的动作,并且停止所有选择器的预定。所以没
有调用cocos2d的removeAll方法。
另:触摸事件对比
Standard Touch Delegate(标准)
@protocol CCStandardTouchDelegate < NSObject > @optional - ( void )ccTouchesBegan:( NSSet *)touches withEvent:(UIEvent *)event; - ( void )ccTouchesMoved:( NSSet *)touches withEvent:(UIEvent *)event; - ( void )ccTouchesEnded:( NSSet *)touches withEvent:(UIEvent *)event; - ( void )ccTouchesCancelled:( NSSet *)touches withEvent:(UIEvent *)event; @end |
Targeted Touch Delegate(定向)
@protocol CCTargetedTouchDelegate < NSObject > - ( BOOL )ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event; @optional // touch updates: - ( void )ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event; - ( void )ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event; - ( void )ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event; @end |
注意:
1)都需要self.isTouchEnabled = YES;
2)参数一个是touches一个是touch
3)began的返回值,定向的控制事件是否传递
4)注册
-( void ) registerWithTouchDispatcher { [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate: self priority:0 swallowsTouches: YES ]; } |
不是CCLayer和它的子类要或许点击事件,需要实现协议,并在onEnter中注册触摸种类,并在onExit中卸载
参考:http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:index
http://www.cocos2d-iphone.org/wiki/doku.php/tips:touchdelegates
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架