#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. 消息中间件 ActiveMQ的简单使用

    一.AactiveMQ的下载和安装 1. 下载ActiveMQ 地址:http://activemq.apache.org/activemq-5152-release.html 我这里下载的是wind ...

  2. Telnet 工具远程连接服务器

    1.启动tomcat 2. 使用telnet命令  打开CMD,输入telnet  localhost 8080 3.显示如下界面,说明已经连接成功 4. 复制如下代码到连接成功的界面 HEAD / ...

  3. Servlet是单例的吗?

    如题,是吗?首先我们得搞清楚啥是单例.一聊起单例,条件反射的第一个想到的自然是单例模式.单例模式的定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供.如果按照Java中单例的定义,那么当Ser ...

  4. JZ2440 裸机驱动 第13章 LCD控制器(2)

    13.2 TFT LCD显示实例 13.2.1 程序设计     本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线. 画圆.显示单色.使用调色板等. 13.2.2代码详解     ...

  5. select选中事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. REDHAT中的iptable设置(nginx或者apache80端口访问不了解决)转 亲测

    来自:http://johnnychenjun.blog.163.com/blog/static/137493406201010284598972/ 查看当前防火墙里的状态:#/etc/init.d/ ...

  7. golang web框架 beego 学习 (一) 环境搭建

    下面的命令我都是在$GOPATH的路径下执行的: 1. 首先下载beego框架: go get github.com/astaxie/beego (注意:运行上面命令时没有反应,需要在etc/host ...

  8. 手贱,写个call玩玩.

    今天在睡觉醒时,突然感觉对call和apply有了点理解,但是又不好表达出来.就随便写几个例子. function say() { return this.role; } function Fathe ...

  9. IDEA编译Flume Sink通不过解决方法

    Build/Rebuild Project之后

  10. extends和implements区别

    extends与implements的不同 1.在类的声明中,通过关键字extends来创建一个类的子类. 一个类通过关键字implements声明自己使用一个或者多个接口. extends 是继承某 ...