android之cocos2d游戏基础篇

最近公司接了一个软控硬的项目,里面有几个游戏,因为之前一直在做应用,从没有接触过游戏这块。所以很苦逼!只能从头开始学习游戏开发,幸好有开源的东西,这里就整理下。

我是从cocos2D-x-android开始的,至于什么是cocos2D-x-android我也不就多说了,自己百度百科吧。下面我们就开始。笔记有点啰嗦,勿怪。

首先我们先谈下游戏开发和应用有什么区别:

1. 游戏开发不需要布局文件,需要图层和画布、场景都是用画出来的。

2. 游戏里面的图片都是放在assets文件夹下,通过特定方法绘制到图层上。

OK,下面我们就边说边看:

1.新建个工程,我这里就叫做Cocos2dDemo。直接删除布局文件。

2.导入cocos2d包,文章最后会有下载链接,也可以自己去github.com上下载。我这里就不给链接了。

3.做一些初始化的操作。看代码:

	CCGLSurfaceView  ccglSurfaceView=new CCGLSurfaceView(this);// 参数里面的上下文只能传递Activity 不能传递其它的上下文  因为底层强转成了activity
		setContentView(ccglSurfaceView);
		director = CCDirector.sharedDirector();
		
		// 开启线程 
		director.attachInView(ccglSurfaceView);
		director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);// 设置游戏的方向
		director.setScreenSize(480, 320);  // 设置屏幕的分辨率    可以自动适配
		director.setDisplayFPS(true);// 显示当前游戏的帧率    30
		//  运行场景 
		CCScene ccScene=CCScene.node();
		ccScene.addChild(new GameLay());// 场景添加图层 
		director.runWithScene(ccScene);
代码说明:CCGLSurFaceView这个类是cocos2D封装好的里,我们这里可以直接使用。场景类!CCDirector是导演类,可以执行导演的功能,比如如何演好这场电影,一步一步如何进行下去。

4.看精灵的产生类。

player = CCSprite.sprite("search_ioc.png");
		player.setPosition(100, 100);
		this.addChild(player);
		CGPoint pos = new CGPoint();
		pos.set(700, 100);
		CCJumpTo to = CCJumpTo.action(3, pos, 400, 7);
		player.runAction(to);
代码说明:CCSprite是精灵类,精灵是游戏中一切会动的东西。OK到这里一个简单的游戏就完成。实现的是让这个精灵在画布上跳7次。


下面是我总结的一些方面:

CCSprite
ccSprite.setAnchorPoint(0, 0);// 默认是0.5 0.5 图片钉子的位置
ccSprite.setPosition(x, y);// 设置坐标点 订到墙的哪个位置
ccSprite.setFlipX(true); 水平翻转
ccSprite.setFlipY(true);// 垂直翻转
ccSprite.setScale(2);// 设置缩放比例 参数2 代表 宽度和高度都是原来的两倍
ccSprite.setOpacity(100);// 设置不透明度 值越大 越不透明 0-255
ccSprite.setVisible(false);// 让精灵不可见
ccSprite.removeSelf();// 把自己回收 ,被回收了
CCDirector
director.attachInView(ccglSurfaceView) 开启线程
director.runWithScene(ccScene); 运行场景
导演的生命周期要和activity的生命周期绑定在一起
director.setScreenSize(480, 320); // 设置屏幕的分辨率 可以自动适配
director.setDisplayFPS(true);// 显示当前游戏的帧率 30
CCScene
目前该类没有什么具体的功能,它只是作为一个项目中需要展示内容的根节点存在。
CCLayer
this.addChild(ccSprite); // 图层添加精灵
2 
// 按下 public boolean ccTouchesBegan(MotionEvent event);
// 移动
public boolean ccTouchesMoved(MotionEvent event);

// 抬起
public boolean ccTouchesEnded(MotionEvent event);

//取消
public boolean ccTouchesCancelled(MotionEvent event);
3 setIsTouchEnabled(true);// 打开了触摸事件
CGPoint cgpoint = this.convertTouchToNodeSpace(event); 坐标系点的转换
CCNode
CCNode 是精灵场景图层的父类, 具备了 精灵 场景 图层大部分的方法
CCAction
动作
CCFiniteTimeAction 和时间相关动作

CCInstantAction 瞬时动作 闪现

CCIntervalAction 延迟动作 疾跑

CCFollow 跟随动作

CCRepeatForever 永不停止的动作
CCSpeed 和速度相关的动作
CCMoveTo
移动
没有相反动作
CCMoveBy
reverse 取相反动作
有相反动作的
跳跃
private void jumpBy() {
    // 1需要创建动作  跳跃
    //  参数1 时间 单位秒
    // 参数2  跳跃的坐标的变化

    // 参数4 跳跃的次数 
    CCJumpBy ccJumpBy=CCJumpBy.action(2, ccp(200, 200),100, 2);
    CCJumpBy reverse = ccJumpBy.reverse();
    // 串行动作
    CCSequence sequence=CCSequence.actions(ccJumpBy, reverse);
    CCRepeatForever forever=CCRepeatForever.action(sequence);// 把一个串行动作做了一层包装 包装的结果该动作可以永不停止的循环
    // 2 获取一个精灵
    CCSprite ccSprite=getSprite();
    //3 精灵运行动作
    ccSprite.runAction(forever);
}
缩放
        private void scale() {
    // 参数1 缩放时间
    // 参数2 缩放后的大小
    CCScaleBy ccScaleBy=CCScaleBy.action(1, 2);
    CCScaleBy reverse = ccScaleBy.reverse();
    CCSequence ccSequence=CCSequence.actions(ccScaleBy, reverse);
    CCRepeatForever forever=CCRepeatForever.action(ccSequence);
    CCSprite heart = getHeart();
    heart.setPosition(100, 100);
    heart.runAction(forever);
}
旋转
private void rotateBy() {
    CCRotateBy ccRotateBy=CCRotateBy.action(5, 270);
    CCSprite heart = getHeart();
    heart.setPosition(200, 100);
    heart.setAnchorPoint(ccp(0.5f, 0.5f));
    heart.runAction(ccRotateBy);
}

private void rotateTo() {  // 偷懒
    //参数1 时间
    // 参数2 旋转角度
    CCRotateTo ccRotateTo=CCRotateTo.action(5, 270);  // 旋转基于 锚点进行旋转
    CCSprite heart = getHeart();
    heart.setPosition(100, 100);
    heart.setAnchorPoint(ccp(0.5f, 0.5f));

    heart.runAction(ccRotateTo);

}
颜色渐变
    private void tint() {
    // 创建动作 
    // 参数1 变化的时间  
    //参数2  变化的颜色改变
    CCTintBy ccTintBy=CCTintBy.action(1, ccc3(100, 50, -100));  //  0-255 
    // 特殊的精灵 专门用来显示文字
    // 参数1 要显示的文字 
    // 参数2   显示什么字体
    //  参数3 字体的大小
    CCLabel  ccLabel =CCLabel.labelWithString("那些年我们在传智的日子", "hkbd.ttf", 20);
    ccLabel.setColor(ccc3(0, 50, 200));
    this.addChild(ccLabel); //如果不添加到图层上 是没法显示的
    CCTintBy reverse = ccTintBy.reverse();
    CCSequence actions = CCSequence.actions(ccTintBy, reverse);
    CCRepeatForever action = CCRepeatForever.action(actions);
    // 如何获取到屏幕中间的位置 
    CCDirector ccDirector=CCDirector.sharedDirector();
    CGSize winSize = ccDirector.getWinSize();// 获取到了游戏屏幕的尺寸
    ccLabel.setPosition(winSize.width/2, winSize.height/2);
    ccLabel.runAction(action);

}
闪烁
    private void blink() {
    // 参数1  闪烁的时间 
    // 参数2 闪烁的次数
    CCBlink blink=CCBlink.action(2, 3);

    getSprite().runAction(blink);
}
淡入淡出
private void fade() {
//  CCFadeIn ccFadeIn=CCFadeIn.action(3);
    //getSprite().runAction(ccFadeIn);
    //CCFadeOut ccFadeOut=CCFadeOut.action(3);
    //getSprite().runAction(ccFadeOut);

    CCFadeIn ccFadeIn=CCFadeIn.action(3);
    ccFadeIn.reverse()
}
下载链接: cocos2D.jar



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灿烂的黑土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值