Cocos2d vision:  cocos2d-x-3.8.1

万丈高楼,起于累土。对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能,并灵活运用,

以及学会查阅Cocos2d官方提供的API文档。相信自己也能开发出自己喜爱或者让别人羡慕的游戏。

目录:

1>认识origin和visibleSize以及cocos2d的基础绘画类DrawNode的简单实用

2>认识 CCLOG()

3>有关schedule的使用

4>有关ContentSize和Anchor

5>有关本地坐标转换为世界坐标

===================================================================================================

1、认识origin和visibleSize以及cocos2d的基础绘画类DraNode的简单实用
origin可视区域的出发点坐标,visibleSize可视区域的尺寸

  1. Size visibleSize = Director::getInstance()->getVisibleSize();
  2. Vec2 origin = Director::getInstance()->getVisibleOrigin();

所以如果要获取屏幕可视区域的位置以及相对宽高,就可以在这两个属性的基础上设置。

实例代码:

  1. //1、DrawNode对象是cocos2d中比较基础的对象,可以用来绘制一些图形
  2. auto rect = DrawNode::create();
  3. //rect->drawRect(const cocos2d::Vec2 &origin, const cocos2d::Vec2 &destination, const cocos2d::Color4F &color)
  4. //第一个参数是绘制的起点,第二个参数是绘制的距离。第三个参数是颜色,4F表示的是RGBA四个颜色值,另外用F浮点数设置,每个浮点数范围在(0,1)之间
  5. rect -> drawRect(Vec2(,), Vec2(, ), Color4F(1.0, , , 1.0));
  6. addChild(rect);
  7.  
  8. rect -> setPosition(origin.x + visibleSize.width/-,
  9. origin.y + visibleSize.height/-);//设置矩形在可视区域的中间
  10. // rect -> setPosition(origin.x,origin.y);//设置起点位置在可视区域的起点坐标

效果:

 2、认识CCLOG的打印输出。

  1. CCLOG("X:%f,Y:%f\n",origin.x,origin.y);

类似C语言里的scanf("%d",number)语句。不过CCLOG不用添加换行符号"\n",CCLOG打印字符串之后,会自动打印换行。

 
3、有关schedule的使用
  1. auto rect = DrawNode::create();
  2. rect -> drawRect(Vec2(,), Vec2(, ), Color4F(1.0, , , 1.0));
  3. addChild(rect);
  4. rect -> setPosition(origin.x + visibleSize.width/,
  5. origin.y + visibleSize.height/);//设置矩形在可视区域的中间
  6. auto dot = DrawNode::create();
  7. dot -> drawDot(Vec2(,), , Color4F(1.0, 1.0, 1.0, 1.0));
  8. addChild(dot);
  9. dot -> setPosition(origin.x + visibleSize.width/ ,origin.y + visibleSize.height/ );
  10.  
  11. //我们需要让矩形不断的旋转,实用
  12. //schedule(<#const std::function<void (float)> &callback#>, <#const std::string &key#>)
  13. //第一个参数是函数(这里实用...表达式快速定义这个函数,并给float参数,[]是捕获列表,我们捕获dot和rect两个对象),
  14. //第二个参数是时间表中被调用这个操作的名称,我们可以通过这个名称来取消持续的调用。
  15. schedule([dot,rect](float f){
  16. rect -> setRotation(rect->getRotation()+);//选装这个矩形
  17. }, "Test");

效果图:

 
 4、有关ContentSize和Anchor
网上说 ContentSize是逻辑尺寸的意思。

  1. auto rect = DrawNode::create();
  2. rect -> drawRect(Vec2(,), Vec2(, ), Color4F(1.0, , , 1.0));
  3. addChild(rect);
  4. rect -> setPosition(origin.x + visibleSize.width/,
  5. origin.y + visibleSize.height/);
  6. auto dot = DrawNode::create();
  7. dot -> drawDot(Vec2(,), , Color4F(1.0, 1.0, 1.0, 1.0));
  8. addChild(dot);
  9. dot -> setPosition(origin.x + visibleSize.width/ ,origin.y + visibleSize.height/ );
  10.  
  11. //现在要把这个rect放置在屏幕的中间
  12. rect -> setContentSize(Size(,));
  13. rect -> setAnchorPoint(Vec2(0.5, 0.5));//这个设置锚点,参数是个比例值,
  14.  
  15. schedule([dot,rect](float f){
  16. rect -> setRotation(rect->getRotation()+);
  17. }, "Test");
  18. return true;

效果图:

 
 5、有关本地坐标转换为世界坐标。
  1. auto rect = DrawNode::create();
  2. rect -> drawRect(Vec2(,), Vec2(, ), Color4F(1.0, , , 1.0));
  3. addChild(rect);
  4. rect -> setPosition(origin.x + visibleSize.width/,
  5. origin.y + visibleSize.height/);
  6. auto dot = DrawNode::create();
  7. dot -> drawDot(Vec2(,), , Color4F(1.0, 1.0, 1.0, 1.0));
  8. rect->addChild(dot);//这里相对前面的代码实例,原本是场景add(dot),现在改为rect->add(dot)
  9. dot -> setPosition(Vec2(, ));//本地空间
  10.  
  11. //现在要把这个rect放置在屏幕的中间
  12. rect -> setContentSize(Size(,));
  13. rect -> setAnchorPoint(Vec2(0.5, 0.5));//这个设置锚点,参数是个比例值,
  14.  
  15. schedule([dot,rect](float f){
  16. rect -> setRotation(rect->getRotation()+);
  17. auto p = dot->convertToNodeSpace(Vec2(, ));//本地坐标转换为世界坐标
  18. CCLOG("%f,%f",p.x,p.y);
  19. }, "Test");
  20. return true;

效果:

 
 
 
 

Cocos2d入门--1--初涉相关属性或代码的更多相关文章

  1. 编写高质量代码改善C#程序的157个建议——建议147:重构多个相关属性为一个类

    建议147:重构多个相关属性为一个类 若存在多个相关属性,就应该考虑是否将其重构为一个类.查看如下类: class Person { public string Address { get; set; ...

  2. PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解

    本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...

  3. 【Cocos2d入门教程二】Cocos2d-x基础篇

    上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: a.环境设定(帧率 初始化ope ...

  4. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  5. Activity Intent Flags及Task相关属性

    转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...

  6. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  7. IOS开发UI基础UITextFidle相关属性

    UITextFidle相关属性 •    enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...

  8. UILabel的相关属性设置

    在iOS编程中UILabel是一个常用的控件,下面分享一下UILabel的相关属性设置的方法. 很多学习iOS6编程都是从storyboard开始,用到UILabel时是将控件拖到storyboard ...

  9. css margin的相关属性,问题及应用

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=48 引言:margin ...

随机推荐

  1. ES6入门系列一(基础)

    1.let命令 Tips: 块级作用域(只在当前块中有效) 不会变量提升(必须先申明在使用) 让变量独占该块,不再受外部影响 不允许重复声明 总之:let更像我们熟知的静态语言的的变量声明指令 ES6 ...

  2. Linux内核中双向链表的经典实现

    概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法.其中,也会涉及到Linux内核 ...

  3. linux 文件与进程

    1. linux查看一个文件正被那些程序使用 fuser -hUsage: fuser [-fMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIG ...

  4. 分享几个cocos2dx的小游戏

    先上几个自己写的,因为最近要用cocos2dx,所以就边学边开发几个小游戏玩玩,有捕鱼,连连看,还有打地鼠!都不算完整的项目,不过拿来学习还是可以的,或者在基础上再二次开发,扩展自己! 1:捕鱼的 先 ...

  5. 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式

    为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下: public class DataComparer<T>:IEqualityCompare ...

  6. 关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目

    关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目,请大家鉴定,不足之处,敬请指教! 第1到3题解答如下: public enum QuestionTy ...

  7. CSS3魔法堂:禁止用户改变textarea大小

    一.前言 在FF.Chrome和Safari下默认时允许用户以拖拽形式来改变textarea大小,这不仅与IE下textarea的行为特点有异,而且textarea的大小变化会撑大其父节点从而破坏整体 ...

  8. Unity实现滑页效果(UGUI)

    简介 项目需要...直接展示效果吧: 原理 使用UGUI提供的ScrollRect和ScrollBar组件实现基本滑动以及自己控制每次移动一页来达到滑页的效果. 实现过程 1.创建两个panel,上面 ...

  9. sql server2008中sql server身份能登录,window身份登录不了

    用sql server身份的sa登录成功进入,一切正常,用window身份登录不了,问题如下

  10. 与众不同 windows phone (48) - 8.0 其它: C# 调用 C++

    [源码下载] 与众不同 windows phone (48) - 8.0 其它: C# 调用 C++ 作者:webabcd 介绍与众不同 windows phone 8.0 之 其它 C# 中调用 W ...