学了几天Cocos2d-X后今天终于可以试试Cocos2d-X的跨平台开发了,由于条件的限制,我只会测试Cocos2d-X在Android平台上的开发,今天就以一个简单的文本测试Android上的效果,需要用到CCTextFieldTTF类,CCTextFieldTTF是一个显示文本控件的类用于输入文本和现实文本类似于Windows编程中的Static控件和Edit控件


程序实例:使用TextFieldTTF类创建一个文本,触摸文本弹出软键盘,并且可以通过软键盘向TextFieldTTF中输入文字

首先创建一个TextFieldTTF.h的头文件,在头文件中添加下面的代码

#ifndef __TextFieldTTF_H__
#define __TextFieldTTF_H__

#include "cocos2d.h"
USING_NS_CC;

class TextFieldTTF : public cclayer
{
public:
     bool init();  

    static CCScene* scene();

    //用于处理触摸事件
    bool ccTouchBegan(CCTouch*,CCEvent*);

    //用于在程序中创建一个文本控件
    CCTextFieldTTF* textEdit;

    CREATE_FUNC(TextFieldTTF);
};

#endif // __HELLOWORLD_SCENE_H__


然后在TextFieldTTF.cpp中添加下面的代码

#include "TextFieldTTF.h"

CCScene* TextFieldTTF::scene()
{
    CCScene* scene = CCScene::create();
    
    TextFieldTTF* layer = TextFieldTTF::create();

    scene->addChild(layer);

    return scene;
}


bool TextFieldTTF::init()
{
    //初始化父类层
    cclayer::init();

    //得到窗口的尺寸
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    //创建文本框
    //第一个参数:文本框中显示的内容
    //第二个参数:字体
    //第三个参数:文本的大小
    textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:","Arial",36);

    //设置文本框的位置
    textEdit->setPosition(ccp(winSize.width / 2,winSize.height / 2));

    //添加文本框到层上
    addChild(textEdit);

    //当触摸到控件的时候弹出软键盘
    setTouchMode(kCCtouchesOneByOne);
    setTouchEnabled(true);

    return true;
}

bool TextFieldTTF::ccTouchBegan(CCTouch* touch,CCEvent* ev)
{
    //用于判断是否点中了控件
    bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());

    //如果点中了控件
    if(isClicked)
    {
        //弹出软键盘
        textEdit->attachWithIME();
    }

    //表示接受触摸消息
    return true;
}

程序执行结果:


在Windows下单击“Please input your name: ”会没有反应,因为Windows下没有软键盘


程序移值到Android下的执行结果:


触摸“Please input your name :”后弹出软键盘


使用软键盘输入一段文字后:


选择完成后文字显示在控件上


程序实例:TextFieldTTF实现输入密码

将TextFieldTTF.cpp文件中的代码改成下面的代码

#include "TextFieldTTF.h"

CCScene* TextFieldTTF::scene()
{
    CCScene* scene = CCScene::create();
    
    TextFieldTTF* layer = TextFieldTTF::create();

    scene->addChild(layer);

    return scene;
}


bool TextFieldTTF::init()
{
    //初始化父类层
    cclayer::init();

    //得到窗口的尺寸
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    //创建文本框
    textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:",winSize.height / 2));

    //添加文本框到层上
    addChild(textEdit);

    //输入密码
    textEdit->setSecureTextEntry(true);

    //注册触摸函数,实现当触摸到控件的时候,弹出软键盘
    setTouchMode(kCCtouchesOneByOne);
    setTouchEnabled(true);

    return true;
   
}

bool TextFieldTTF::ccTouchBegan(CCTouch* touch,CCEvent* ev)
{
    //用于判断是否点中了控件
    bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());

    //如果点中了控件
    if(isClicked)
    {
        //弹出软键盘
        textEdit->attachWithIME();
    }

    //表示接受触摸消息
    return true;
}


程序移值到Android下的执行结果:程序移值到Android下的执行结果:


触摸“Please input your name :”后弹出软键盘



通过软键盘输入一段字符


选择完成后字符以密码的形式显示在控件上


程序实例:使用九位图美化控件

在工程目录下的Resource文件夹中放一张九位图


将TextFieldTTF.cpp文件中的代码改成下面的代码

#include "TextFieldTTF.h"

CCScene* TextFieldTTF::scene()
{
    CCScene* scene = CCScene::create();
    
    TextFieldTTF* layer = TextFieldTTF::create();

    scene->addChild(layer);

    return scene;
}


bool TextFieldTTF::init()
{
    //初始化父类层
    cclayer::init();

    //得到窗口的尺寸
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    //创建文本框
    textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:",winSize.height / 2));

    //添加文本框到层上
    addChild(textEdit);

    
    //给控件增加背景(添加一张九位图)
    CCScale9Sprite* bg = CCScale9Sprite::create("green_edit.png");
    
    //将九位图添加到控件上
    textEdit->addChild(bg);

    //设置描点的位置
    bg->setAnchorPoint(ccp(0,0));

    //设置九位图的位置
    bg->setPosition(ccp(0,0));

    //将九位图的尺寸设置成控件的尺寸一样大
    bg->setContentSize(textEdit->boundingBox().size);

    //先显示九位图后显示控件
    bg->setZOrder(-1);

    //注册触摸函数,实现当触摸到控件的时候,弹出软键盘
    setTouchMode(kCCtouchesOneByOne);
    setTouchEnabled(true);

    return true;
   
}

bool TextFieldTTF::ccTouchBegan(CCTouch* touch,CCEvent* ev)
{
    //用于判断是否点中了控件
    bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());

    //如果点中了控件
    if(isClicked)
    {
        //弹出软键盘
        textEdit->attachWithIME();
    }

    //表示接受触摸消息
    return true;
}

程序移值到Android下的执行结果:


触摸“Please input your name :”后弹出软键盘


使用软键盘输入一段文字


选择完成后文字显示在控件上




Cocos2d-X中使用CCTextFieldTTF的简单应用显示文本和弹出软键盘的更多相关文章

  1. 使用placeholder属性设置input文本框的提示信息

    这篇文章主要介绍了使用placeholder属性设置input文本框的提示信息,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios7 – WebView:IFRAME中的文本框停止接受输入

    的test.html:input.html:点按文本框内部并尝试输入.一切正常.现在点击文本框外部,然后再次点击内部,或者隐藏并显示虚拟键盘.现在打字不再起作用了.有没有人见过这个?id=133044中很难找到但已知的错误

  3. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  4. Swift UI专项训练2 本地化及自动布局

    首先我们新建一个工程,然后来做本地化,本地化就是根据用户设置的语言等等信息来显示。那么如何来设置呢,打开我们的工程,点开SupportingFiles中的Info.plist。现在我们来编辑第一个页面。在storyboard中增加一个文本框。自动布局就是我的文本框根据设备尺寸自动调整,专业术语叫约束,如何对文本框进行约束?

  5. Swift开发教程--UITextField输入框如何隐藏软键盘

    对于UITextField如何隐藏输入框,一直是初学者常遇到的问题。在View试图中,点击选中UITextField控件,为其添加DidEndOnExit实践。在弹出软键盘之后,点击return就可以隐藏软键盘了。

  6. [Swift]UIKit学习之UITextField的用法

    UIKit学习之UITextField的用法UITextField的创建:在Stroyboard中使用Ctrl+Drag拖拽法创建代码创建参考资料:

  7. Swift - 文本输入框UITextField的用法

    1,文本框的创建,有如下几个样式:UITextBorderStyle.None:无边框UITextBorderStyle.Line:直线边框UITextBorderStyle.RoundedRect:圆角矩形边框UITextBorderStyle.Bezel:边线+阴影1234lettextField=UITextField(frame:CGRectMake(10,160,200,30))//设置

  8. Swift - 点击输入框外部屏幕关闭虚拟键盘

    我们如果把文本框的ReturnKey设置成Done,然后在storyboard中将文本框的DidEndOnExit事件在代码里进行关联。如果要实现当用户点击文本框之外的舞台屏幕时也能关闭虚拟键盘。这时就要让屏幕的背景响应TouchDown事件。由于背景是UIView控件,不能直接拖拽关联Touch事件。点击右上角的Showtheidentityinspector图标,设置CustomClass的Class为UIControl就可以事件关联了。

  9. Swift - 文本输入框内容改变时响应,并获取最新内容

    同时在viewDidLoad方法内将文本框的代理设置为当前实例。然后实现textFile的shouldChangeCharactersInRange方法就能在文本框将要变化的时候执行一些代码。比如在这个方法内打印出文本框的内容,会发现每当我们改变文本框的内容时,打印出来的是上一次的内容。再输入2,文本框上是12,但打印出来却是1.要获取最新内容,则需要String的stringByReplacingCharactersInRange方法,但这个方法在Swift的String中又不支持。

  10. 早期Swift中Cocos2D初始化代码的重构

    但是遗憾的是Swift2.2中还是不支持Type的class属性关键字,只能用static,我们期待Swift3的改进吧!

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部