//

//  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)

{

}

最新文章

  1. 解决vue与传统jquery插件冲突
  2. 创业公司招php商城开发者
  3. 周爱民:真正的架构师是没有title的(图灵访谈)
  4. Hadoop Streaming例子(python)
  5. QT对话框模式与非模式
  6. TRUNCATE与 DELETE
  7. cnblog评价以及团队软件的部分改善
  8. js渐变显示渐变消失
  9. __attribute__ ((section(&quot;.text&quot;)))的测试
  10. Android中集成第三方库的方法和问题
  11. 手动安装cloudera manager 5.x(tar包方式)详解
  12. spring @Qualifier注解使用
  13. 《java入门第一季》之类小案例(模拟用户登录)
  14. CSS3(animation, trasfrom)总结
  15. iis和tomcat同时运行,完美解决80端口冲突问题
  16. Android基础总结+SQlite数据库【申明:来源于网络】
  17. node.js学习一---------------------模块的导入
  18. Windows7 VS2015 下编译 PythonQt3.2
  19. sublime text3最常用快捷键
  20. iOS.Thread.OSAtomic

热门文章

  1. robot framework ——关键字run keyword if 如何在一个条件下接多个执行语句,以及如何写复杂条件句
  2. [No0000EE]主要的宏观经济指标查询
  3. [No0000CD]shell 中的单行注释和多行注释
  4. [No0000BE]控制台切换字符格式&Code Page Identifiers
  5. 生日蛋糕 POJ - 1190 搜索 数学
  6. display style edit
  7. PHP之对象类型
  8. static的含义
  9. airflow 实战
  10. C#查找字符串位置