bool HelloWorld::init()

{

if ( !Layer::init() )

{

return false;

}

Size visibleSize = Director::getInstance()->getVisibleSize();

Vec2 origin = Director::getInstance()->getVisibleOrigin();

buildUI();

addListeners();

return true;

}

void HelloWorld::buildUI(){

aTF=TextFieldTTF::textFieldWithPlaceHolder("Value","Courier",16);

aTF->setPosition(100,300);

addChild(aTF);

auto addLabel=Label::create();

addLabel->setString("+");

addChild(addLabel);

addLabel->setPosition(aTF->getPositionX()+50,aTF->getPositionY());

bTF=TextFieldTTF::textFieldWithPlaceHolder("Value","Courier",16);

bTF->setPosition(addLabel->getPositionX()+50,aTF->getPositionY());

addChild(bTF);

auto equalLabel=Label::create();

equalLabel->setString("=");

addChild(equalLabel);

equalLabel->setPosition(bTF->getPositionX()+50,aTF->getPositionY());

resultLabel=Label::create();

addChild(resultLabel);

resultLabel->setPosition(equalLabel->getPositionX()+50,aTF->getPositionY());

addBtn=Label::create();

addBtn->setString("Add");

addBtn->setSystemFontSize(16);

addChild(addBtn);

addBtn->setPosition(aTF->getPositionX(),aTF->getPositionY()-50);

}

void HelloWorld::addListeners(){

auto director=Director::getInstance();

auto handler=[=](Touch *t,Event *e){

auto target=e->getCurrentTarget();

if (target->getBoundingBox().containsPoint(t->getLocation())) {

if (aTF==target) {

aTF->attachWithIME();

}else if(bTF==target){

bTF->attachWithIME();

}else if (target==addBtn){

int a=__String::create(aTF->getString())->intValue();

int b=__String::create(bTF->getString())->intValue();

resultLabel->setString(StringUtils::format("%d",a+b));

}

}

return false;

};

auto addListenerToTarget=[director,handler](Node *target){

auto l=EventListenerTouchOneByOne::create();

l->onTouchBegan=handler;

director->getEventDispatcher()->addEventListenerWithSceneGraphPriority(l,target);

};

addListenerToTarget(addBtn);

addListenerToTarget(aTF);

addListenerToTarget(bTF);

//    auto addListener=EventListenerTouchOneByOne::create();

//    addListener->onTouchBegan=handler;

//    director->getEventDispatcher()->addEventListenerWithSceneGraphPriority(addListener,addBtn);

//

//    auto aTfClickListener=EventListenerTouchOneByOne::create();

//    aTfClickListener->onTouchBegan=handler;

//    director->getEventDispatcher()->addEventListenerWithSceneGraphPriority(aTfClickListener,aTF);

//

//    auto bTfClickListener=EventListenerTouchOneByOne::create();

//    bTfClickListener->onTouchBegan=handler;

//    director->getEventDispatcher()->addEventListenerWithSceneGraphPriority(bTfClickListener,bTF);

}

cocos2d-x之加法计算器的更多相关文章

  1. iOS学习——制作一个小型加法计算器

    一.项目要求:制作一个加法计算器.在第1个和第2个文本框中输入两个整数,然后点击“计算”按钮,可将计算结果显示在第3个文本框中. 二.开发步骤: 1.搭建UI界面 2.监听按钮的点击事件 3.获取文本 ...

  2. objective-c 一个链式加法计算器实现

    一个链式加法计算器实现思路 1.使用时的效果 Calculate * manger=[Calculate new]; int result=manger.add(123).add(123).sub(1 ...

  3. Qt简单项目--加法计算器(详细代码注释)

    Qt的简单案例--加法计算器(详细代码注释) 一.项目结构 二.项目代码 widget.h #ifndef WIDGET_H #define WIDGET_H //预编译指令, 为了避免头文件被重复包 ...

  4. Java项目案例之---加法计算器(转发和重定向)

    加法计算器(转发和重定向) 运行显示: 转发 重定向 代码: index.jsp <%-- Created by IntelliJ IDEA. User: Administrator Date: ...

  5. AJ学IOS(01) UI之Hello World与加法计算器

    不多说,AJ分享,必须精品 这两个一个是HelloWorld(左边) 另一个是 加法计算器(右边)的截图. 先运行第一个 程序看看效果 1.打开Xcode(没有哦mac系统的没有xcode的帮你们默哀 ...

  6. 单片机课程设计-四位加法计算器设计参考程序(c语言)

    #include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^; sbit ...

  7. 单片机课程设计——课程设计之四位加法计算器(2)(C代码)

    #include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^5; sbit ...

  8. iOS UI基础-1.0加法计算器

    1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...

  9. Java-简单的计算器(只能进行加法运算)

    有两个关键的地方: 其一: JTextField field=new JTextField(10); 这是一个文本输入框,里面的参数10的意思是,这个输入框的长度为10列 其二:点击求和按钮,出结果 ...

随机推荐

  1. 【Beta阶段】团队源代码管理

    0. 快速上手与理解 如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出来,并运行必要的 ...

  2. linq之let子句

    在Linq查询中Let子句可以创建一个新的范围变量,并使用该变量保存表达式的结果. 看下面的例子: private void LetQuery() { List<UserBaseInfo> ...

  3. Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载

    在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...

  4. Identity标识列

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. 示例一 :当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数 ...

  5. ASP.NET使用UpdatePanel实现AJAX

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...

  6. Liunx目录结构

    /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件. /dev :dev是Device ...

  7. C++ 面向对象的三个特点--多态性(一)

    C++的多态性定义 所谓多态性就是不同对象收到相同的消息产生不同的动作.通俗的说,多态性是指一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口 ...

  8. HTML JavaScript的DOM操作

    1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方法: 属性(值或者子对象): op ...

  9. [js开源组件开发]js文本框计数组件

    js文本框计数组件 先上效果图: 样式可以自行调整 ,它的功能提供文本框的实时计数,并作出对应的操作,比如现在超出了,点击下面的按钮后,文本框会闪动两下,阻止提交.具体例子可以点击demo:http: ...

  10. JS中检测数据类型的几种方式及优缺点

    1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...