//

//  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. KONE-FLOW Vistor Key

    WELCOME TO KONE

  2. cordova 内部API 用ssl https,报错

    环境:node6.10.1 cordova 6.x, ionic 2.2.1 用cordova/ionic 建立的app我们的api 地址要用https,做了安全加密之后,按照正常的流程,打包,然后跑 ...

  3. wap手机端实现上传图片流程

    实现图片上传使用了WeUI uploader插件 WeUI:是一套同微信原生视觉体验一致的基础样式库,为微信Web开发量身设计 流程:图片上传用到了FileReader,FormData,用这两个基本 ...

  4. Flink – Stream Task执行过程

    Task.run if (invokable instanceof StatefulTask) { StatefulTask op = (StatefulTask) invokable; op.set ...

  5. Flash builder 、flash cs6、 as 3.0研究

    1.Flash/Actionscript3 载入资源文件方法考 http://zengrong.net/post/1107.htm 2.使用Flash Professional CS5和Flash B ...

  6. ubuntu安装jupyter 并设置远程访问

    Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程,可视化和说明文本的文档. 简单的介绍就是:Jupyter Notebook是Ipython的升级版,而Ipyt ...

  7. Asp.net Mvc Ajax.BeginForm提交表单

    之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...

  8. MyEclipse下创建的项目 导入eclipse

    1.导入在MyEclipse下创建的项目 2.把项目变成Web项目,在项目上右键-->Properties-->选择Project Facets-->点击Convert to fac ...

  9. tomcat 的acceptCount、acceptorThreadCount、maxConnections、maxThreads 如何确定

    acceptCount 连接在被ServerSocketChannel accept之前就暂存在这个队列中,acceptCount就是这个队列的最大长度. ServerSocketChannel ac ...

  10. JavaScript学习(一)

    变量本身是没有类型的,类型在于它的值(注意开头都是小写).