//

//  MainScene.hpp

//  helloworld

//

//  Created by apple on 16/9/19.

//

//

#ifndef MainScene_hpp

#define MainScene_hpp

#include <stdio.h>

#include "cocos2d.h"

using namespace cocos2d;

//定义一个场景类

class MainScene : public cocos2d::Layer{

private:

// 成员变量(私有的)

cocos2d::Sprite *sprite;//定义一个精灵成员变量

Size size;

public:

virtual bool init(); // 虚函数,返回值为布尔类型,没有函数

static cocos2d::Scene* createScene();//static是一个类方法返回场景

void menuCallback(Ref* pSender);

CREATE_FUNC(MainScene);

//重载draw方法

virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override;

protected:

//自定义draw实现

void onDraw(const cocos2d::Mat4 &transform, bool transformUpdated);

cocos2d::CustomCommand _customCommand;

};

#endif /* MainScene_hpp */

//

//  MainScene.cpp

//  helloworld

//

//  Created by apple on 16/9/19.

//

//

#include "MainScene.hpp"

USING_NS_CC;

Scene * MainScene::createScene()

{

auto scene = Scene::create();

//    CCScene * scene = CCScene::create();// 创建场景

//创建层

MainScene *layer = MainScene::create();

scene->addChild(layer);

return scene;

}

bool MainScene::init(){

if (!Layer::init()) {

return false;

}

//获取屏幕大小

size = Director::getInstance()->getVisibleSize();

//auto size = Director::getInstance()->getWinSize();

return true;

}

void MainScene::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)

{

_customCommand.init(_globalZOrder);

_customCommand.func = CC_CALLBACK_0(MainScene::onDraw, this, transform, flags);

renderer->addCommand(&_customCommand);

}

void MainScene::onDraw(const cocos2d::Mat4 &transform, bool transformUpdated)

{

//利用Stack缓存

Director *director = Director::getInstance();

//CCASSERT(nullptr != director, "Director is null when setting matrix stack");

director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);

director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform);

CHECK_GL_ERROR_DEBUG();

//画边框

DrawPrimitives::setDrawColor4B(255, 255, 255, 255);

glLineWidth(10);

Vec2 vertices[] = {Vec2(100, 100), Vec2(300, 100), Vec2(300, 300), Vec2(100, 300)};

DrawPrimitives::drawPoly(vertices, 4, true);

CHECK_GL_ERROR_DEBUG();

//绘制停止,释放

director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);

}

void MainScene::menuCallback(Ref* pSender)

{

}

cocos2dx 3.x(绘制线条)的更多相关文章

  1. iOS 动画绘制线条颜色渐变的折线图

    效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...

  2. 使用html5 Canvas绘制线条(直线、折线等)

    使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有"()"者为方法)如下: 属性或方法 基本描述 strokeSty ...

  3. GDI基础(1):绘制线条和图形

    1. 绘制一个像素点:SetPixel(). 绘制直线:MoveTo(),LineTo(). 绘制多个首尾相连的线:Polyline(). 绘制矩形:FrameRect(),Rectangle(),F ...

  4. html5的canvas绘制线条,moveTo和lineTo详解

    今天在看html5,里面新增的属性有一个canvas,它相当于一个画布你可以用js在里面画你想要的效果!我在w3c的手册里面看到用moveTo和lineTo绘制线条讲的不是很清楚,尤其是moveTo和 ...

  5. canvas绘制线条详解

    canvas详解----绘制线条 <!DOCTYPE html> <html> <head> <title>canvas详解</title> ...

  6. Python:matplotlib绘制线条图

    线型图是学习matplotlib绘图的最基础案例.我们来看看具体过程:  下面我们将两条曲线绘制到一个图形里:   可以看到这种方式下,两个线条共用一个坐标轴,并且自动区分颜色. plot方法的核心是 ...

  7. HTML5<canvas>标签:使用canvas元素在网页上绘制线条和圆(1)

    什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...

  8. canvas基础入门(二)绘制线条、三角形、七巧板

    复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始 canvas绘制直线先认识几个函数 beginPath():开始一条路径,或重置当前的路径 moveTo(x,y):用于规 ...

  9. canvas详解----绘制线条

    <!DOCTYPE html> <html> <head> <title>canvas详解</title> </head> &l ...

随机推荐

  1. .NET Core 2.0 单元测试中初识 IOptionsMonitor<T>

    在针对下面设置 CookieAuthenticationOptions 的扩展方法写单元测试时遇到了问题. public static IServiceCollection AddCnblogsAut ...

  2. rabbitmq简单实例

    JMS组件:activemq(慢)AMQP组件(advance message queue protocol):rabbitmq和kafka 一..消息队列解决了什么问题?异步处理应用解耦流量削锋日志 ...

  3. hive进行词频统计

    统计文件信息: $ /opt/cdh-5.3.6/hadoop-2.5.0/bin/hdfs dfs -text /user/hadoop/wordcount/input/wc.input hadoo ...

  4. 字母算术的python算法

    据说Google出过一道题目:WWWDOT – GOOGLE = DOTCOM. 其中每个字母代表一个数字,数字不能重复,而且最高位的数字不能为0. 像这样的谜题被称为cryptarithms或者字母 ...

  5. C-Free 5 安装 [Error] G__~1.EXE: (x86)\C-FREE~1\mingw\mingw32\bin\: No such file or directory

    解决[Error] g++.exe: 5\mingw\include: No such file or directory - 陆总的博客 - CSDN博客 https://blog.csdn.net ...

  6. 2014年蓝桥杯省赛A组c++第2题(推公式)

    /* 标题:切面条 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间切一刀,会 ...

  7. hdfs mapreduce hbase

    参考资料:http://www.cnblogs.com/sharpxiajun/p/5585613.html 大数据时代的数据量是超大规模的,传统的关系数据库已经很难存储和管理这些数据了,为了存储海量 ...

  8. 在VMware运行Linux下,密码错误的原因

    抱歉,没有奏效,请再试一次 密码明明是正确的,但依旧报错 原因: 密码中有大写,但键盘中的大写按键在登录界面无效,需要按住shift才能实现大写.

  9. 应用docker化

    1)首先安装源代码工具Git.  [root@master~]# yum install-y git  2)从GitHub上下载示例的Java应用源代码.  [root@master~]# cd/op ...

  10. gitlab访问用户安装的postgresql数据库

    1.先将gitlab默认安装的postgresql的数据库中的数据,导入到用户安装的postgresql数据 用Navicat迁移数据.函数不用迁移. 2.配置gitlab对postgresql数据库 ...