1. #ifndef _DRAGLABEL_H_
  2. #define _DRAGLABEL_H_
  3.  
  4. #include "cocos2d.h"
  5. USING_NS_CC;
  6.  
  7. class DragLabel : public Layer {
  8. private:
  9. Node* pickNode = NULL;
  10. Point delta;
  11. LabelTTF * lbl;
  12. public:
  13. /*得到 Scene 的静态方法,在AppDelegate类中需要使用*/
  14. static Scene* getScene() {
  15. auto sc = Scene::create();
  16. sc->addChild(DragLabel::create());
  17. return sc;
  18. }
  19.  
  20. /*实现init方法,并在一开始需要先调用父类 Layer 的init方法初始化父类*/
  21. virtual bool init() {
  22. if (!Layer::init()) {
  23. return false;
  24. }
  25. // 得到窗口的大小
  26. auto size = Director::getInstance()->getWinSize();
  27. // Label
  28. lbl = LabelTTF::create("I am a Label", "Arial", );
  29. lbl->setPosition(Point(size.width / , size.height - ));
  30.  
  31. this->addChild(lbl, , );
  32.  
  33. // 注册 触摸事件
  34. this->setTouchEnabled(true);
  35.  
  36. // 注册 Update 事件 : 需要实现 Node 类的 虚函数 void update(float delta)
  37. this->scheduleUpdate();
  38.  
  39. // 注册一个 固定时间调用的事件 可以指定 间隔时间 (注意调用的方式与普通的
  40. // Callback 不同 : schedule_selector(DragLabel::downLabel) , 方法要写类名
  41. this->schedule(schedule_selector(DragLabel::downLabel), 1.0f);
  42.  
  43. return true;
  44. }
  45.  
  46. // FixedUpdate CallBack Function
  47. void downLabel(float delta) {
  48. lbl->setPositionY(lbl->getPositionY() - );
  49. }
  50.  
  51. // Update Function
  52. virtual void update(float delta) {
  53. lbl->setPositionX(lbl->getPositionX() + 60.0 / );
  54. }
  55.  
  56. // Events
  57. virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event) {
  58. if (touches.size() == ) {
  59. Object* tmp = NULL;
  60. Point p = touches[]->getLocation();
  61. CCARRAY_FOREACH(this->getChildren(), tmp) {
  62. Node* node = (Node*)tmp;
  63. if (node->getBoundingBox().containsPoint(p)) {
  64. pickNode = node;
  65. delta = p - node->getPosition();
  66. break;
  67. }
  68. }
  69. }
  70. }
  71. virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event) {
  72. if (pickNode) {
  73. pickNode->setPosition(touches[]->getLocation() - delta);
  74. }
  75. }
  76. virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event) {
  77. pickNode = nullptr;
  78. }
  79.  
  80. /*这个宏就是帮助我们实现那个 XXX::create() 方法*/
  81. CREATE_FUNC(DragLabel);
  82. };
  83.  
  84. #endif

cocos2d-x 3.0 学习笔记: 一个可以拖拽的Label及schedule的应用的更多相关文章

  1. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  2. dhtmlxgrid v3.0学习笔记

    dhtmlxgrid v3.0学习笔记 分类: dhtmlx JavaScript2012-01-31 15:41 1744人阅读 评论(0) 收藏 举报 stylesheetdatecalendar ...

  3. OAuth 2.0学习笔记

    文章目录 OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动. OAuth在"客户端&quo ...

  4. 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

    不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...

  5. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. hdcms v5.7.0学习笔记

    hdcms v5.7.0学习笔记 https://note.youdao.com/ynoteshare1/index.html?id=c404d63ac910eb15a440452f73d6a6db& ...

  8. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  9. DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...

随机推荐

  1. 打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法

    If you installed CRM 4.0 on box where you also have SQL and used a domain account as service account ...

  2. struts中指定编码(使用Filter后仍然乱码)

    https://www.cnblogs.com/oldinaction/p/5167481.html 概述: Tomcat默认是 ISO编码,不支持中文.尝试过自己写 Filter,在web.xml中 ...

  3. SQL 将非标准日期格式转换成标准格式,进行条件判断

    a.JLDate为非标准日期格式: 例: 2011-8-28 0:00:000011-8-28 0:00:000111-8-4 0:00:00 select CONVERT(varchar(50),C ...

  4. Guid 几种格式化

    //32 位数字:00000000000000000000000000000000 Console.WriteLine(Guid.NewGuid().ToString("N")); ...

  5. DHTMLX学习总结

    1.布局 Lyout = new dhtmlXLayoutObject(document.body, "2U"); 2.Grid grid.setHeader("#mas ...

  6. [模板] KMP字符串匹配标准代码

    之前借鉴了某个模板的代码.我个人认为这份代码写得很好.值得一背. #include<bits/stdc++.h> using namespace std; const int N=1000 ...

  7. python 可视化 二维坐标标注等等

     基本画图操作: import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3,3,50) y1 = 2*x+1 y2 = ...

  8. class<T>和 class<?>类型 有什么区别

    平时看java源代码的时候,如果碰到泛型的话,我想? T K V E这些是经常出现的,但是有时想不起来代表什么意思,今天整理下: ? 表示不确定的java类型. T 表示java类型. K V 分别代 ...

  9. [UE4]场景光照改进PostProcessVolume

    PostProcessVolume可以做的效果很多,其中就可以实现太阳光斑效果. Unbound勾上上,就表示不受“PostProcessVolume”组件的大小限制,直接应用到整个世界.如果不勾选, ...

  10. Android RILD运行机制详解

    前言 在上一篇文章里(http://blog.csdn.net/jason_wzn/article/details/53232022),简要介绍了Android RIL的架构.这一篇文章,就来看一看R ...