Cocos2d入门--1-- 初涉相关属性或代码

 Cocos2d入门--1-- 初涉相关属性或代码

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(0,0), Vec2(100, 100), Color4F(1.0, 0, 0, 1.0));
 6      addChild(rect);
 7
 8     rect -> setPosition(origin.x + visibleSize.width/2-50,
 9                         origin.y + visibleSize.height/2-50);//设置矩形在可视区域的中间
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(0,0), Vec2(100, 100), Color4F(1.0, 0, 0, 1.0));
 3     addChild(rect);
 4     rect -> setPosition(origin.x + visibleSize.width/2,
 5                         origin.y + visibleSize.height/2);//设置矩形在可视区域的中间
 6     auto dot = DrawNode::create();
 7     dot -> drawDot(Vec2(0,0), 4, Color4F(1.0, 1.0, 1.0, 1.0));
 8     addChild(dot);
 9     dot -> setPosition(origin.x + visibleSize.width/2 ,origin.y + visibleSize.height/2 );
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()+1);//选装这个矩形
17     }, "Test");

效果图:

 4、有关ContentSize和Anchor

网上说 ContentSize是逻辑尺寸的意思。

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

效果图:

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

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

效果:

时间: 2024-11-06 22:31:25

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

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

上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: 环境设定(帧率 初始化openGl和渲染器) 场景管理 执行主循环 游戏就是个死循环 不断不断的渲染  就跟视频没两样 一帧一帧的绘制出来  话说提一下一帧为1/60秒  也就是说cocos2d里一秒渲染60次 导演的管理:   计时器  事件管理器  动作管理器 导演继承于REF  一个单例类 获得导演类Director实例语句

HTML入门基础教程相关知识

HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文本文档的一种简单标记语言,经常用来创建web页面.html文件是带有格式标识符和超文本链接的内嵌代码的ascii 文本文件——html结构了解. html文本是由 html命令组成的描述性文本,html 命令可以说明文字. 图形.动画.声音.表格.链接等. html网页结构包括头部 (head).主

Cocos2d入门--3-- 向量的应用

 Cocos2d入门--3-- 向量的应用 小球向一个方向持续运动的Demo HelloWorldScene.h ...... //设置一个protected的属性 protected: cocos2d::Vec2 _vec; ...... HelloWorldScene.cpp //这个是通过随机数设置向量的方向 _vec.set(random(-0.1f, 1.0f), random(-1.0f, 1.0f)); //通过normalize这个标准化函数,能够使得向量的大小为1 _vec.n

前端笔记九,背景、边框和补丁相关属性

常用的背景相关属性:以下属性均在style内设置 background:设置对象的背景样式,不建议直接通过该属性来控制 background-attachment:设置背景图片是随对象内容滚动还是固定的,可选值: scroll:会随内容的滚动而滚动 fixed:背景图片固定 background-color:设置背景色,如果设置了背景图片则会覆盖背景色 background-image:设置背景图片,使用url()函数 background-position:设置对象的背景图片的位置,第一个表示

AJAX入门--- XMLHttpRequest对象的属性和方法

由于刚刚接触到Ajax对其比较陌生,而其中的XMLHttpRequest对象更是未曾听闻.开始学之前,了解一下它的属性和方法为它的使用做下铺垫.本文重点介绍XMLHttpRequest的属性和方法. XMLHttpRequest对象的属性和事件 属性 描述 readyState 表示XMLHttpRequest对象的状态[1] responseText 包含客户端接收到的HTTP相应的文本内容[2] responseXML 服务器响应的XML内容对应的DOM对象[3] status 服务器返回h

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

同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 -------------------------------------------------------------------------- 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大

canvas相关属性使用

1.canvas按百分比画圆环 可以使用canvas的arc属性画出圆环,百分比部分换算成弧度即可. 2.canvas的font属性没法单独设置,必须设置两个及以上相关属性. 如果要通过传入的值来改变font属性的参数,可以通过正则匹配表达式,replace方法来实现, 如改变字号: context.font = "italic 12px/20px arial"; context.font = context.font.replace(/\d+(\.\d+)?(px|pt|em|%)/

【html】学习记录-CSS的column相关属性

column相关属性: column-count:定义内容以多列形式显示 column-gap:定义每列之间的间距 示例: <section class="fourcolumn"> 人类或其他任何活着的个体,在生命之初不是放弃,不是自我唾弃,也不是对自己的存在进行诅咒.那些都是需要一个腐败和堕落的过程的,这一腐败的速度因人而异.有些人刚碰到压力便放弃了:有些人出卖和背叛了自己的意识:有些人不知不觉地慢慢熄火了,却从不知道自己何时已经失去了这种意识.然后,长者们蜂拥而上,百折

UILabel的相关属性设置

在iOS编程中UILabel是一个常用的控件,下面分享一下UILabel的相关属性设置的方法. 很多学习iOS6编程都是从storyboard开始,用到UILabel时是将控件拖到storyboard中生成实现,如果想要在-(void)viewDidLoad中用代码如[_label initWithFrame:CGRectMake(X,Y,WIDTH,HEIGHT)]方法改变拖拽到storyboard的label的大小是行不通的,因为程序加载时先执行了-(void)viewDidLoad的代码,