#ifndef _DRAGLABEL_H_
#define _DRAGLABEL_H_ #include "cocos2d.h"
USING_NS_CC; class DragLabel : public Layer {
private:
Node* pickNode = NULL;
Point delta;
LabelTTF * lbl;
public:
/*得到 Scene 的静态方法,在AppDelegate类中需要使用*/
static Scene* getScene() {
auto sc = Scene::create();
sc->addChild(DragLabel::create());
return sc;
} /*实现init方法,并在一开始需要先调用父类 Layer 的init方法初始化父类*/
virtual bool init() {
if (!Layer::init()) {
return false;
}
// 得到窗口的大小
auto size = Director::getInstance()->getWinSize();
// Label
lbl = LabelTTF::create("I am a Label", "Arial", );
lbl->setPosition(Point(size.width / , size.height - )); this->addChild(lbl, , ); // 注册 触摸事件
this->setTouchEnabled(true); // 注册 Update 事件 : 需要实现 Node 类的 虚函数 void update(float delta)
this->scheduleUpdate(); // 注册一个 固定时间调用的事件 可以指定 间隔时间 (注意调用的方式与普通的
// Callback 不同 : schedule_selector(DragLabel::downLabel) , 方法要写类名
this->schedule(schedule_selector(DragLabel::downLabel), 1.0f); return true;
} // FixedUpdate CallBack Function
void downLabel(float delta) {
lbl->setPositionY(lbl->getPositionY() - );
} // Update Function
virtual void update(float delta) {
lbl->setPositionX(lbl->getPositionX() + 60.0 / );
} // Events
virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event) {
if (touches.size() == ) {
Object* tmp = NULL;
Point p = touches[]->getLocation();
CCARRAY_FOREACH(this->getChildren(), tmp) {
Node* node = (Node*)tmp;
if (node->getBoundingBox().containsPoint(p)) {
pickNode = node;
delta = p - node->getPosition();
break;
}
}
}
}
virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event) {
if (pickNode) {
pickNode->setPosition(touches[]->getLocation() - delta);
}
}
virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event) {
pickNode = nullptr;
} /*这个宏就是帮助我们实现那个 XXX::create() 方法*/
CREATE_FUNC(DragLabel);
}; #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. 完美解决IE9浏览器出现的对象未定义问题

    目前Window7的机器上,使用IE9浏览器的用户很多,但是IE9在兼容性上做了较严格的控制,导致很多程序在chrome,firefox,ie6,ie7,ie8上可以正常运行,在ie9上确出现了各种问 ...

  2. Jenkins进阶-远程构建任务(4)

    开发过程中提交代码以后,如何不登录Jenkins就自动触发jenkins 任务来发布软件版本. 1.首先我们创建一个Jenkins任务. 2.选择"构建触发器"->勾选&qu ...

  3. 什么是Asp.net Core?和 .net core有什么区别?(转)

    什么是Asp.Net core 我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解.微软在推出来.net core的同时为了方便一些原有的项目可 ...

  4. POJ1325机器重启次数——二分图匈牙利算法模板

    题目:http://poj.org/problem?id=1325 求最小点覆盖.输出最大匹配数就行,结果略复杂地弄了. 注意由题可知 可以直接把与0有关的边删掉.不过亲测不删0而计数时不计0就会WA ...

  5. Angular 4 http通讯 解决服务器参数无法接收问题

    1.导入 import { Component, OnInit } from '@angular/core'; import {Observable} from 'rxjs/Observable'; ...

  6. Microsoft Dynamics CRM 2011 Plugin中PluginExecutionContext.InputParameters["Target"]中的Target是从哪来的?

    图 1 如图1,CRM编程是一个请求响应模型,任何操作都是通过一个Request发起,一个Response返回结果,这个模型简单实用.所有请求类都是继承OrganizationRequest,所有响应 ...

  7. python中的with

    看例 """ 需求:不用数据库连接池,实现数据库链接操作 """ class SQLHelper(object): def open(sel ...

  8. java学习之路之javaSE基础3

    所有代码都未经测试.. 1:for循环的格式? for循环格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } 执行流程: * a:执行初始化语句 * b:执行判断条件语句 ...

  9. Hadoop文件系统支持释疑之S3

    一.引言 Hadoop版本提供了对多种文件系统的支持,但是这些文件系统是以何种方式实现的,其实现原理是什么以前并没有深究过.今天正好有人咨询我这个问题:Hadoop对S3的支持原理是什么?特此总结一下 ...

  10. POJ 1679 The Unique MST (次小生成树kruskal算法)

    The Unique MST 时间限制: 10 Sec  内存限制: 128 MB提交: 25  解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...