mirror of https://github.com/axmolengine/axmol.git
Merge pull request #7762 from andyque/addAlignmentToUILabel
add UITextField color & place hold color, fix double delete bug
This commit is contained in:
commit
0b86e129b0
|
@ -259,7 +259,9 @@ const std::string& TextFieldTTF::getContentText()
|
|||
void TextFieldTTF::setTextColor(const Color4B &color)
|
||||
{
|
||||
_colorText = color;
|
||||
Label::setTextColor(_colorText);
|
||||
if (_inputText.length() > 0) {
|
||||
Label::setTextColor(_colorText);
|
||||
}
|
||||
}
|
||||
|
||||
void TextFieldTTF::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags)
|
||||
|
@ -282,11 +284,18 @@ void TextFieldTTF::setColorSpaceHolder(const Color3B& color)
|
|||
_colorSpaceHolder.g = color.g;
|
||||
_colorSpaceHolder.b = color.b;
|
||||
_colorSpaceHolder.a = 255;
|
||||
if (0 == _inputText.length())
|
||||
{
|
||||
Label::setTextColor(_colorSpaceHolder);
|
||||
}
|
||||
}
|
||||
|
||||
void TextFieldTTF::setColorSpaceHolder(const Color4B& color)
|
||||
{
|
||||
_colorSpaceHolder = color;
|
||||
if (0 == _inputText.length()) {
|
||||
Label::setTextColor(_colorSpaceHolder);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
@ -321,7 +330,7 @@ void TextFieldTTF::setString(const std::string &text)
|
|||
}
|
||||
|
||||
// if there is no input text, display placeholder instead
|
||||
if (! _inputText.length())
|
||||
if (0 == _inputText.length())
|
||||
{
|
||||
Label::setTextColor(_colorSpaceHolder);
|
||||
Label::setString(_placeHolder);
|
||||
|
@ -343,7 +352,7 @@ const std::string& TextFieldTTF::getString() const
|
|||
void TextFieldTTF::setPlaceHolder(const std::string& text)
|
||||
{
|
||||
_placeHolder = text;
|
||||
if (! _inputText.length())
|
||||
if (0 == _inputText.length())
|
||||
{
|
||||
Label::setTextColor(_colorSpaceHolder);
|
||||
Label::setString(_placeHolder);
|
||||
|
|
|
@ -647,9 +647,6 @@ void GLViewImpl::onGLFWKeyCallback(GLFWwindow *window, int key, int scancode, in
|
|||
EventKeyboard event(g_keyCodeMap[key], GLFW_PRESS == action);
|
||||
auto dispatcher = Director::getInstance()->getEventDispatcher();
|
||||
dispatcher->dispatchEvent(&event);
|
||||
if (key == GLFW_KEY_BACKSPACE && action == GLFW_PRESS) {
|
||||
IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
|
||||
}
|
||||
}
|
||||
if (GLFW_RELEASE != action && g_keyCodeMap[key] == EventKeyboard::KeyCode::KEY_BACKSPACE)
|
||||
{
|
||||
|
|
|
@ -446,6 +446,26 @@ const std::string& TextField::getPlaceHolder()const
|
|||
return _textFieldRenderer->getPlaceHolder();
|
||||
}
|
||||
|
||||
const Color4B& TextField::getPlaceHolderColor()const
|
||||
{
|
||||
return _textFieldRenderer->getColorSpaceHolder();
|
||||
}
|
||||
|
||||
void TextField::setPlaceHolderColor(const cocos2d::Color3B &color)
|
||||
{
|
||||
_textFieldRenderer->setColorSpaceHolder(color);
|
||||
}
|
||||
|
||||
void TextField::setPlaceHolderColor(const cocos2d::Color4B &color)
|
||||
{
|
||||
_textFieldRenderer->setColorSpaceHolder(color);
|
||||
}
|
||||
|
||||
void TextField::setTextColor(const cocos2d::Color4B &textColor)
|
||||
{
|
||||
_textFieldRenderer->setTextColor(textColor);
|
||||
}
|
||||
|
||||
void TextField::setFontSize(int size)
|
||||
{
|
||||
if (_fontType == FontType::SYSTEM) {
|
||||
|
|
|
@ -135,6 +135,10 @@ public:
|
|||
|
||||
void setPlaceHolder(const std::string& value);
|
||||
const std::string& getPlaceHolder()const;
|
||||
const Color4B& getPlaceHolderColor()const;
|
||||
void setPlaceHolderColor(const Color3B& color);
|
||||
void setPlaceHolderColor(const Color4B& color);
|
||||
void setTextColor(const Color4B& textColor);
|
||||
|
||||
void setFontSize(int size);
|
||||
int getFontSize()const;
|
||||
|
|
|
@ -159,7 +159,7 @@ g_guisTests[] =
|
|||
UISceneManager* sceneManager = UISceneManager::sharedUISceneManager();
|
||||
sceneManager->setCurrentUISceneId(kUITextFieldTest);
|
||||
sceneManager->setMinUISceneId(kUITextFieldTest);
|
||||
sceneManager->setMaxUISceneId(kUITextFieldTest_TrueTypeFont);
|
||||
sceneManager->setMaxUISceneId(kUITextFieldTest_PlaceHolderColor);
|
||||
Scene* scene = sceneManager->currentUIScene();
|
||||
Director::getInstance()->replaceScene(scene);
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ static const char* s_testArray[] =
|
|||
"UITextFieldTest_Password",
|
||||
"UITextFieldTest_LineWrap",
|
||||
"UITextFieldTest_TrueTypeFont",
|
||||
"UITextFieldTest_PlaceHolderColor",
|
||||
"UILayoutTest",
|
||||
"UILayoutTest_Color",
|
||||
"UILayoutTest_Gradient",
|
||||
|
@ -241,7 +242,8 @@ Scene *UISceneManager::currentUIScene()
|
|||
return UITextFieldTest_LineWrap::sceneWithTitle(s_testArray[_currentUISceneId]);
|
||||
case kUITextFieldTest_TrueTypeFont:
|
||||
return UITextFieldTest_TrueTypeFont::sceneWithTitle(s_testArray[_currentUISceneId]);
|
||||
|
||||
case kUITextFieldTest_PlaceHolderColor:
|
||||
return UITextFieldTest_PlaceHolderColor::sceneWithTitle(s_testArray[_currentUISceneId]);
|
||||
case kUILayoutTest:
|
||||
return UILayoutTest::sceneWithTitle(s_testArray[_currentUISceneId]);
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ enum
|
|||
kUITextFieldTest_Password,
|
||||
kUITextFieldTest_LineWrap,
|
||||
kUITextFieldTest_TrueTypeFont,
|
||||
kUITextFieldTest_PlaceHolderColor,
|
||||
kUILayoutTest,
|
||||
kUILayoutTest_Color,
|
||||
kUILayoutTest_Gradient,
|
||||
|
|
|
@ -407,3 +407,80 @@ void UITextFieldTest_TrueTypeFont::textFieldEvent(Ref *pSender, TextField::Event
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// UITextFieldTest_PlaceHolderColor
|
||||
UITextFieldTest_PlaceHolderColor::UITextFieldTest_PlaceHolderColor()
|
||||
: _displayValueLabel(nullptr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
UITextFieldTest_PlaceHolderColor::~UITextFieldTest_PlaceHolderColor()
|
||||
{
|
||||
}
|
||||
|
||||
bool UITextFieldTest_PlaceHolderColor::init()
|
||||
{
|
||||
if (UIScene::init())
|
||||
{
|
||||
Size widgetSize = _widget->getContentSize();
|
||||
|
||||
// Add a label in which the textfield events will be displayed
|
||||
_displayValueLabel = Text::create("Set place hold color","fonts/Marker Felt.ttf",32);
|
||||
_displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
|
||||
_displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
|
||||
_uiLayer->addChild(_displayValueLabel);
|
||||
|
||||
// Add the alert
|
||||
Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30);
|
||||
alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
|
||||
_uiLayer->addChild(alert);
|
||||
|
||||
// Create the textfield
|
||||
TextField* textField = TextField::create("input words here","Arial",30);
|
||||
textField->setPlaceHolder("input text here");
|
||||
textField->setPlaceHolderColor(Color4B::GREEN);
|
||||
textField->setTextColor(Color4B::RED);
|
||||
textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
|
||||
textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_PlaceHolderColor::textFieldEvent, this));
|
||||
_uiLayer->addChild(textField);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void UITextFieldTest_PlaceHolderColor::textFieldEvent(Ref *pSender, TextField::EventType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TextField::EventType::ATTACH_WITH_IME:
|
||||
{
|
||||
TextField* textField = dynamic_cast<TextField*>(pSender);
|
||||
Size screenSize = CCDirector::getInstance()->getWinSize();
|
||||
textField->runAction(CCMoveTo::create(0.225f,
|
||||
Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
|
||||
_displayValueLabel->setString(String::createWithFormat("attach with IME")->getCString());
|
||||
}
|
||||
break;
|
||||
|
||||
case TextField::EventType::DETACH_WITH_IME:
|
||||
{
|
||||
TextField* textField = dynamic_cast<TextField*>(pSender);
|
||||
Size screenSize = CCDirector::getInstance()->getWinSize();
|
||||
textField->runAction(CCMoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
|
||||
_displayValueLabel->setString(String::createWithFormat("detach with IME")->getCString());
|
||||
}
|
||||
break;
|
||||
|
||||
case TextField::EventType::INSERT_TEXT:
|
||||
_displayValueLabel->setString(String::createWithFormat("insert words")->getCString());
|
||||
break;
|
||||
|
||||
case TextField::EventType::DELETE_BACKWARD:
|
||||
_displayValueLabel->setString(String::createWithFormat("delete word")->getCString());
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,4 +91,17 @@ protected:
|
|||
UI_SCENE_CREATE_FUNC(UITextFieldTest_TrueTypeFont)
|
||||
Text* _displayValueLabel;
|
||||
};
|
||||
|
||||
class UITextFieldTest_PlaceHolderColor : public UIScene
|
||||
{
|
||||
public:
|
||||
UITextFieldTest_PlaceHolderColor();
|
||||
~UITextFieldTest_PlaceHolderColor();
|
||||
bool init();
|
||||
void textFieldEvent(Ref* pSender, TextField::EventType type);
|
||||
|
||||
protected:
|
||||
UI_SCENE_CREATE_FUNC(UITextFieldTest_PlaceHolderColor)
|
||||
Text* _displayValueLabel;
|
||||
};
|
||||
#endif /* defined(__TestCpp__UITextFieldTest__) */
|
||||
|
|
Loading…
Reference in New Issue