如何在cocos2d x游戏开发游戏中添加 移动广告

cocos2dx 横版游戏中屏幕如何随精灵移动
在横版游戏中,实现屏幕随精灵移动而移动,要实现这个,首先要明白这个问题中的变与不变:
不变:地图位置;
变:精灵的位置、屏幕(或理解为所在图层)的位置;
故,说是滚动地图,其实是图层滚动;
从不变入手,首先要知道地图(CCTMXTileMap)的两个方法:
1、map->getMapSize():地图的图块数
2、map->getTileSize():每一个图块的宽高
再而分析变:
精灵先移动,屏幕根据精灵移动的坐标去调整;
vcD4KPHA+ICAgICAgINfczOW31s72x7CjrM/IvMbL48jnz8K8uLj2yv0mIzIwNTQwO6O6PC9wPgo8cD4gICAgICAgICAgICAgILXYzby/7bbIo7p0dz10aWxlbWFwLT5nZXRNYXBTaXplKCkud2lkdGgqdGlsZW1hcC0+Z2V0VGlsZVNpemUoKS53aWR0aDs8L3A+CjxwPiAgICAgICAgICAgICAgtdjNvLjftsijunRoPXRpbGVtYXAtPmdldE1hcFNpemUoKS5oZWlnaHQqdGlsZW1hcC0+Z2V0VGlsZVNpemUoKS5oZWlnaHQ7PC9wPgo8cD4gICAgICAgICAgICAgIMbBxLu/7bbIo7p3dz13aW5zaXplLndpZHRoOzwvcD4KPHA+ICAgICAgICAgICAgICDGwcS7uN+2yKO6d2g9d2luc2l6ZS5oZWlnaHQ7PC9wPgo8cD4gICAgICAgICAgICAgIL6rwenX+LHqo7p4o6x5o7s8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgICAg19zM5bfWzvajusrXz8jXvMi3xdC2qL6rwenSxravuvO1xNf4seqjrNLyzqrO0sPHtPOyv7fW087Pt9bQtcS+q8HptrzKx9K7uPbNvMaso6yyu8rH0ru49rXjo6y+q8HptcTX+LHqtb3G5M28xqy1xNfz09Kx37rNyc/PwrHfysfT0L7gwOu1xKOst9ax8M6qyc/NvKOotMvNvLP219TKsb/VwdTIy6OsxuS0+sLryrXP1tPrsb7OxM7eudijqdbQtcRBsd+6zUKx36Osy/nS1KOs1fu49r6rwem1xMuuxr3X+LHqz9TKvsrH09C3ts6ntcSjqEE8PXg8PXR3LUGjqaOstvi+q8HptcS0udax1/ix6srHzazA7bXEoaPV4sqxo6y+q8Hp1/ix6srHxNzIt7aotcSjrL3Tz8LAtMrHxsHEu7n2tq/By6GjxsHEu7n2tq/P1Mi709DS1M/CyP3W1sfpv/ajujGhong8PXd3LzKjuwogMqGid3cvMjx4PD10dy13dy8yo7szoaJ0dy13dy8yPHiju9TaMcfpv/ajrMbBxLvOu9bDzqqjqHd3LzKjrHdoLzKjqaO71Noy1tCjrMbBxLvOu9bDzqqjqHijrHdoLzKjqaO71Noz1tCjrMbBxLvOu9bDzqqjqHR3LXd3LzKjrHdoLzKjqaO709C63LbgyMu/ycTc0tG+rbeiz9ajrMbBxLu0udax1/ix6srHsrvTw8iluMSx5LXEo6zS8s6quuGw5tPOz7fU2rS51rHJz8rHw7vT0Ln2tq+1xKOoxsHEu7jftsg9tdjNvLjftsijrLWxyLvV4sDvysfWuLTzsr+31qOpoaPX7rrzo6y9q8bBxLvW0LXjo6h3dy8yo6x3aC8yo6m89cilyc/D5sj91tbH6b/2tcTGwcS7zrvWw7Xjo6y1w7P2ufa2r7XEvuDA66Osvau+4MDrJiMyMDU0MDvS1Nf4serQzsq9tPrI63NldFBvc2l0aW9uo6ijqdbQoaM8L3A+CjxwPjxicj4KPC9wPgo8cD7N6tX7tPrC68jnz8KjujwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:">void GameLayer::update(float dt)
this->_hero->updateDesiredPosition(dt);
//设置英雄位置
float posX=MIN(this->_tilemp->getMapSize().width*this->_tilemp->getTileSize().width-this->_hero->_centerToSides,MAX(this->_hero->_centerToSides,this->_hero->_desiredPosition.x));
float posY=MIN(3*this->_tilemp->getTileSize().height+this->_hero->_centerToBottom,MAX(_hero->_centerToBottom,_hero->_desiredPosition.y));
this->_hero->setPosition(ccp(posX,posY));
//地图滚动
CCSize winSize=CCDirector::sharedDirector()->getWinSize();
int x=MAX(_hero->getPositionX(),winSize.width/2);
int y=MAX(_hero->getPositionY(),winSize.height/2);
x=MIN(x,(this->_tilemp->getMapSize().width*this->_tilemp->getTileSize().width)-winSize.width/2);
CCPoint actualPosition=ccp(x,y);
CCPoint centerOfView=ccp(winSize.width/2,winSize.height/2);
CCPoint viewPoint=ccpSub(centerOfView,actualPosition);
this->setPosition(viewPoint);
代码参考,出自:/home/item_up1.html视频中,其视频原作者:后知后觉。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Pages: 1/2
主题 : 在cocos2d Game中添加广告AdMob
级别: 新手上路
UID: 84730
可可豆: 287 CB
威望: 265 点
在线时间: 154(时)
发自: Web Page
在cocos2d Game中添加广告AdMob&&&
1.先在谷歌的AdMob网站上注册一个帐号,2.添加一个iphone或ipad手机应用广告3.下载发布者代码,并记住发布者ID4.下载下来的发布者代码里面有6个.h头文件和一个.a文件.把他们加入你的工程里5.添加下面4个framework    (1)AudioToolbox.framework   (2)MessageUI.framework   (3)SystemConfiguration.framework   (4)CoreGraphics.framework6.在工程里设置你要在那个场景加,许多人都会加到rootViewController里,我是要加到特定的场景里所以用以下做法  (1)在.h里添加#import &GADBannerView.h&  (2)在.m中添加方法-(void)addAdMob{ controller = [[RootViewController alloc]init]; CGSize size = [[CCDirector sharedDirector]winSize]; controller.view.frame = CGRectMake(0,0, size.width, size.height); //创建一个标准大小的屏幕 bannerView_ = [[GADBannerView alloc]                   initWithFrame:CGRectMake(80,size.height-GAD_SIZE_320x50.height-270,//可以设置你广告的位置                                            GAD_SIZE_320x50.width,                                            GAD_SIZE_320x50.height)];
//指定广告的“单位标识符”。这是您的AdMob的发布者 bannerView_.adUnitID = @&发布者ID&;
//用户的广告,将它添加到视图 bannerView_.rootViewController = [controller.view addSubview:bannerView_]; [[[CCDirector sharedDirector]openGLView]addSubview:controller.view];
//启动一个通用请求加载广告。 [bannerView_ loadRequest:[GADRequest request]];}- (void)releaseAdMob { [controller.view removeFromSuperview]; [bannerView_ release]; [controller release];}这样运行你的程序就可以在你要显示广告的场景里看到一条广告了.[ 此帖被在 17:34重新编辑 ]
级别: 新手上路
UID: 60367
可可豆: 206 CB
威望: 199 点
在线时间: 88(时)
发自: Web Page
&&&&&& 新手学习啦
级别: 侠客
可可豆: 470 CB
威望: 470 点
在线时间: 38(时)
发自: Web Page
新手备注留名
级别: 新手上路
可可豆: 848 CB
威望: 848 点
在线时间: 233(时)
发自: Web Page
mark。新手mark。
级别: 侠客
UID: 46902
可可豆: 544 CB
威望: 453 点
在线时间: 641(时)
发自: Web Page
mark......
级别: 新手上路
可可豆: 210 CB
威望: 210 点
在线时间: 1(时)
发自: Web Page
级别: 骑士
可可豆: 1860 CB
威望: 1840 点
在线时间: 308(时)
发自: Web Page
收益怎么样啊?
级别: 新手上路
可可豆: 34 CB
威望: 34 点
在线时间: 29(时)
发自: Web Page
请问这样加点击广告后有的广告弹出只有一部分要怎么处理呢?
级别: 骑士
UID: 61071
可可豆: 1646 CB
威望: 1808 点
在线时间: 2648(时)
发自: Web Page
while( !died ){&&&& tryMakeDreamToBeTrue( allMyBest );}
级别: 新手上路
可可豆: 234 CB
威望: 234 点
在线时间: 103(时)
发自: Web Page
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版主题 : 请问如何添加百度广告的SDK?
级别: 新手上路
可可豆: 90 CB
威望: 90 点
在线时间: 31(时)
发自: Web Page
来源于&&分类
请问如何添加百度广告的SDK?&&&
初学,不懂Java,百度给的教程实在太含糊,群也加不进去。去搜出来的代码都报错,无奈只好来这问了。请问这应该如何添加?如果有现成的Demo的话,肯分享下就更好了。小弟在此先谢谢了。
级别: 新手上路
可可豆: 90 CB
威望: 90 点
在线时间: 31(时)
发自: Web Page
……没人……吗?
级别: 新手上路
可可豆: 90 CB
威望: 90 点
在线时间: 31(时)
发自: Web Page
这都还没人吗
级别: 新手上路
可可豆: 47 CB
威望: 37 点
在线时间: 25(时)
发自: Web Page
我也想知道怎么弄,百度广告的开发者中心有demo吗?求分享一些你知道的
级别: 新手上路
可可豆: 47 CB
威望: 37 点
在线时间: 25(时)
发自: Web Page
&&百度给的demo不行?
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版Cocos2d中添加手势支持的三种方法
最近一直琢磨在Cocos2d里添加手势的功能,找了一些资料加上自己的理解,整理出了三种方法和大家分享。
第一种,很简单,就是知易cocos2d-iPhone教程-04所介绍的(其实这并不是真正的手势,只是也能实现部分手势功能而已),代码如下:
1) 单击、双击处理
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event&
&&& //Get all the touches.&&
&&& NSSet *allTouches = [event allTouches];&&
&&& //Number of touches on the screen&&
&&& switch ([allTouches count])&&
&&&&&&& case 1:&&
&&&&&&& {&&
&&&&&&&&&&& //Get the first touch.&&
&&&&&&&&&&& UITouch *touch = [[allTouches allObjects] objectAtIndex:0];&&
&&&&&&&&&&& switch([touch tapCount])&&
&&&&&&&&&&& {&&
&&&&&&&&&&&&&&& case 1://Single tap&&
&&&&&&&&&&&&&&&&&&& // 单击!!&&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case 2://Double tap.&&
&&&&&&&&&&&&&&&&&&& // 双击!!&&
&&&&&&&&&&&&&&&&&&& }&&
&&&&&&&&&&& }&&
&&&&&&&&&&&&&
&&&&&&& }&
2) 两个指头的分开、合拢手势。
//计算两个点之间的距离函数&
- (CGFloat)distanceBetweenTwoPoints:(CGPoint)fromPoint toPoint:(CGPoint)toPoint&
&&& float x = toPoint.x - fromPoint.x;&
&&& float y = toPoint.y - fromPoint.y;&
&&& return sqrt(x * x + y * y);&
//记录多触点之间的初始距离&
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event&
&&& NSSet *allTouches = [event allTouches];&
&&& switch ([allTouches count])&
&&&&&&& case 1: { //Single touch&
&&&&&&&&&&&}&
&&&&&&& case 2: { //Double Touch&
&&&&&&&&&&& //Track the initial distance between two fingers.&
&&&&&&&&&&& UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];&
&&&&&&&&&&& UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];&
&&&&&&&&&&& initialDistance = [self distanceBetweenTwoPoints:[touch1 locationInView:[self view]] toPoint:[touch2 locationInView:[self view]]];&
&&&&&&&&&&& }&
&&&&&&&&&&&&
&&&&&&& default:&
&&&&&&&&&&&&
//两个指头移劢时,判断是分开还是合拢&
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event&
&&& NSSet *allTouches = [event allTouches];&
&&& switch ([allTouches count])&
&&&&&&& case 1:&
&&&&&&&&&&&&
&&&&&&& case 2:{&
&&&&&&&&&&& UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];&
&&&&&&&&&&& UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];&
&&&&&&&&&&& //Calculate the distance between the two fingers.&
&&&&&&&&&&& CGFloat finalDistance = [self distanceBetweenTwoPoints: [touch1 locationInView:[self view]] toPoint:[touch2 locationInView:[self view]]];&
&&&&&&&&&&& //Check if zoom in or zoom out.&
&&&&&&&&&&& if(initialDistance & finalDistance) {&
&&&&&&&&&&&&&&& NSLog(@&Zoom Out&); // 合拢!!&
&&&&&&&&&&& }&
&&&&&&&&&&& else {&
&&&&&&&&&&&&&&& NSLog(@&Zoom In&); // 分开!!&
&&&&&&&&&&& }&
&&&&&&&&&&& }&&
&&&&&&&&&&&&
第二种,是在Cocoa China中找的一种办法,它的原理是通过修改CCLayer,CCNode两个Cocos2d类的实现手势支持:
1.首先要修改两个Cocos2d类的源码分别为CCLayer,CCNode
2.增加手势类源码 CCGestureRecognizer
以上三个类的源码,可以在我的资源中找着(地址:),(记住CCLayer与CCNode要覆盖原来的文件)
CCGestureRecognizer.h与.m要拷贝到当前工程的libs/cocos2d/Platforms/iOS目录下
在工程文件中加入CCGestureRecognizer.h与.m
3.完成以上工作后所有Node的子类中都可以使用手势了,如在HelloWorld工程中:
1)修改HelloWorldLayer.m中的init方法加入以下代码:
//定义响应的手势类(支持所有UI手势)&
UILongPressGestureRecognizer * longPress = [[[UILongPressGestureRecognizer alloc] init] autorelease];&
longPress.minimumPressDuration = 0.5f;&
longPress.allowableMovement = 5.0f;&
//将UI手势对象longPress作为CCGestureRecognizer类的初始化参数&
//@selector(longPress:node:) 为响应手势的触发方法&
CCGestureRecognizer * rescognizer = [CCGestureRecognizer CCRecognizerWithRecognizerTargetAction:longPress target:self action:@selector(longPress:node:)];&
//设置手势类的代理&
rescognizer.delegate =&
//为self (当前为CCLayer对象)注册手势&
[self addGestureRecognizer:rescognizer];&
//必须设置self可接收Touch事件&
self.isTouchEnabled = YES;&
2)另需要增加响应方法的实现:
-(void) longPress:(UIGestureRecognizer *) recognizer node:(CCNode *) node&
&&& CCLOG(@&%s&,__FUNCTION__);&
3)需要支持协议UIGestureRecognizerDelegate 头文件如下:
[html] view plaincopy
#import &cocos2d.h&&
// HelloWorldLayer&
@interface HelloWorldLayer : CCLayer&UIGestureRecognizerDelegate&&
// returns a CCScene that contains the HelloWorldLayer as the only child&
+(CCScene *)&
-(void) longPress:(UIGestureRecognizer *) recognizer node:(CCNode *)&
第三种,自己琢磨的一种办法,个人感觉也还不错。
1)默认情况下面,cocos2d 模板并没有在AppDelegate里面包含一个RootViewController的属性,因此必须手动添加一个:
跳转到AppDelegate.h文件,并添加下面的代码:
@property (nonatomic, retain) RootViewController*viewC&
然后跳转到AppDelegate.m,@synthesize之:
@synthesize viewC&&
2)在场景或者层中m文件中,#import &AppDelegate.h&
+(id) scene&
&&& //给层添加手势支持&
&&& CCScene *scene = [CCScene node];&
&&& // 'layer' is an autorelease object.&
&&& HelloWorld *layer = [HelloWorld node];&
&&& UIPanGestureRecognizer *gestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePanFrom:)] autorelease];&
&&& AppDelegate *delegate=(AppDelegate *)[UIApplication sharedApplication].&
&&& [delegate.viewController.view addGestureRecognizer:gestureRecognizer];&
&&& // add layer as a child to scene&
&&& [scene addChild: layer];&
&&& // return the scene&
//手势识别函数&
- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {&
&&& if (recognizer.state == UIGestureRecognizerStateBegan) {&&&&&
&&&&&&& CGPoint touchLocation = [recognizer locationInView:recognizer.view];&
&&&&&&& touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];&
&&&&&&& touchLocation = [self convertToNodeSpace:touchLocation];&&&&&&&&&&&&&&&&&
&&&&&&& //实现的效果..&&
&&& } else if (recognizer.state == UIGestureRecognizerStateChanged) {&&&&&
&&&&&&& CGPoint translation = [recognizer translationInView:recognizer.view];&
&&&&&&& translation = ccp(translation.x, -translation.y);&
&&&&&&& //实现的效果..&&
&&&&&&& [recognizer setTranslation:CGPointZero inView:recognizer.view];&&&&&
&&& } else if (recognizer.state == UIGestureRecognizerStateEnded) {&
&&&&&&& //实现的效果..&&&&&&&&&
&&& }&&&&&&&&&
以上是本人总结的三种在Cocos2d里添加手势支持的方法,不妥之处欢迎各位指教!
作者:wangqiuyun
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'您所在的位置: &
如何移动一个cocos2d-x精灵
如何移动一个cocos2d-x精灵
Walzer Wang
在前一章中我们介绍了如何添加一个cocos2d-x精灵中,为游戏场景添加了一个精灵。但一个英雄或许太过孤单,我们应该加入一些敌人,让他来打败。本文我们将讲述如何移动一个cocos2d-x精灵。
void addTarget()函数将会帮我们完成这一工作,敌人将会以随机的速度,从游戏场景左移动到右。
在HelloWorldScence.h里声明void
addTarget(),并在HelloWorldScene.cpp里添加以下的代码,(请不要忘记在HelloWorldScene.cpp的开头加入using
namespace cocos2d)
1// cpp with cocos2d-x
2void HelloWorld::addTarget()
4 CCSprite *target = CCSprite::spriteWithFile(&Target.png&,
5 CCRectMake(0,0,27,40) );
7 // Determine where to spawn the target along the Y axis
8 CCSize winSize = CCDirector::sharedDirector()-&getWinSize();
9 int minY = target-&getContentSize().height/2;
10 int maxY = winSize.height
11 - target-&getContentSize().height/2;
12 int rangeY = maxY - minY;
13 // srand( TimGetTicks() );
14 int actualY = ( rand() % rangeY ) + minY;
16 // Create the target slightly off-screen along the right edge,
17 // and along a random position along the Y axis as calculated
18 target-&setPosition(
19 ccp(winSize.width + (target-&getContentSize().width/2),
20 actualY) );
21 this-&addChild(target);
23 // Determine speed of the target
24 int minDuration = (int)2.0;
25 int maxDuration = (int)4.0;
26 int rangeDuration = maxDuration - minD
27 // srand( TimGetTicks() );
28 int actualDuration = ( rand() % rangeDuration )
31 // Create the actions
32 CCFiniteTimeAction* actionMove =
33 CCMoveTo::actionWithDuration( (ccTime)actualDuration,
34 ccp(0 - target-&getContentSize().width/2, actualY) );
35 CCFiniteTimeAction* actionMoveDone =
36 CCCallFuncN::actionWithTarget( this,
37 callfuncN_selector(HelloWorld::spriteMoveFinished));
38 target-&runAction( CCSequence::actions(actionMove,
39 actionMoveDone, NULL) );
1// objc with cocos2d-iphone
2-(void)addTarget
4 CCSprite *target = [CCSprite spriteWithFile:@&Target.png&
5 rect:CGRectMake(0, 0, 27, 40)];
7 // Determine where to spawn the target along the Y axis
8 CGSize winSize = [[CCDirector sharedDirector] winSize];
9 int minY = target.contentSize.height/2;
10 int maxY = winSize.height - target.contentSize.height/2;
11 int rangeY = maxY - minY;
13 int actualY = (arc4random() % rangeY) + minY;
15 // Create the target slightly off-screen along the right edge,
16 // and along a random position along the Y axis as calculated
17 target.position =
18 ccp(winSize.width + (target.contentSize.width/2),
19 actualY);
20 [self addChild:target];
22 // Determine speed of the target
23 int minDuration = 2.0;
24 int maxDuration = 4.0;
25 int rangeDuration = maxDuration - minD
27 int actualDuration = (arc4random() % rangeDuration)
30 // Create the actions
31 id actionMove =
32 [CCMoveTo actionWithDuration:actualDuration
33 position:ccp(-target.contentSize.width/2, actualY)];
34 id actionMoveDone =
35 [CCCallFuncN actionWithTarget:self
36 selector:@selector(spriteMoveFinished:)];
37 [target runAction:[CCSequence actions:actionMove,
38 actionMoveDone, nil]];
这里用callfuncN_selector(HelloWorld::spriteMoveFinished)回调了spriteMoveFinished方法,我们需要在HelloWorldScene.h里声明并如下来定义它,
1// cpp with cocos2d-x
2void HelloWorld::spriteMoveFinished(CCNode* sender)
4 CCSprite *sprite = (CCSprite *)
5 this-&removeChild(sprite, true);
1// objc with cocos2d-iphone
2-(void)spriteMoveFinished:(id)sender
4 CCSprite *sprite = (CCSprite *)
5 [self removeChild:sprite cleanup:YES];
关于随机函数。srand和rand是C标准库函数。对于每一个平台来说,你可以先获取毫秒级时间来得到一个随机数。在沃Phone上,这个函数是TimGetTickes(),而在iPhone上,你可以直接通过arc4random()函数来获得随机数。
2. Objc中的YES和NO,在cpp中变为true和false。
回调函数,在objc中用selector:@selector(spriteMoveFinished),但在cpp中实现就比较复杂了,你可以参考cocos2dx\include\selector_protocol.h里的声明。一共有5种回调函数类型
 schedule_selector
 callfunc_selector
 callfuncN_selector
 callfuncND_selector
 menu_selector
如何使用它们,根据所用函数的定义来决定。比如使用CCTimer::initWithTarget函数,它的第二个参数是SEL_SCHEDULE类型,到selector_protocol.h里查一下,可以看到对应的是schedule_selector(_SELECTOR)宏,所以调用时就需要在类里头实现一个void
MyClass::MyCallbackFuncName(ccTime)函数,然后把schedule_selector(MyClass::MyCallbackFuncName)作为CCTimer::initWithTarget的第二个参数传入。
之后,我们应该定时地为游戏加入敌人,把以下代码加入到init()函数的返回值前。
1// cpp with cocos2d-x
2// Call game logic about every second
3this-&schedule( schedule_selector(HelloWorld::gameLogic), 1.0 );
1// objc with cocos2d-iphone
2// Call game logic about every second
3[self schedule:@selector(gameLogic:) interval:1.0];
然后在HelloWorldScence.cpp里实现gameLogic()。请注意gameLogic()应该声明为pubilc,否则是无法回调的。
1// cpp with cocos2d-x
2void HelloWorld::gameLogic(ccTime dt)
4 this-&addTarget();
1// objc with cocos2d-iphone
2-(void)gameLogic:(ccTime)dt
4 [self addTarget];
好了,所有事情都做完了,编译并运行,好好享用你的成果。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="http://www.cocos2d-x.org/attachments/download/220" alt="" />
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="http://www.cocos2d-x.org/attachments/download/217" alt="" />
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="http://www.cocos2d-x.org/attachments/download/219" alt="" />
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="http://www.cocos2d-x.org/attachments/download/214" alt="" />
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
Cocos2d是一个开源框架,用于构建2D游戏、演示程序和其他图形界
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
关于App营销,了解哪类App最能引起用户关注,以及不同
在iOS开发过程中,尤其是对于新手来说,都会遇到或多
Web App开发中会面临越来越“重”的问题,如果在开始
本书是按照全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》的要求,参照《网络管理员教程》及近年来考试试
Windows Phone专家
Android开发专家
51CTO旗下网站}

我要回帖

更多关于 cocos2d游戏源码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信