接上一节内容:cocos2dx - 环境配置,项目创建

本节主要描述cocos中精灵的创建及点击事件的使用

打开创建好的test项目,看到下图的目录结构,真正的游戏逻辑路径在src下。

AppDelegate类主要描述启动应用的一些设置及回调。

HelloWorldScene类是当前显示界面的场景类。

图片精灵

开始之前,先去掉HelloWorldScene下init方法的内容。然后创建Sprite类并添加到Scene节点中显示,如下:

    // 获取显示的游戏大小
Size visibleSize = Director::getInstance()->getVisibleSize();
// 获取显示区域的起始点
Vec2 origin = Director::getInstance()->getVisibleOrigin(); // 加载图片精灵
auto sprite = Sprite::create("1.jpg");
// 设置位置在屏幕中间
sprite->setPosition(Vec2(visibleSize.width / + origin.x, visibleSize.height / + origin.y));
auto size = sprite->getContentSize();
float scaleX = visibleSize.width / size.width;
float scaleY = visibleSize.height / size.height;
float scale = scaleX > scaleY ? scaleX : scaleY;
sprite->setScale(scale);
// 添加到节点上
this->addChild(sprite, );

运行结果:

游戏画面看起来有点小,在AppDelegate中找到  designResolutionSize ,并设置合适大小。

static cocos2d::Size designResolutionSize = cocos2d::Size(, );

看起来有点模糊,这里是因为我找的原图比较小,在加载时做了等比放大拉伸导致。(体会到没美术的痛苦)

屏幕点击事件

先添加一个玩家对象来表现效果,这里addChild第2个参数表示层级,设为1比上面的图片高,则显示在上层。

    // 加载图片精灵
m_pPlayer = Sprite::create("player.png");
// 设置位置在屏幕中间
m_pPlayer->setPosition(Vec2(visibleSize.width / + origin.x, + origin.y));
// 添加到节点上
this->addChild(m_pPlayer, );

效果如下:

在init添加如下代码,并实现具体的 onTouchMoved 等方法

表示监听this这个窗口的Touch事件,并回调到对应的 onTouchMoved等方法。

    // 添加屏幕点击事件监听
auto dispatcher = Director::getInstance()->getEventDispatcher();
auto myListener = EventListenerTouchOneByOne::create();
//如果不加入此句消息依旧会向下传递
myListener->setSwallowTouches(true);
myListener->onTouchBegan = std::bind(&HelloWorld::onTouchBegan, this, std::placeholders::_1, std::placeholders::_2);
myListener->onTouchMoved = std::bind(&HelloWorld::onTouchMoved, this, std::placeholders::_1, std::placeholders::_2);
myListener->onTouchEnded = std::bind(&HelloWorld::onTouchEnded, this, std::placeholders::_1, std::placeholders::_2);
dispatcher->addEventListenerWithSceneGraphPriority(myListener, this);

在onTouchMoved加入如下代码用来控制player移动看效果。

void HelloWorld::onTouchMoved(Touch *pTouch, Event *pEvent)
{
if (m_pPlayer)
{
// 计算移动后的位置
float desX = m_pPlayer->getPositionX() + pTouch->getDelta().x; // 防止超出屏幕
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
if (desX<origin.x)
{
desX = origin.x;
}
if (desX>origin.x+visibleSize.width)
{
desX = origin.x + visibleSize.width;
}
m_pPlayer->setPositionX(desX);
}
}

这样游戏中就有了简单的地图背景(图片)及玩家,并且可以进行左右移动。o(∩_∩)o ~

cocos2dx - 创建地图及玩家(伪)的更多相关文章

  1. [Cocos2D-x For WP8]Tile Map创建地图

    在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapedi ...

  2. HTML5结合百度地图API创建地图应用

    具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid ...

  3. js调用百度地图API创建地图

    技术交流群:233513714 <html xmlns="http://www.w3.org/1999/xhtml"><head runat="serv ...

  4. js调用百度地图API创建地图,搜索位置

    实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...

  5. 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

    原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...

  6. 【百度地图API】建立全国银行位置查询系统(一)——如何创建地图

    原文:[百度地图API]建立全国银行位置查询系统(一)--如何创建地图 <摘要>你将在第一章中学会以下知识: 如何创建一个网页文件 怎样利用百度地图API建立一张2D地图,以及3D地图 如 ...

  7. 在slam_gmapping中使用Log数据创建地图

    本文介绍使用机器人记录的tf变换和激光扫描数据来建立2D地图.并在ROS的图形化模拟环境rviz中通过重新回放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程. 1.ROS gmapp ...

  8. 在 SharePoint 2013 中针对地理位置字段创建地图视图

    在 SharePoint 2013 中针对地理位置字段创建地图视图 了解如何通过在 SharePoint 2013 列表中使用地图视图来显示位置信息.您可以通过 SharePoint 用户界面 (UI ...

  9. 忍者无敌-实例解说Cocos2d-x瓦片地图

    实例比較简单,如图所看到的,地图上有一个忍者精灵,玩家点击他周围的上.下.左.右,他能够向这个方向行走. 当他遇到障碍物后是无法穿越的,障碍物是除了草地以为部分,包含了:树.山.河流等. 忍者实例地图 ...

随机推荐

  1. unity3D HTC VIVE开发-物体高亮功能实现

    在VR开发时,有时需要用到物体高亮的功能.这里使用Highlighting System v3.0.1.unitypackage插件实现. Highlighting System v3.0.1的介绍访 ...

  2. 超级简单实用的前端必备技能-javascript-全屏滚动插件

      fullPage.js fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站 本章内容将详细介绍Android事件的具体处理及常见事件. 主要功能 支持 ...

  3. 四则运算题目生成程序(基于控制台)(Bug修改)

    针对上个程序中出现的bug进行修改 https://git.coding.net/cx873230936/calculator.git Bug: 1.控制台输入问题数问题 a.不能处理用户输入负数. ...

  4. Beta的计划和人员的变动

    一.新的成员和组长是否重选: 刘光华:先加入的一个帅哥,乐于助人,编码基础不是很好,但是有一颗热爱学习的心,会积极主动的完成自己的任务的,一句话宣言:我们的团队是最棒的! 程志铭:做事认真负责,工作脚 ...

  5. 201521123052《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4 ...

  6. 201521123052《Java程序设计》第2周学习总结

    1. 本周学习总结 String类一些用法 学习Array类 使用枚举 使用eclipse关联JDK源代码 使用码云管理云代码 2.书面作业 1.使用Eclipse关联jdk源代码,并查看String ...

  7. 201521123003《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  8. 201521123122 《java程序设计》第十一周学习总结

    ## 201521123122 <java程序设计>第十一周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 其实这周也没讲多少内容,所 ...

  9. Core Java 简单谈谈HashSet

    同学们在看这个问题的时候,我先提出者两个问题,然后大家带着问题看这个文章会理解的更好. HashSet为什么添加元素时不能添加重复元素? HashSet是否添加null元素? 打开源码, 我们看到如下 ...

  10. HTTP请求的header头解析

    Request Headers: 下图是我访问一个URL:http://www.hzau.edu.cn的一个header,根据具体实例来分析一下各部分的功能及其作用. Accept 作用: 浏览器端可 ...