#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. angularjs 本地数据存储LocalStorage

    1.定义服务 //=========本地存储数据服务============ app.factory('locals', ['$window', function ($window) { return ...

  2. Eclipse设置相同变量背景色高亮显示

    在Eclipse中,鼠标选中或者光标移动到java类的变量名时,相同变量会被标识显示(设置背景色高亮), 并且侧边滚动条会标出变量的位置, 查找变量十分方便. 1.相同变量标识高亮显示: Window ...

  3. 将DataTable 覆盖到 SQL某表(包括表结构及所有数据)

    调用代码: string tableName = "Sheet1"; openFileDlg.ShowDialog(); DataTable dt = GeneralFun.Fil ...

  4. Oracle学习操作(5)触发器

    Oracle触发器 一.触发器简介 具备某些条件,由数据库自动执行的一些DML操作行为: 二.语句触发器 现在数据库创建t_book表:t_booktype表:t_book表的typeid存在外键参考 ...

  5. python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  6. Oracle中分页查询和联表查询

    1.使用ROWNUM伪列查询 1.1.查询十条数据(rownum<=n) SELECT ROWNUM,A.* FROM v_sjjx_unit_info A WHERE ROWNUM<=1 ...

  7. Spark 分布式SQL引擎

    SparkSQL作为分布式查询引擎:两种方式 SparkSQL作为分布式查询引擎:Thrift JDBC/ODBC服务 SparkSQL作为分布式查询引擎:Thrift JDBC/ODBC服务 Spa ...

  8. MIT提出精细到头发丝的语义分割技术,打造效果惊艳的特效电影

    来自 MIT CSAIL 的研究人员开发了一种精细程度远超传统语义分割方法的「语义软分割」技术,连头发都能清晰地在分割掩码中呈现.在对比实验中,他们的结果远远优于 PSPNet.Mask R-CNN. ...

  9. webpack(3)--Output

    Output output配置如何输出最终想要的代码,output是一个object里面包含一系列配置. 1. filename output.filename配置输出文件的名称,为string类型, ...

  10. time,sys,os 模块

    import time# 时间戳时间,格林威治时间,float数据类型 给机器用的 # 英国伦敦的时间 1970.1.1 0:0:0 # 北京时间 1970.1.1 8:0:0 # 153369312 ...