cocos2d实例移动精灵

摘要:
在这个实例中,我们将用一个红色的小方块图片做为精灵,当我们触摸屏幕时,精灵将会平滑的移动到触摸处,在开始这篇教程之前,我们首先需要确定Cocos2d的环境已经建立起来。为了简化这个过程,你可以下载Coco2d0.7.2项目模版,并且安装到合适的位置步骤1:创建一个Cocos2d项目,如果你已经正确安装的cocos2d项目模板,你会看到如下图所示的选项选择cocos2dApplication然后为工程命名“BoxMove”步骤2:添加这个图片到Resources1#import"cocos2d.h"23#import"Layer.h"45@interfaceBoxLayer:Layer{CCSprite*boxSprite;}@end67//BoxLayer.m89#import"BoxLayer.h"1011@implementationBoxLayer1213-init{14self=[superinit];15if(nil!

原文链接:http://iphonedev.net/2009/05/10/cocos2d-example-move-sprite/

(注:原文写的较早,与现在的版本有点出入,这里我直接换成目前版本)

Cocos2d 引擎大大的简化了iphone游戏开发的过程。在这个实例中,我们将用一个红色的小方块图片做为精灵,当我们触摸屏幕时,精灵将会平滑的移动到触摸处,在开始这篇教程之前,我们首先需要确定Cocos2d 的环境已经建立起来。为了简化这个过程,你可以下载Coco2d 0.7.2(目前最新版本1.0.0)项目模版,并且安装到合适的位置

步骤1:创建一个Cocos2d 项目,如果你已经正确安装的cocos2d项目模板,你会看到如下图所示的选项

cocos2d实例移动精灵第1张

选择 cocos2d Application 然后为工程命名“BoxMove”

步骤2:添加这个图片到 Resources

cocos2d实例移动精灵第2张

1 #import"cocos2d.h"2 3 #import"Layer.h"4 5 @interfaceBoxLayer : Layer { CCSprite*boxSprite; } @end6 7 //BoxLayer.m8 9 #import"BoxLayer.h"10 11 @implementationBoxLayer
12 13 -(id)init{
14 self =[super init];
15 if(nil!=self){
16 isTouchEnabled =YES;
17 boxSprite =[CCSprite spriteWithFile:@"box.png"];
18 [boxSprite setPosition:CGPointMake(25, 25)];
19 [self add:boxSprite];
20 }
21 returnself;
22 }
23 24 -(BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event25 {
26 UITouch *touch =[touches anyObject];
27 CGPoint point =[touch locationInView: [touch view]];
28 [boxSprite runAction:[CCMoveTo actionWithDuration:1position:[[Director sharedDirector]convertToGL:point]]];
29 returnYES;
30 }
31 @end

在BoxLayer类的init方法中 我们创建了一个box.png的精灵对象 并且设置了它的初始位置,(注意:我们在BoxLayer类中定义了一个精灵指针 boxSprite,在init方法最后去初始化)此外,我们实现了ccTouchesBegan:withEvent 方法,这就以为着这个视图层将会响应触摸事件,在这个方法里,我们首先得到了触摸的位置,然后我们用 runAction 方法将精灵移动到此,需要注意的是 convertCoordinate 方法(目前使用convertToGL) 将UIKit 坐标转换成了cocos2d坐标(注意:触摸事件使用的是 UIKIT坐标,与cocos2d坐标不同)

步骤4:工程模版会默认创建一个MyScene 类(新的版本中为HelloWorldLayer),但我们需要做以下修改:

//HelloWorldLayer.h#import"Cocos2d.h"#import"BoxLayer.h"@interfaceHelloWorldLayer: CCLayer {
BoxLayer
*boxLayer;
}
@property (nonatomic, retain) BoxLayer
*boxLayer;
@end//HelloWorldLayer.m#import"HelloWorldLayer.h"#import"BoxLayer.h"@implementationHelloWorldLayer
@synthesizeboxLayer;
-(void)dealloc{
[boxLayer release];
[super release];
}
-(id)init{
self
=[super init];
if(nil !=self){
self.boxLayer
=[[BoxLayer alloc]init];
[self add:boxLayer];
}
returnself;
}
@end

在以上的代码中,我们在HelloWorldLayer类中定义了一个BoxLayer的指针boxLayer ,并在init方法中为它分配了内存,在最后,我们把boxLayer 添加到屏幕上.(注:要在dealloc中释放内存)

步骤5:构建工程并运行,你将会看到如下的运行结果

cocos2d实例移动精灵第3张

免责声明:文章转载自《cocos2d实例移动精灵》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS 6.3下Samba服务器的安装与配置方法(图文详解)PHP Laravel的容器化开发与部署下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Cocos2dx 多线程

多-threaded负荷plist特征。获取知识的必要性: 1.多线程开启:pthread 2.怎样在线程中载入plist 一.多线程开启 当我们想在程序中开多线程中。第一想到的是cocos2d-x有没有自带方法。幸运的是我们找到了CCThread,不幸却发现里面什么都没有。 cocos2d-x自带了一个第三方插件--pthread,在cocos2dx...

Cocos2d-x教程(35)-三维拾取Ray-AABB碰撞检測算法

欢迎增加Cocos2d-x 交流群:193411763 转载时请注明原文出处 :http://blog.csdn.net/u012945598/article/details/39927911 -------------------------------------------------------------------...

Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密

http://www.cocoachina.com/bbs/read.php?tid=205802 lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密。试了一下。确实可行。 以下是使用原生的lua解释器编译字节码: 1、新建一个名为1.lua的文件。里面仅仅有一句话print("He...

CocosCreator Shader笔记 (TheBookOfShader、渐变色、攻击闪白特效)

 cocos版本:2.4.4 参考: Cocos2D文档: 材质资源  、 Effect Cocos3D文档:  材质 、 常用 shader 内置 Uniform 基础知识:    The Book of Shader 中文版 水友文章:    学习shader的入门笔记                       cocos2.3 Shader编写示例...

cocos2d-x学习 之一

最近准备学习cocos2d-x的开发,首先要搭建一下开发环境。今天就先搭建一下开发环境。本人系统为Mint-15 64位的linux,以下的开发环境只用于linux。首先到cocos2d-x的官网上下载安装包,由于cocos2d-x是开源的,所以我们可以查看源码,从以下地址下载: http://www.cocos2d-x.org/download 我们下载2...

【原生】CocosCreator Android和游戏的通讯 (Java和TS互相调用、传递JSON数据、监听返回键)

Cocos版本:2.4.4 参考: Cocos文档-Java原生反射机制 Cocos文档-JSB使用指南 一  Cocos中调用Android方法 二 Android中调用Cocos方法 三 传递JSON数据 四 监听返回键  五 遇到的问题 cocos和android的互相调用,在Java中可以调用TypeScript的方法,在TypeScript中可以...