mirror of https://github.com/axmolengine/axmol.git
Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into developCCS
This commit is contained in:
commit
c055b1a3d6
|
@ -1 +1 @@
|
||||||
695569fbf5580abb74dbc9b9d9fc7ad8d21db805
|
30ca6c02884f9bc20405b3e657b444c0153bead7
|
|
@ -1 +1 @@
|
||||||
13f41d81e48285159fafa45159fdd1c081b4bb06
|
3ff18018375c71f683a484652678740cc6395eaf
|
|
@ -159,7 +159,7 @@ void ActionNode::initActionNodeFromRoot(Object* root)
|
||||||
UIWidget* rootWidget = dynamic_cast<UIWidget*>(root);
|
UIWidget* rootWidget = dynamic_cast<UIWidget*>(root);
|
||||||
if (rootWidget != NULL)
|
if (rootWidget != NULL)
|
||||||
{
|
{
|
||||||
UIWidget* widget = UIHelper::instance()->seekActionWidgetByActionTag(rootWidget, getActionTag());
|
UIWidget* widget = UIHelper::seekActionWidgetByActionTag(rootWidget, getActionTag());
|
||||||
if (widget != NULL)
|
if (widget != NULL)
|
||||||
{
|
{
|
||||||
setObject(widget);
|
setObject(widget);
|
||||||
|
|
|
@ -152,7 +152,7 @@ UIWidget* CCSGUIReader::widgetFromJsonDictionary(JsonDictionary* data)
|
||||||
}
|
}
|
||||||
else if (classname && strcmp(classname, "Panel") == 0)
|
else if (classname && strcmp(classname, "Panel") == 0)
|
||||||
{
|
{
|
||||||
widget = Layout::create();
|
widget = UILayout::create();
|
||||||
setPropsForPanelFromJsonDictionary(widget, uiOptions);
|
setPropsForPanelFromJsonDictionary(widget, uiOptions);
|
||||||
}
|
}
|
||||||
else if (classname && strcmp(classname, "Slider") == 0)
|
else if (classname && strcmp(classname, "Slider") == 0)
|
||||||
|
@ -162,8 +162,8 @@ UIWidget* CCSGUIReader::widgetFromJsonDictionary(JsonDictionary* data)
|
||||||
}
|
}
|
||||||
else if (classname && strcmp(classname, "ListView") == 0)
|
else if (classname && strcmp(classname, "ListView") == 0)
|
||||||
{
|
{
|
||||||
// widget = UIListView::create();
|
widget = UIListView::create();
|
||||||
// setPropsForListViewFromJsonDictionary(widget, uiOptions);
|
setPropsForListViewFromJsonDictionary(widget, uiOptions);
|
||||||
}
|
}
|
||||||
else if (classname && strcmp(classname, "PageView") == 0)
|
else if (classname && strcmp(classname, "PageView") == 0)
|
||||||
{
|
{
|
||||||
|
@ -177,7 +177,7 @@ UIWidget* CCSGUIReader::widgetFromJsonDictionary(JsonDictionary* data)
|
||||||
}
|
}
|
||||||
else if (classname && strcmp(classname, "DragPanel") == 0)
|
else if (classname && strcmp(classname, "DragPanel") == 0)
|
||||||
{
|
{
|
||||||
widget = UIDragPanel::create();
|
widget = UIScrollView::create();
|
||||||
setPropsForDragPanelFromJsonDictionary(widget, uiOptions);
|
setPropsForDragPanelFromJsonDictionary(widget, uiOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,20 +232,20 @@ UIWidget* CCSGUIReader::widgetFromJsonFile(const char *fileName)
|
||||||
const char* file = DICTOOL->getStringValueFromArray_json(jsonDict, "textures", i);
|
const char* file = DICTOOL->getStringValueFromArray_json(jsonDict, "textures", i);
|
||||||
std::string tp = m_strFilePath;
|
std::string tp = m_strFilePath;
|
||||||
tp.append(file);
|
tp.append(file);
|
||||||
CCUIHELPER->addSpriteFrame(tp.c_str());
|
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(tp.c_str());
|
||||||
}
|
}
|
||||||
float fileDesignWidth = DICTOOL->getFloatValue_json(jsonDict, "designWidth");
|
float fileDesignWidth = DICTOOL->getFloatValue_json(jsonDict, "designWidth");
|
||||||
float fileDesignHeight = DICTOOL->getFloatValue_json(jsonDict, "designHeight");
|
float fileDesignHeight = DICTOOL->getFloatValue_json(jsonDict, "designHeight");
|
||||||
if (fileDesignWidth <= 0 || fileDesignHeight <= 0) {
|
if (fileDesignWidth <= 0 || fileDesignHeight <= 0) {
|
||||||
printf("Read design size error!\n");
|
printf("Read design size error!\n");
|
||||||
Size winSize = Director::getInstance()->getWinSize();
|
Size winSize = Director::getInstance()->getWinSize();
|
||||||
CCUIHELPER->setFileDesignWidth(winSize.width);
|
// CCUIHELPER->setFileDesignWidth(winSize.width);
|
||||||
CCUIHELPER->setFileDesignHeight(winSize.height);
|
// CCUIHELPER->setFileDesignHeight(winSize.height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CCUIHELPER->setFileDesignWidth(fileDesignWidth);
|
// CCUIHELPER->setFileDesignWidth(fileDesignWidth);
|
||||||
CCUIHELPER->setFileDesignHeight(fileDesignHeight);
|
// CCUIHELPER->setFileDesignHeight(fileDesignHeight);
|
||||||
}
|
}
|
||||||
JsonDictionary* widgetTree = DICTOOL->getSubDictionary_json(jsonDict, "widgetTree");
|
JsonDictionary* widgetTree = DICTOOL->getSubDictionary_json(jsonDict, "widgetTree");
|
||||||
UIWidget* widget = widgetFromJsonDictionary(widgetTree);
|
UIWidget* widget = widgetFromJsonDictionary(widgetTree);
|
||||||
|
@ -253,7 +253,7 @@ UIWidget* CCSGUIReader::widgetFromJsonFile(const char *fileName)
|
||||||
/* *********temp********* */
|
/* *********temp********* */
|
||||||
if (widget->getContentSize().equals(Size::ZERO))
|
if (widget->getContentSize().equals(Size::ZERO))
|
||||||
{
|
{
|
||||||
Layout* rootWidget = dynamic_cast<Layout*>(widget);
|
UILayout* rootWidget = dynamic_cast<UILayout*>(widget);
|
||||||
rootWidget->setSize(Size(fileDesignWidth, fileDesignHeight));
|
rootWidget->setSize(Size(fileDesignWidth, fileDesignHeight));
|
||||||
}
|
}
|
||||||
/* ********************** */
|
/* ********************** */
|
||||||
|
@ -792,7 +792,7 @@ void CCSGUIReader::setPropsForLabelFromJsonDictionary(UIWidget*widget,JsonDictio
|
||||||
setPropsForWidgetFromJsonDictionary(widget, options);
|
setPropsForWidgetFromJsonDictionary(widget, options);
|
||||||
UILabel* label = (UILabel*)widget;
|
UILabel* label = (UILabel*)widget;
|
||||||
bool touchScaleChangeAble = DICTOOL->getBooleanValue_json(options, "touchScaleEnable");
|
bool touchScaleChangeAble = DICTOOL->getBooleanValue_json(options, "touchScaleEnable");
|
||||||
label->setTouchScaleChangeAble(touchScaleChangeAble);
|
label->setTouchScaleChangeEnabled(touchScaleChangeAble);
|
||||||
const char* text = DICTOOL->getStringValue_json(options, "text");
|
const char* text = DICTOOL->getStringValue_json(options, "text");
|
||||||
label->setText(text);
|
label->setText(text);
|
||||||
bool fs = DICTOOL->checkObjectExist_json(options, "fontSize");
|
bool fs = DICTOOL->checkObjectExist_json(options, "fontSize");
|
||||||
|
@ -877,10 +877,9 @@ void CCSGUIReader::setPropsForLabelAtlasFromJsonDictionary(UIWidget*widget,JsonD
|
||||||
void CCSGUIReader::setPropsForContainerWidgetFromJsonDictionary(UIWidget *widget, JsonDictionary *options)
|
void CCSGUIReader::setPropsForContainerWidgetFromJsonDictionary(UIWidget *widget, JsonDictionary *options)
|
||||||
{
|
{
|
||||||
setPropsForWidgetFromJsonDictionary(widget, options);
|
setPropsForWidgetFromJsonDictionary(widget, options);
|
||||||
Layout* containerWidget = (Layout*)widget;
|
UILayout* containerWidget = (UILayout*)widget;
|
||||||
if (!dynamic_cast<UIScrollView*>(containerWidget)
|
if (!dynamic_cast<UIScrollView*>(containerWidget)
|
||||||
&& !dynamic_cast<UIListView*>(containerWidget)
|
&& !dynamic_cast<UIListView*>(containerWidget))
|
||||||
&& !dynamic_cast<UIDragPanel*>(containerWidget))
|
|
||||||
{
|
{
|
||||||
containerWidget->setClippingEnabled(DICTOOL->getBooleanValue_json(options, "clipAble"));
|
containerWidget->setClippingEnabled(DICTOOL->getBooleanValue_json(options, "clipAble"));
|
||||||
}
|
}
|
||||||
|
@ -892,7 +891,7 @@ void CCSGUIReader::setPropsForPanelFromJsonDictionary(UIWidget*widget,JsonDictio
|
||||||
if (m_bOlderVersion)
|
if (m_bOlderVersion)
|
||||||
{
|
{
|
||||||
setPropsForContainerWidgetFromJsonDictionary(widget, options);
|
setPropsForContainerWidgetFromJsonDictionary(widget, options);
|
||||||
Layout* panel = (Layout*)widget;
|
UILayout* panel = (UILayout*)widget;
|
||||||
bool backGroundScale9Enable = DICTOOL->getBooleanValue_json(options, "backGroundScale9Enable");
|
bool backGroundScale9Enable = DICTOOL->getBooleanValue_json(options, "backGroundScale9Enable");
|
||||||
panel->setBackGroundImageScale9Enabled(backGroundScale9Enable);
|
panel->setBackGroundImageScale9Enabled(backGroundScale9Enable);
|
||||||
int cr = DICTOOL->getIntValue_json(options, "bgColorR");
|
int cr = DICTOOL->getIntValue_json(options, "bgColorR");
|
||||||
|
@ -959,7 +958,7 @@ void CCSGUIReader::setPropsForPanelFromJsonDictionary(UIWidget*widget,JsonDictio
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setPropsForContainerWidgetFromJsonDictionary(widget, options);
|
setPropsForContainerWidgetFromJsonDictionary(widget, options);
|
||||||
Layout* panel = (Layout*)widget;
|
UILayout* panel = (UILayout*)widget;
|
||||||
bool backGroundScale9Enable = DICTOOL->getBooleanValue_json(options, "backGroundScale9Enable");
|
bool backGroundScale9Enable = DICTOOL->getBooleanValue_json(options, "backGroundScale9Enable");
|
||||||
panel->setBackGroundImageScale9Enabled(backGroundScale9Enable);
|
panel->setBackGroundImageScale9Enabled(backGroundScale9Enable);
|
||||||
int cr = DICTOOL->getIntValue_json(options, "bgColorR");
|
int cr = DICTOOL->getIntValue_json(options, "bgColorR");
|
||||||
|
@ -1394,7 +1393,7 @@ void CCSGUIReader::setPropsForTextFieldFromJsonDictionary(UIWidget*widget,JsonDi
|
||||||
//textField->setSize(CCSizeMake(dw, dh));
|
//textField->setSize(CCSizeMake(dw, dh));
|
||||||
}
|
}
|
||||||
bool maxLengthEnable = DICTOOL->getBooleanValue_json(options, "maxLengthEnable");
|
bool maxLengthEnable = DICTOOL->getBooleanValue_json(options, "maxLengthEnable");
|
||||||
textField->setMaxLengthEnable(maxLengthEnable);
|
textField->setMaxLengthEnabled(maxLengthEnable);
|
||||||
|
|
||||||
if (maxLengthEnable)
|
if (maxLengthEnable)
|
||||||
{
|
{
|
||||||
|
@ -1402,7 +1401,7 @@ void CCSGUIReader::setPropsForTextFieldFromJsonDictionary(UIWidget*widget,JsonDi
|
||||||
textField->setMaxLength(maxLength);
|
textField->setMaxLength(maxLength);
|
||||||
}
|
}
|
||||||
bool passwordEnable = DICTOOL->getBooleanValue_json(options, "passwordEnable");
|
bool passwordEnable = DICTOOL->getBooleanValue_json(options, "passwordEnable");
|
||||||
textField->setPasswordEnable(passwordEnable);
|
textField->setPasswordEnabled(passwordEnable);
|
||||||
if (passwordEnable)
|
if (passwordEnable)
|
||||||
{
|
{
|
||||||
textField->setPasswordStyleText(DICTOOL->getStringValue_json(options, "passwordStyleText"));
|
textField->setPasswordStyleText(DICTOOL->getStringValue_json(options, "passwordStyleText"));
|
||||||
|
@ -1557,10 +1556,10 @@ void CCSGUIReader::setPropsForDragPanelFromJsonDictionary(UIWidget *widget, Json
|
||||||
{
|
{
|
||||||
setPropsForPanelFromJsonDictionary(widget, options);
|
setPropsForPanelFromJsonDictionary(widget, options);
|
||||||
|
|
||||||
UIDragPanel* dragPanel = (UIDragPanel*)widget;
|
UIScrollView* dragPanel = (UIScrollView*)widget;
|
||||||
|
|
||||||
bool bounceEnable = DICTOOL->getBooleanValue_json(options, "bounceEnable");
|
bool bounceEnable = DICTOOL->getBooleanValue_json(options, "bounceEnable");
|
||||||
dragPanel->setBounceEnable(bounceEnable);
|
dragPanel->setBounceEnabled(bounceEnable);
|
||||||
|
|
||||||
float innerWidth = DICTOOL->getFloatValue_json(options, "innerWidth");
|
float innerWidth = DICTOOL->getFloatValue_json(options, "innerWidth");
|
||||||
float innerHeight = DICTOOL->getFloatValue_json(options, "innerHeight");
|
float innerHeight = DICTOOL->getFloatValue_json(options, "innerHeight");
|
||||||
|
|
|
@ -320,8 +320,8 @@ namespace cocostudio {
|
||||||
{
|
{
|
||||||
gui::UILayer *pLayer = gui::UILayer::create();
|
gui::UILayer *pLayer = gui::UILayer::create();
|
||||||
pLayer->scheduleUpdate();
|
pLayer->scheduleUpdate();
|
||||||
UIWidget* widget= gui::UIHelper::instance()->createWidgetFromJsonFile(pPath.c_str());
|
// UIWidget* widget= gui::UIHelper::instance()->createWidgetFromJsonFile(pPath.c_str());
|
||||||
pLayer->addWidget(widget);
|
// pLayer->addWidget(widget);
|
||||||
ComRender *pRender = ComRender::create(pLayer, "GUIComponent");
|
ComRender *pRender = ComRender::create(pLayer, "GUIComponent");
|
||||||
if (pComName != NULL)
|
if (pComName != NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,14 +7,13 @@ LOCAL_MODULE_FILENAME := libgui
|
||||||
|
|
||||||
LOCAL_SRC_FILES := UIRootWidget.cpp \
|
LOCAL_SRC_FILES := UIRootWidget.cpp \
|
||||||
UIWidget.cpp \
|
UIWidget.cpp \
|
||||||
Layout.cpp \
|
UILayout.cpp \
|
||||||
LayoutParameter.cpp \
|
UILayoutParameter.cpp \
|
||||||
UILayoutDefine.cpp \
|
UILayoutDefine.cpp \
|
||||||
CocosGUI.cpp \
|
CocosGUI.cpp \
|
||||||
UIHelper.cpp \
|
UIHelper.cpp \
|
||||||
UIInputManager.cpp \
|
UIInputManager.cpp \
|
||||||
UILayer.cpp \
|
UILayer.cpp \
|
||||||
UIDragPanel.cpp \
|
|
||||||
UIListView.cpp \
|
UIListView.cpp \
|
||||||
UIPageView.cpp \
|
UIPageView.cpp \
|
||||||
UIScrollView.cpp \
|
UIScrollView.cpp \
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
set(GUI_SRC
|
set(GUI_SRC
|
||||||
UIRootWidget.cpp
|
UIRootWidget.cpp
|
||||||
UIWidget.cpp
|
UIWidget.cpp
|
||||||
Layout.cpp
|
UILayout.cpp
|
||||||
LayoutParameter.cpp
|
UILayoutParameter.cpp
|
||||||
UILayoutDefine.cpp
|
UILayoutDefine.cpp
|
||||||
CocosGUI.cpp
|
CocosGUI.cpp
|
||||||
UIHelper.cpp
|
UIHelper.cpp
|
||||||
UIInputManager.cpp
|
UIInputManager.cpp
|
||||||
UILayer.cpp
|
UILayer.cpp
|
||||||
UIDragPanel.cpp
|
|
||||||
UIListView.cpp
|
UIListView.cpp
|
||||||
UIPageView.cpp
|
UIPageView.cpp
|
||||||
UIScrollView.cpp
|
UIScrollView.cpp
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "gui/UIWidget.h"
|
#include "gui/UIWidget.h"
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
#include "gui/UIRootWidget.h"
|
#include "gui/UIRootWidget.h"
|
||||||
#include "gui/UIButton.h"
|
#include "gui/UIButton.h"
|
||||||
#include "gui/UICheckBox.h"
|
#include "gui/UICheckBox.h"
|
||||||
|
@ -36,10 +36,9 @@
|
||||||
#include "gui/UILabelAtlas.h"
|
#include "gui/UILabelAtlas.h"
|
||||||
#include "gui/UILoadingBar.h"
|
#include "gui/UILoadingBar.h"
|
||||||
#include "gui/UIScrollView.h"
|
#include "gui/UIScrollView.h"
|
||||||
|
#include "gui/UIListView.h"
|
||||||
#include "gui/UISlider.h"
|
#include "gui/UISlider.h"
|
||||||
#include "gui/UITextField.h"
|
#include "gui/UITextField.h"
|
||||||
#include "gui/UIListView.h"
|
|
||||||
#include "gui/UIDragPanel.h"
|
|
||||||
#include "gui/UILabelBMFont.h"
|
#include "gui/UILabelBMFont.h"
|
||||||
#include "gui/UIPageView.h"
|
#include "gui/UIPageView.h"
|
||||||
#include "gui/UIHelper.h"
|
#include "gui/UIHelper.h"
|
||||||
|
|
|
@ -1,785 +0,0 @@
|
||||||
/****************************************************************************
|
|
||||||
Copyright (c) 2013 cocos2d-x.org
|
|
||||||
|
|
||||||
http://www.cocos2d-x.org
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "gui/Layout.h"
|
|
||||||
#include "gui/UILayer.h"
|
|
||||||
#include "gui/UIHelper.h"
|
|
||||||
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocos2d::extension;
|
|
||||||
|
|
||||||
namespace gui {
|
|
||||||
|
|
||||||
#define DYNAMIC_CAST_CLIPPINGLAYER dynamic_cast<RectClippingNode*>(_renderer)
|
|
||||||
|
|
||||||
Layout::Layout():
|
|
||||||
_clippingEnabled(false),
|
|
||||||
_backGroundScale9Enabled(false),
|
|
||||||
_backGroundImage(NULL),
|
|
||||||
_backGroundImageFileName(""),
|
|
||||||
_backGroundImageCapInsets(Rect::ZERO),
|
|
||||||
_colorType(LAYOUT_COLOR_NONE),
|
|
||||||
_bgImageTexType(UI_TEX_TYPE_LOCAL),
|
|
||||||
_colorRender(NULL),
|
|
||||||
_gradientRender(NULL),
|
|
||||||
_cColor(Color3B::WHITE),
|
|
||||||
_gStartColor(Color3B::WHITE),
|
|
||||||
_gEndColor(Color3B::WHITE),
|
|
||||||
_alongVector(Point(0.0f, -1.0f)),
|
|
||||||
_cOpacity(255),
|
|
||||||
_backGroundImageTextureSize(Size::ZERO),
|
|
||||||
_layoutType(LAYOUT_ABSOLUTE)
|
|
||||||
{
|
|
||||||
_widgetType = WidgetTypeContainer;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layout::~Layout()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Layout* Layout::create()
|
|
||||||
{
|
|
||||||
Layout* layout = new Layout();
|
|
||||||
if (layout && layout->init())
|
|
||||||
{
|
|
||||||
layout->autorelease();
|
|
||||||
return layout;
|
|
||||||
}
|
|
||||||
CC_SAFE_DELETE(layout);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Layout::init()
|
|
||||||
{
|
|
||||||
_children = CCArray::create();
|
|
||||||
_children->retain();
|
|
||||||
initRenderer();
|
|
||||||
_renderer->retain();
|
|
||||||
_renderer->setZOrder(_widgetZOrder);
|
|
||||||
RGBAProtocol* renderRGBA = dynamic_cast<RGBAProtocol*>(_renderer);
|
|
||||||
if (renderRGBA)
|
|
||||||
{
|
|
||||||
renderRGBA->setCascadeColorEnabled(false);
|
|
||||||
renderRGBA->setCascadeOpacityEnabled(false);
|
|
||||||
}
|
|
||||||
ignoreContentAdaptWithSize(false);
|
|
||||||
setSize(Size::ZERO);
|
|
||||||
setBright(true);
|
|
||||||
setAnchorPoint(Point(0, 0));
|
|
||||||
_scheduler = Director::getInstance()->getScheduler();
|
|
||||||
CC_SAFE_RETAIN(_scheduler);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::initRenderer()
|
|
||||||
{
|
|
||||||
_renderer = RectClippingNode::create();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Layout::isClippingEnabled()
|
|
||||||
{
|
|
||||||
return _clippingEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Layout::hitTest(const Point &pt)
|
|
||||||
{
|
|
||||||
Point nsp = _renderer->convertToNodeSpace(pt);
|
|
||||||
Rect bb = Rect(0.0f, 0.0f, _size.width, _size.height);
|
|
||||||
if (nsp.x >= bb.origin.x && nsp.x <= bb.origin.x + bb.size.width && nsp.y >= bb.origin.y && nsp.y <= bb.origin.y + bb.size.height)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setClippingEnabled(bool able)
|
|
||||||
{
|
|
||||||
_clippingEnabled = able;
|
|
||||||
DYNAMIC_CAST_CLIPPINGLAYER->setClippingEnabled(able);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::onSizeChanged()
|
|
||||||
{
|
|
||||||
DYNAMIC_CAST_CLIPPINGLAYER->setClippingSize(_size);
|
|
||||||
doLayout();
|
|
||||||
if (_backGroundImage)
|
|
||||||
{
|
|
||||||
_backGroundImage->setPosition(Point(_size.width/2.0f, _size.height/2.0f));
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setPreferredSize(_size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_colorRender)
|
|
||||||
{
|
|
||||||
_colorRender->setContentSize(_size);
|
|
||||||
}
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_gradientRender->setContentSize(_size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundImageScale9Enabled(bool able)
|
|
||||||
{
|
|
||||||
if (_backGroundScale9Enabled == able)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_renderer->removeChild(_backGroundImage, true);
|
|
||||||
_backGroundImage = NULL;
|
|
||||||
_backGroundScale9Enabled = able;
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
_backGroundImage = Scale9Sprite::create();
|
|
||||||
_renderer->addChild(_backGroundImage);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_backGroundImage = Sprite::create();
|
|
||||||
_renderer->addChild(_backGroundImage);
|
|
||||||
}
|
|
||||||
_backGroundImage->setZOrder(-1);
|
|
||||||
setBackGroundImage(_backGroundImageFileName.c_str(),_bgImageTexType);
|
|
||||||
setBackGroundImageCapInsets(_backGroundImageCapInsets);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundImage(const char* fileName,TextureResType texType)
|
|
||||||
{
|
|
||||||
if (!fileName || strcmp(fileName, "") == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (_backGroundImage == NULL)
|
|
||||||
{
|
|
||||||
addBackGroundImage();
|
|
||||||
}
|
|
||||||
_backGroundImageFileName = fileName;
|
|
||||||
_bgImageTexType = texType;
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
switch (_bgImageTexType)
|
|
||||||
{
|
|
||||||
case UI_TEX_TYPE_LOCAL:
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->initWithFile(fileName);
|
|
||||||
break;
|
|
||||||
case UI_TEX_TYPE_PLIST:
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->initWithSpriteFrameName(fileName);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setPreferredSize(_size);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (_bgImageTexType)
|
|
||||||
{
|
|
||||||
case UI_TEX_TYPE_LOCAL:
|
|
||||||
dynamic_cast<Sprite*>(_backGroundImage)->initWithFile(fileName);
|
|
||||||
break;
|
|
||||||
case UI_TEX_TYPE_PLIST:
|
|
||||||
dynamic_cast<Sprite*>(_backGroundImage)->initWithSpriteFrameName(fileName);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setColor(getColor());
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setOpacity(getOpacity());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dynamic_cast<Sprite*>(_backGroundImage)->setColor(getColor());
|
|
||||||
dynamic_cast<Sprite*>(_backGroundImage)->setOpacity(getOpacity());
|
|
||||||
}
|
|
||||||
_backGroundImageTextureSize = _backGroundImage->getContentSize();
|
|
||||||
_backGroundImage->setPosition(Point(_size.width/2.0f, _size.height/2.0f));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundImageCapInsets(const Rect &capInsets)
|
|
||||||
{
|
|
||||||
_backGroundImageCapInsets = capInsets;
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setCapInsets(capInsets);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::addBackGroundImage()
|
|
||||||
{
|
|
||||||
if (_backGroundScale9Enabled)
|
|
||||||
{
|
|
||||||
_backGroundImage = Scale9Sprite::create();
|
|
||||||
_backGroundImage->setZOrder(-1);
|
|
||||||
_renderer->addChild(_backGroundImage);
|
|
||||||
dynamic_cast<Scale9Sprite*>(_backGroundImage)->setPreferredSize(_size);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_backGroundImage = CCSprite::create();
|
|
||||||
_backGroundImage->setZOrder(-1);
|
|
||||||
_renderer->addChild(_backGroundImage);
|
|
||||||
}
|
|
||||||
_backGroundImage->setPosition(Point(_size.width/2.0f, _size.height/2.0f));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::removeBackGroundImage()
|
|
||||||
{
|
|
||||||
if (!_backGroundImage)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_renderer->removeChild(_backGroundImage, true);
|
|
||||||
_backGroundImage = NULL;
|
|
||||||
_backGroundImageFileName = "";
|
|
||||||
_backGroundImageTextureSize = Size::ZERO;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundColorType(LayoutBackGroundColorType type)
|
|
||||||
{
|
|
||||||
if (_colorType == type)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (_colorType)
|
|
||||||
{
|
|
||||||
case LAYOUT_COLOR_NONE:
|
|
||||||
if (_colorRender)
|
|
||||||
{
|
|
||||||
_renderer->removeChild(_colorRender, true);
|
|
||||||
_colorRender = NULL;
|
|
||||||
}
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_renderer->removeChild(_gradientRender, true);
|
|
||||||
_gradientRender = NULL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_SOLID:
|
|
||||||
if (_colorRender)
|
|
||||||
{
|
|
||||||
_renderer->removeChild(_colorRender, true);
|
|
||||||
_colorRender = NULL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_GRADIENT:
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_renderer->removeChild(_gradientRender, true);
|
|
||||||
_gradientRender = NULL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
_colorType = type;
|
|
||||||
switch (_colorType)
|
|
||||||
{
|
|
||||||
case LAYOUT_COLOR_NONE:
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_SOLID:
|
|
||||||
_colorRender = CCLayerColor::create();
|
|
||||||
_colorRender->setContentSize(_size);
|
|
||||||
_colorRender->setOpacity(_cOpacity);
|
|
||||||
_colorRender->setColor(_cColor);
|
|
||||||
_renderer->addChild(_colorRender,-2);
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_GRADIENT:
|
|
||||||
_gradientRender = CCLayerGradient::create();
|
|
||||||
_gradientRender->setContentSize(_size);
|
|
||||||
_gradientRender->setOpacity(_cOpacity);
|
|
||||||
_gradientRender->setStartColor(_gStartColor);
|
|
||||||
_gradientRender->setEndColor(_gEndColor);
|
|
||||||
_gradientRender->setVector(_alongVector);
|
|
||||||
_renderer->addChild(_gradientRender,-2);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundColor(const Color3B &color)
|
|
||||||
{
|
|
||||||
_cColor = color;
|
|
||||||
if (_colorRender)
|
|
||||||
{
|
|
||||||
_colorRender->setColor(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundColor(const Color3B &startColor, const Color3B &endColor)
|
|
||||||
{
|
|
||||||
_gStartColor = startColor;
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_gradientRender->setStartColor(startColor);
|
|
||||||
}
|
|
||||||
_gEndColor = endColor;
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_gradientRender->setEndColor(endColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundColorOpacity(int opacity)
|
|
||||||
{
|
|
||||||
_cOpacity = opacity;
|
|
||||||
switch (_colorType)
|
|
||||||
{
|
|
||||||
case LAYOUT_COLOR_NONE:
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_SOLID:
|
|
||||||
_colorRender->setOpacity(opacity);
|
|
||||||
break;
|
|
||||||
case LAYOUT_COLOR_GRADIENT:
|
|
||||||
_gradientRender->setOpacity(opacity);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setBackGroundColorVector(const Point &vector)
|
|
||||||
{
|
|
||||||
_alongVector = vector;
|
|
||||||
if (_gradientRender)
|
|
||||||
{
|
|
||||||
_gradientRender->setVector(vector);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setColor(const Color3B &color)
|
|
||||||
{
|
|
||||||
UIWidget::setColor(color);
|
|
||||||
if (_backGroundImage)
|
|
||||||
{
|
|
||||||
RGBAProtocol* rgbap = dynamic_cast<RGBAProtocol*>(_backGroundImage);
|
|
||||||
if (rgbap)
|
|
||||||
{
|
|
||||||
rgbap->setColor(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setOpacity(int opacity)
|
|
||||||
{
|
|
||||||
UIWidget::setOpacity(opacity);
|
|
||||||
if (_backGroundImage)
|
|
||||||
{
|
|
||||||
RGBAProtocol* rgbap = dynamic_cast<RGBAProtocol*>(_backGroundImage);
|
|
||||||
if (rgbap)
|
|
||||||
{
|
|
||||||
rgbap->setOpacity(opacity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const Size& Layout::getBackGroundImageTextureSize() const
|
|
||||||
{
|
|
||||||
return _backGroundImageTextureSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Size& Layout::getContentSize() const
|
|
||||||
{
|
|
||||||
return _renderer->getContentSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::setLayoutType(LayoutType type)
|
|
||||||
{
|
|
||||||
_layoutType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
LayoutType Layout::getLayoutType() const
|
|
||||||
{
|
|
||||||
return _layoutType;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Layout::doLayout()
|
|
||||||
{
|
|
||||||
switch (_layoutType)
|
|
||||||
{
|
|
||||||
case LAYOUT_ABSOLUTE:
|
|
||||||
break;
|
|
||||||
case LAYOUT_LINEAR_VERTICAL:
|
|
||||||
{
|
|
||||||
ccArray* layoutChildrenArray = getChildren()->data;
|
|
||||||
int length = layoutChildrenArray->num;
|
|
||||||
Size layoutSize = getSize();
|
|
||||||
float topBoundary = layoutSize.height;
|
|
||||||
for (int i=0; i<length; ++i)
|
|
||||||
{
|
|
||||||
UIWidget* child = dynamic_cast<UIWidget*>(layoutChildrenArray->arr[i]);
|
|
||||||
LinearLayoutParameter* layoutParameter = dynamic_cast<LinearLayoutParameter*>(child->getLayoutParameter());
|
|
||||||
|
|
||||||
if (layoutParameter)
|
|
||||||
{
|
|
||||||
WidgetType childType = child->getWidgetType();
|
|
||||||
UILinearGravity childGravity = layoutParameter->getGravity();
|
|
||||||
Point ap = child->getAnchorPoint();
|
|
||||||
Size cs = child->getSize();
|
|
||||||
float finalPosX = childType == WidgetTypeWidget ? ap.x * cs.width : 0.0f;
|
|
||||||
float finalPosY = childType == WidgetTypeWidget ? topBoundary - ((1.0f-ap.y) * cs.height) : topBoundary - cs.height;
|
|
||||||
switch (childGravity)
|
|
||||||
{
|
|
||||||
case LINEAR_GRAVITY_NONE:
|
|
||||||
case LINEAR_GRAVITY_LEFT:
|
|
||||||
break;
|
|
||||||
case LINEAR_GRAVITY_RIGHT:
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? layoutSize.width - ((1.0f - ap.x) * cs.width) : layoutSize.width - cs.width;
|
|
||||||
break;
|
|
||||||
case LINEAR_GRAVITY_CENTER_HORIZONTAL:
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? layoutSize.width / 2.0f - cs.width * (0.5f-ap.x) : (layoutSize.width - cs.width) * 0.5f;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UIMargin mg = layoutParameter->getMargin();
|
|
||||||
finalPosX += mg.left;
|
|
||||||
finalPosY -= mg.top;
|
|
||||||
child->setPosition(Point(finalPosX, finalPosY));
|
|
||||||
topBoundary = child->getBottomInParent() - mg.bottom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LAYOUT_LINEAR_HORIZONTAL:
|
|
||||||
{
|
|
||||||
ccArray* layoutChildrenArray = getChildren()->data;
|
|
||||||
int length = layoutChildrenArray->num;
|
|
||||||
Size layoutSize = getSize();
|
|
||||||
float leftBoundary = 0.0f;
|
|
||||||
for (int i=0; i<length; ++i)
|
|
||||||
{
|
|
||||||
UIWidget* child = dynamic_cast<UIWidget*>(layoutChildrenArray->arr[i]);
|
|
||||||
LinearLayoutParameter* layoutParameter = dynamic_cast<LinearLayoutParameter*>(child->getLayoutParameter());
|
|
||||||
|
|
||||||
if (layoutParameter)
|
|
||||||
{
|
|
||||||
WidgetType childType = child->getWidgetType();
|
|
||||||
UILinearGravity childGravity = layoutParameter->getGravity();
|
|
||||||
Point ap = child->getAnchorPoint();
|
|
||||||
Size cs = child->getSize();
|
|
||||||
float finalPosX = childType == WidgetTypeWidget ? leftBoundary + (ap.x * cs.width) : leftBoundary;
|
|
||||||
float finalPosY = childType == WidgetTypeWidget ? layoutSize.height - (1.0f - ap.y) * cs.height : layoutSize.height - cs.height;
|
|
||||||
switch (childGravity)
|
|
||||||
{
|
|
||||||
case LINEAR_GRAVITY_NONE:
|
|
||||||
case LINEAR_GRAVITY_TOP:
|
|
||||||
break;
|
|
||||||
case LINEAR_GRAVITY_BOTTOM:
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? ap.y * cs.height : 0.0f;
|
|
||||||
break;
|
|
||||||
case LINEAR_GRAVITY_CENTER_VERTICAL:
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? layoutSize.height/2.0f - cs.height * (0.5f - ap.y) : (layoutSize.height - cs.height) * 0.5f;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UIMargin mg = layoutParameter->getMargin();
|
|
||||||
finalPosX += mg.left;
|
|
||||||
finalPosY -= mg.top;
|
|
||||||
child->setPosition(Point(finalPosX, finalPosY));
|
|
||||||
leftBoundary = child->getRightInParent() + mg.right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LAYOUT_RELATIVE:
|
|
||||||
{
|
|
||||||
ccArray* layoutChildrenArray = getChildren()->data;
|
|
||||||
int length = layoutChildrenArray->num;
|
|
||||||
Size layoutSize = getSize();
|
|
||||||
for (int i=0; i<length; i++)
|
|
||||||
{
|
|
||||||
UIWidget* child = dynamic_cast<UIWidget*>(layoutChildrenArray->arr[i]);
|
|
||||||
WidgetType childType = child->getWidgetType();
|
|
||||||
Point ap = child->getAnchorPoint();
|
|
||||||
Size cs = child->getSize();
|
|
||||||
RelativeLayoutParameter* layoutParameter = dynamic_cast<RelativeLayoutParameter*>(child->getLayoutParameter());
|
|
||||||
if (layoutParameter)
|
|
||||||
{
|
|
||||||
float finalPosX = childType == WidgetTypeWidget ? ap.x * cs.width : 0.0f;
|
|
||||||
float finalPosY = childType == WidgetTypeWidget ? layoutSize.height - ((1.0f - ap.y) * cs.height) : layoutSize.height - cs.height;
|
|
||||||
UIRelativeAlign align = layoutParameter->getAlign();
|
|
||||||
const char* relativeName = layoutParameter->getRelativeToWidgetName();
|
|
||||||
UIWidget* relativeWidget = NULL;
|
|
||||||
if (relativeName && strcmp(relativeName, ""))
|
|
||||||
{
|
|
||||||
relativeWidget = CCUIHELPER->seekWidgetByRelativeName(this, relativeName);
|
|
||||||
}
|
|
||||||
switch (align)
|
|
||||||
{
|
|
||||||
case RELATIVE_ALIGN_NONE:
|
|
||||||
break;
|
|
||||||
case RELATIVE_ALIGN_PARENT_LEFT:
|
|
||||||
break;
|
|
||||||
case RELATIVE_ALIGN_PARENT_TOP:
|
|
||||||
break;
|
|
||||||
case RELATIVE_ALIGN_PARENT_RIGHT:
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? layoutSize.width - ((1.0f - ap.x) * cs.width) : layoutSize.width - cs.width;
|
|
||||||
break;
|
|
||||||
case RELATIVE_ALIGN_PARENT_BOTTOM:
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? ap.y * cs.height : 0.0f;
|
|
||||||
break;
|
|
||||||
case RELATIVE_CENTER_IN_PARENT:
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? layoutSize.width * 0.5f - cs.width * (0.5f - ap.x) : (layoutSize.width - cs.width) * 0.5f;
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? layoutSize.height * 0.5f - cs.height * (0.5f - ap.y) : (layoutSize.height - cs.height) * 0.5f;
|
|
||||||
break;
|
|
||||||
case RELATIVE_CENTER_HORIZONTAL:
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? layoutSize.width * 0.5f - cs.width * (0.5f - ap.x) : (layoutSize.width - cs.width) * 0.5f;
|
|
||||||
break;
|
|
||||||
case RELATIVE_CENTER_VERTICAL:
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? layoutSize.height * 0.5f - cs.height * (0.5f - ap.y) : (layoutSize.height - cs.height) * 0.5f;
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_TOPALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationTop = relativeWidget->getTopInParent();
|
|
||||||
float locationRight = relativeWidget->getLeftInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationTop - ap.y * cs.height : locationTop - cs.height;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationRight - (1.0f - ap.x) * cs.width : locationRight - cs.width;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_CENTER:
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_BOTTOMALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationRight = relativeWidget->getLeftInParent();
|
|
||||||
float locationBottom = relativeWidget->getBottomInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationBottom + ap.y * cs.height : locationBottom;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationRight - (1.0f - ap.x) * cs.width : locationRight - cs.width;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_TOPALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationTop = relativeWidget->getTopInParent();
|
|
||||||
float locationLeft = relativeWidget->getRightInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationTop - ap.y * cs.height : locationTop - cs.height;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationLeft + ap.x * cs.width : locationLeft;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_CENTER:
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_BOTTOMALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationLeft = relativeWidget->getRightInParent();
|
|
||||||
float locationBottom = relativeWidget->getBottomInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationBottom + ap.y * cs.height : locationBottom;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationLeft + ap.x * cs.width : locationLeft;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_ABOVE_LEFTALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationBottom = relativeWidget->getTopInParent();
|
|
||||||
float locationLeft = relativeWidget->getLeftInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationBottom + ap.y * cs.height : locationBottom;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationLeft + ap.x * cs.width : locationLeft;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_ABOVE_CENTER:
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_ABOVE_RIGHTALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationBottom = relativeWidget->getTopInParent();
|
|
||||||
float locationRight = relativeWidget->getRightInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationBottom + ap.y * cs.height : locationBottom;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationRight - (1.0f - ap.x) * cs.width : locationRight - cs.width;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_BELOW_LEFTALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationTop = relativeWidget->getBottomInParent();
|
|
||||||
float locationLeft = relativeWidget->getLeftInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationTop - (1.0f - ap.y) * cs.height : locationTop - cs.height;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationLeft + ap.x * cs.width : locationLeft;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_BELOW_CENTER:
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_BELOW_RIGHTALIGN:
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
float locationTop = relativeWidget->getBottomInParent();
|
|
||||||
float locationRight = relativeWidget->getRightInParent();
|
|
||||||
finalPosY = childType == WidgetTypeWidget ? locationTop - (1.0f - ap.y) * cs.height : locationTop - cs.height;
|
|
||||||
finalPosX = childType == WidgetTypeWidget ? locationRight - (1.0f - ap.x) * cs.width : locationRight - cs.width;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UIMargin relativeWidgetMargin;
|
|
||||||
UIMargin mg;
|
|
||||||
if (relativeWidget)
|
|
||||||
{
|
|
||||||
relativeWidgetMargin = relativeWidget->getLayoutParameter()->getMargin();
|
|
||||||
mg = child->getLayoutParameter()->getMargin();
|
|
||||||
}
|
|
||||||
//handle margin
|
|
||||||
switch (align)
|
|
||||||
{
|
|
||||||
case RELATIVE_LOCATION_ABOVE_LEFTALIGN:
|
|
||||||
case RELATIVE_LOCATION_ABOVE_RIGHTALIGN:
|
|
||||||
case RELATIVE_LOCATION_ABOVE_CENTER:
|
|
||||||
finalPosY += relativeWidgetMargin.top;
|
|
||||||
finalPosY += mg.bottom;
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_BELOW_LEFTALIGN:
|
|
||||||
case RELATIVE_LOCATION_BELOW_RIGHTALIGN:
|
|
||||||
case RELATIVE_LOCATION_BELOW_CENTER:
|
|
||||||
finalPosY -= relativeWidgetMargin.bottom;
|
|
||||||
finalPosY -= mg.top;
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_TOPALIGN:
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_BOTTOMALIGN:
|
|
||||||
case RELATIVE_LOCATION_LEFT_OF_CENTER:
|
|
||||||
finalPosX -= relativeWidgetMargin.left;
|
|
||||||
finalPosX -= mg.right;
|
|
||||||
break;
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_TOPALIGN:
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_BOTTOMALIGN:
|
|
||||||
case RELATIVE_LOCATION_RIGHT_OF_CENTER:
|
|
||||||
finalPosX += relativeWidgetMargin.right;
|
|
||||||
finalPosX += mg.left;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
child->setPosition(Point(finalPosX, finalPosY));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* Layout::getDescription() const
|
|
||||||
{
|
|
||||||
return "Layout";
|
|
||||||
}
|
|
||||||
|
|
||||||
RectClippingNode::RectClippingNode():
|
|
||||||
m_pInnerStencil(NULL),
|
|
||||||
_enabled(true),
|
|
||||||
_clippingSize(Size(50.0f, 50.0f)),
|
|
||||||
_clippingEnabled(false)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
RectClippingNode::~RectClippingNode()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
RectClippingNode* RectClippingNode::create()
|
|
||||||
{
|
|
||||||
RectClippingNode *pRet = new RectClippingNode();
|
|
||||||
if (pRet && pRet->init())
|
|
||||||
{
|
|
||||||
pRet->autorelease();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CC_SAFE_DELETE(pRet);
|
|
||||||
}
|
|
||||||
|
|
||||||
return pRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RectClippingNode::init()
|
|
||||||
{
|
|
||||||
m_pInnerStencil = CCDrawNode::create();
|
|
||||||
rect[0] = Point(0, 0);
|
|
||||||
rect[1] = Point(_clippingSize.width, 0);
|
|
||||||
rect[2] = Point(_clippingSize.width, _clippingSize.height);
|
|
||||||
rect[3] = Point(0, _clippingSize.height);
|
|
||||||
|
|
||||||
Color4F green(0, 1, 0, 1);
|
|
||||||
m_pInnerStencil->drawPolygon(rect, 4, green, 0, green);
|
|
||||||
if (CCClippingNode::init(m_pInnerStencil))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void RectClippingNode::setClippingSize(const Size &size)
|
|
||||||
{
|
|
||||||
setContentSize(size);
|
|
||||||
_clippingSize = size;
|
|
||||||
rect[0] = Point(0, 0);
|
|
||||||
rect[1] = Point(_clippingSize.width, 0);
|
|
||||||
rect[2] = Point(_clippingSize.width, _clippingSize.height);
|
|
||||||
rect[3] = Point(0, _clippingSize.height);
|
|
||||||
Color4F green(0, 1, 0, 1);
|
|
||||||
m_pInnerStencil->clear();
|
|
||||||
m_pInnerStencil->drawPolygon(rect, 4, green, 0, green);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RectClippingNode::setClippingEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
_clippingEnabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RectClippingNode::visit()
|
|
||||||
{
|
|
||||||
if (!_enabled)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (_clippingEnabled)
|
|
||||||
{
|
|
||||||
CCClippingNode::visit();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CCNode::visit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RectClippingNode::setEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
_enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RectClippingNode::isEnabled() const
|
|
||||||
{
|
|
||||||
return _enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -6,14 +6,13 @@ INCLUDES = -I../ \
|
||||||
|
|
||||||
SOURCES = UIRootWidget.cpp \
|
SOURCES = UIRootWidget.cpp \
|
||||||
UIWidget.cpp \
|
UIWidget.cpp \
|
||||||
Layout.cpp \
|
UILayout.cpp \
|
||||||
LayoutParameter.cpp \
|
UILayoutParameter.cpp \
|
||||||
UILayoutDefine.cpp \
|
UILayoutDefine.cpp \
|
||||||
CocosGUI.cpp \
|
CocosGUI.cpp \
|
||||||
UIHelper.cpp \
|
UIHelper.cpp \
|
||||||
UIInputManager.cpp \
|
UIInputManager.cpp \
|
||||||
UILayer.cpp \
|
UILayer.cpp \
|
||||||
UIDragPanel.cpp \
|
|
||||||
UIListView.cpp \
|
UIListView.cpp \
|
||||||
UIPageView.cpp \
|
UIPageView.cpp \
|
||||||
UIScrollView.cpp \
|
UIScrollView.cpp \
|
||||||
|
|
|
@ -25,9 +25,6 @@
|
||||||
#include "gui/UIButton.h"
|
#include "gui/UIButton.h"
|
||||||
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocos2d::extension;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
#define NORMALRENDERERZ (0)
|
#define NORMALRENDERERZ (0)
|
||||||
|
@ -45,9 +42,9 @@ _clickedFileName(""),
|
||||||
_disabledFileName(""),
|
_disabledFileName(""),
|
||||||
_prevIgnoreSize(true),
|
_prevIgnoreSize(true),
|
||||||
_scale9Enabled(false),
|
_scale9Enabled(false),
|
||||||
_capInsetsNormal(Rect::ZERO),
|
_capInsetsNormal(cocos2d::Rect::ZERO),
|
||||||
_capInsetsPressed(Rect::ZERO),
|
_capInsetsPressed(cocos2d::Rect::ZERO),
|
||||||
_capInsetsDisabled(Rect::ZERO),
|
_capInsetsDisabled(cocos2d::Rect::ZERO),
|
||||||
_normalTexType(UI_TEX_TYPE_LOCAL),
|
_normalTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_pressedTexType(UI_TEX_TYPE_LOCAL),
|
_pressedTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_disabledTexType(UI_TEX_TYPE_LOCAL),
|
_disabledTexType(UI_TEX_TYPE_LOCAL),
|
||||||
|
@ -55,7 +52,7 @@ _normalTextureSize(_size),
|
||||||
_pressedTextureSize(_size),
|
_pressedTextureSize(_size),
|
||||||
_disabledTextureSize(_size),
|
_disabledTextureSize(_size),
|
||||||
_pressedActionEnabled(false),
|
_pressedActionEnabled(false),
|
||||||
_titleColor(Color3B::WHITE)
|
_titleColor(cocos2d::Color3B::WHITE)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -88,10 +85,10 @@ bool UIButton::init()
|
||||||
void UIButton::initRenderer()
|
void UIButton::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_buttonNormalRenderer = Sprite::create();
|
_buttonNormalRenderer = cocos2d::Sprite::create();
|
||||||
_buttonClickedRenderer = Sprite::create();
|
_buttonClickedRenderer = cocos2d::Sprite::create();
|
||||||
_buttonDisableRenderer = Sprite::create();
|
_buttonDisableRenderer = cocos2d::Sprite::create();
|
||||||
_titleRenderer = LabelTTF::create();
|
_titleRenderer = cocos2d::LabelTTF::create();
|
||||||
_renderer->addChild(_buttonNormalRenderer,NORMALRENDERERZ);
|
_renderer->addChild(_buttonNormalRenderer,NORMALRENDERERZ);
|
||||||
_renderer->addChild(_buttonClickedRenderer,PRESSEDRENDERERZ);
|
_renderer->addChild(_buttonClickedRenderer,PRESSEDRENDERERZ);
|
||||||
_renderer->addChild(_buttonDisableRenderer,DISABLEDRENDERERZ);
|
_renderer->addChild(_buttonDisableRenderer,DISABLEDRENDERERZ);
|
||||||
|
@ -117,15 +114,15 @@ void UIButton::setScale9Enabled(bool able)
|
||||||
_buttonDisableRenderer = NULL;
|
_buttonDisableRenderer = NULL;
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
_buttonNormalRenderer = Scale9Sprite::create();
|
_buttonNormalRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
_buttonClickedRenderer = Scale9Sprite::create();
|
_buttonClickedRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
_buttonDisableRenderer = Scale9Sprite::create();
|
_buttonDisableRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_buttonNormalRenderer = CCSprite::create();
|
_buttonNormalRenderer = cocos2d::Sprite::create();
|
||||||
_buttonClickedRenderer = CCSprite::create();
|
_buttonClickedRenderer = cocos2d::Sprite::create();
|
||||||
_buttonDisableRenderer = CCSprite::create();
|
_buttonDisableRenderer = cocos2d::Sprite::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadTextureNormal(_normalFileName.c_str(), _normalTexType);
|
loadTextureNormal(_normalFileName.c_str(), _normalTexType);
|
||||||
|
@ -179,32 +176,33 @@ void UIButton::loadTextureNormal(const char* normal,TextureResType texType)
|
||||||
switch (_normalTexType)
|
switch (_normalTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->initWithFile(normal);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->initWithFile(normal);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->initWithSpriteFrameName(normal);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->initWithSpriteFrameName(normal);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->setOpacity(getOpacity());
|
||||||
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->setCapInsets(_capInsetsNormal);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (_normalTexType)
|
switch (_normalTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->initWithFile(normal);
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->initWithFile(normal);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->initWithSpriteFrameName(normal);
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->initWithSpriteFrameName(normal);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
_normalTextureSize = _buttonNormalRenderer->getContentSize();
|
_normalTextureSize = _buttonNormalRenderer->getContentSize();
|
||||||
updateAnchorPoint();
|
updateAnchorPoint();
|
||||||
|
@ -224,32 +222,33 @@ void UIButton::loadTexturePressed(const char* selected,TextureResType texType)
|
||||||
switch (_pressedTexType)
|
switch (_pressedTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->initWithFile(selected);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->initWithFile(selected);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->initWithSpriteFrameName(selected);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->initWithSpriteFrameName(selected);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->setOpacity(getOpacity());
|
||||||
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->setCapInsets(_capInsetsPressed);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (_pressedTexType)
|
switch (_pressedTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->initWithFile(selected);
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->initWithFile(selected);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->initWithSpriteFrameName(selected);
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->initWithSpriteFrameName(selected);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
_pressedTextureSize = _buttonClickedRenderer->getContentSize();
|
_pressedTextureSize = _buttonClickedRenderer->getContentSize();
|
||||||
updateAnchorPoint();
|
updateAnchorPoint();
|
||||||
|
@ -269,73 +268,74 @@ void UIButton::loadTextureDisabled(const char* disabled,TextureResType texType)
|
||||||
switch (_disabledTexType)
|
switch (_disabledTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->initWithFile(disabled);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->initWithFile(disabled);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->initWithSpriteFrameName(disabled);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->initWithSpriteFrameName(disabled);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->setOpacity(getOpacity());
|
||||||
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->setCapInsets(_capInsetsDisabled);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (_disabledTexType)
|
switch (_disabledTexType)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->initWithFile(disabled);
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->initWithFile(disabled);
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->initWithSpriteFrameName(disabled);
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->initWithSpriteFrameName(disabled);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
_disabledTextureSize = _buttonDisableRenderer->getContentSize();
|
_disabledTextureSize = _buttonDisableRenderer->getContentSize();
|
||||||
updateAnchorPoint();
|
updateAnchorPoint();
|
||||||
disabledTextureScaleChangedWithSize();
|
disabledTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setCapInsets(const Rect &capInsets)
|
void UIButton::setCapInsets(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
setCapInsetsNormalRenderer(capInsets);
|
setCapInsetsNormalRenderer(capInsets);
|
||||||
setCapInsetsPressedRenderer(capInsets);
|
setCapInsetsPressedRenderer(capInsets);
|
||||||
setCapInsetsDisabledRenderer(capInsets);
|
setCapInsetsDisabledRenderer(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setCapInsetsNormalRenderer(const Rect &capInsets)
|
void UIButton::setCapInsetsNormalRenderer(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsetsNormal = capInsets;
|
_capInsetsNormal = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setCapInsetsPressedRenderer(const Rect &capInsets)
|
void UIButton::setCapInsetsPressedRenderer(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsetsPressed = capInsets;
|
_capInsetsPressed = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setCapInsetsDisabledRenderer(const Rect &capInsets)
|
void UIButton::setCapInsetsDisabledRenderer(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsetsDisabled = capInsets;
|
_capInsetsDisabled = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::onPressStateChangedToNormal()
|
void UIButton::onPressStateChangedToNormal()
|
||||||
|
@ -348,9 +348,9 @@ void UIButton::onPressStateChangedToNormal()
|
||||||
_buttonNormalRenderer->stopAllActions();
|
_buttonNormalRenderer->stopAllActions();
|
||||||
_buttonClickedRenderer->stopAllActions();
|
_buttonClickedRenderer->stopAllActions();
|
||||||
_buttonDisableRenderer->stopAllActions();
|
_buttonDisableRenderer->stopAllActions();
|
||||||
Action *zoomAction = ScaleTo::create(0.05f, 1.0f);
|
cocos2d::Action *zoomAction = cocos2d::ScaleTo::create(0.05f, 1.0f);
|
||||||
Action *zoomAction1 = ScaleTo::create(0.05f, 1.0f);
|
cocos2d::Action *zoomAction1 = cocos2d::ScaleTo::create(0.05f, 1.0f);
|
||||||
Action *zoomAction2 = ScaleTo::create(0.05f, 1.0f);
|
cocos2d::Action *zoomAction2 = cocos2d::ScaleTo::create(0.05f, 1.0f);
|
||||||
_buttonNormalRenderer->runAction(zoomAction);
|
_buttonNormalRenderer->runAction(zoomAction);
|
||||||
_buttonClickedRenderer->runAction(zoomAction1);
|
_buttonClickedRenderer->runAction(zoomAction1);
|
||||||
_buttonDisableRenderer->runAction(zoomAction2);
|
_buttonDisableRenderer->runAction(zoomAction2);
|
||||||
|
@ -367,9 +367,9 @@ void UIButton::onPressStateChangedToPressed()
|
||||||
_buttonNormalRenderer->stopAllActions();
|
_buttonNormalRenderer->stopAllActions();
|
||||||
_buttonClickedRenderer->stopAllActions();
|
_buttonClickedRenderer->stopAllActions();
|
||||||
_buttonDisableRenderer->stopAllActions();
|
_buttonDisableRenderer->stopAllActions();
|
||||||
Action *zoomAction = ScaleTo::create(0.05f, 1.1f);
|
cocos2d::Action *zoomAction = cocos2d::ScaleTo::create(0.05f, 1.1f);
|
||||||
Action *zoomAction1 = ScaleTo::create(0.05f, 1.1f);
|
cocos2d::Action *zoomAction1 = cocos2d::ScaleTo::create(0.05f, 1.1f);
|
||||||
Action *zoomAction2 = ScaleTo::create(0.05f, 1.1f);
|
cocos2d::Action *zoomAction2 = cocos2d::ScaleTo::create(0.05f, 1.1f);
|
||||||
_buttonNormalRenderer->runAction(zoomAction);
|
_buttonNormalRenderer->runAction(zoomAction);
|
||||||
_buttonClickedRenderer->runAction(zoomAction1);
|
_buttonClickedRenderer->runAction(zoomAction1);
|
||||||
_buttonDisableRenderer->runAction(zoomAction2);
|
_buttonDisableRenderer->runAction(zoomAction2);
|
||||||
|
@ -390,9 +390,9 @@ void UIButton::setFlipX(bool flipX)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->setFlippedX(flipX);
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->setFlippedX(flipX);
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->setFlippedX(flipX);
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->setFlippedX(flipX);
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->setFlippedX(flipX);
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->setFlippedX(flipX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setFlipY(bool flipY)
|
void UIButton::setFlipY(bool flipY)
|
||||||
|
@ -402,9 +402,9 @@ void UIButton::setFlipY(bool flipY)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_buttonNormalRenderer)->setFlippedY(flipY);
|
dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->setFlippedY(flipY);
|
||||||
dynamic_cast<Sprite*>(_buttonClickedRenderer)->setFlippedY(flipY);
|
dynamic_cast<cocos2d::Sprite*>(_buttonClickedRenderer)->setFlippedY(flipY);
|
||||||
dynamic_cast<Sprite*>(_buttonDisableRenderer)->setFlippedY(flipY);
|
dynamic_cast<cocos2d::Sprite*>(_buttonDisableRenderer)->setFlippedY(flipY);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIButton::isFlipX()
|
bool UIButton::isFlipX()
|
||||||
|
@ -413,7 +413,7 @@ bool UIButton::isFlipX()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return dynamic_cast<Sprite*>(_buttonNormalRenderer)->isFlippedX();
|
return dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->isFlippedX();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIButton::isFlipY()
|
bool UIButton::isFlipY()
|
||||||
|
@ -422,16 +422,16 @@ bool UIButton::isFlipY()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return dynamic_cast<Sprite*>(_buttonNormalRenderer)->isFlippedY();
|
return dynamic_cast<cocos2d::Sprite*>(_buttonNormalRenderer)->isFlippedY();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setAnchorPoint(const Point &pt)
|
void UIButton::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_buttonNormalRenderer->setAnchorPoint(pt);
|
_buttonNormalRenderer->setAnchorPoint(pt);
|
||||||
_buttonClickedRenderer->setAnchorPoint(pt);
|
_buttonClickedRenderer->setAnchorPoint(pt);
|
||||||
_buttonDisableRenderer->setAnchorPoint(pt);
|
_buttonDisableRenderer->setAnchorPoint(pt);
|
||||||
_titleRenderer->setPosition(Point(_size.width*(0.5f-_anchorPoint.x), _size.height*(0.5f-_anchorPoint.y)));
|
_titleRenderer->setPosition(cocos2d::Point(_size.width*(0.5f-_anchorPoint.x), _size.height*(0.5f-_anchorPoint.y)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::onSizeChanged()
|
void UIButton::onSizeChanged()
|
||||||
|
@ -441,12 +441,12 @@ void UIButton::onSizeChanged()
|
||||||
disabledTextureScaleChangedWithSize();
|
disabledTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UIButton::getContentSize() const
|
const cocos2d::Size& UIButton::getContentSize() const
|
||||||
{
|
{
|
||||||
return _normalTextureSize;
|
return _normalTextureSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UIButton::getVirtualRenderer()
|
cocos2d::Node* UIButton::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
if (_bright)
|
if (_bright)
|
||||||
{
|
{
|
||||||
|
@ -480,11 +480,11 @@ void UIButton::normalTextureScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonNormalRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonNormalRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _normalTextureSize;
|
cocos2d::Size textureSize = _normalTextureSize;
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_buttonNormalRenderer->setScale(1.0f);
|
_buttonNormalRenderer->setScale(1.0f);
|
||||||
|
@ -511,11 +511,11 @@ void UIButton::pressedTextureScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonClickedRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonClickedRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _pressedTextureSize;
|
cocos2d::Size textureSize = _pressedTextureSize;
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_buttonClickedRenderer->setScale(1.0f);
|
_buttonClickedRenderer->setScale(1.0f);
|
||||||
|
@ -542,11 +542,11 @@ void UIButton::disabledTextureScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_buttonDisableRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_buttonDisableRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _disabledTextureSize;
|
cocos2d::Size textureSize = _disabledTextureSize;
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_buttonDisableRenderer->setScale(1.0f);
|
_buttonDisableRenderer->setScale(1.0f);
|
||||||
|
@ -575,13 +575,13 @@ const char* UIButton::getTitleText() const
|
||||||
return _titleRenderer->getString();
|
return _titleRenderer->getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setTitleColor(const Color3B& color)
|
void UIButton::setTitleColor(const cocos2d::Color3B& color)
|
||||||
{
|
{
|
||||||
_titleColor = color;
|
_titleColor = color;
|
||||||
_titleRenderer->setColor(color);
|
_titleRenderer->setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Color3B& UIButton::getTitleColor() const
|
const cocos2d::Color3B& UIButton::getTitleColor() const
|
||||||
{
|
{
|
||||||
return _titleRenderer->getColor();
|
return _titleRenderer->getColor();
|
||||||
}
|
}
|
||||||
|
@ -606,7 +606,7 @@ const char* UIButton::getTitleFontName() const
|
||||||
return _titleRenderer->getFontName();
|
return _titleRenderer->getFontName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIButton::setColor(const Color3B &color)
|
void UIButton::setColor(const cocos2d::Color3B &color)
|
||||||
{
|
{
|
||||||
UIWidget::setColor(color);
|
UIWidget::setColor(color);
|
||||||
setTitleColor(_titleColor);
|
setTitleColor(_titleColor);
|
||||||
|
@ -617,4 +617,30 @@ const char* UIButton::getDescription() const
|
||||||
return "Button";
|
return "Button";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UIButton::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UIButton::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIButton::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UIButton* button = dynamic_cast<UIButton*>(widget);
|
||||||
|
if (button)
|
||||||
|
{
|
||||||
|
_prevIgnoreSize = button->_prevIgnoreSize;
|
||||||
|
setScale9Enabled(button->_scale9Enabled);
|
||||||
|
loadTextureNormal(button->_normalFileName.c_str(), button->_normalTexType);
|
||||||
|
loadTexturePressed(button->_clickedFileName.c_str(), button->_pressedTexType);
|
||||||
|
loadTextureDisabled(button->_disabledFileName.c_str(), button->_disabledTexType);
|
||||||
|
setCapInsetsNormalRenderer(button->_capInsetsNormal);
|
||||||
|
setCapInsetsPressedRenderer(button->_capInsetsPressed);
|
||||||
|
setCapInsetsDisabledRenderer(button->_capInsetsDisabled);
|
||||||
|
setTitleText(button->getTitleText());
|
||||||
|
setTitleFontName(button->getTitleFontName());
|
||||||
|
setTitleFontSize(button->getTitleFontSize());
|
||||||
|
setTitleColor(button->getTitleColor());
|
||||||
|
setPressedActionEnabled(button->_pressedActionEnabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -27,8 +27,12 @@
|
||||||
|
|
||||||
#include "gui/UIWidget.h"
|
#include "gui/UIWidget.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UIButton : public UIWidget
|
class UIButton : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -162,6 +166,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void setColor(const cocos2d::Color3B &color);
|
virtual void setColor(const cocos2d::Color3B &color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the "class name" of widget.
|
||||||
|
*/
|
||||||
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
void setTitleText(const char* text);
|
void setTitleText(const char* text);
|
||||||
const char* getTitleText() const;
|
const char* getTitleText() const;
|
||||||
void setTitleColor(const cocos2d::Color3B& color);
|
void setTitleColor(const cocos2d::Color3B& color);
|
||||||
|
@ -171,10 +180,6 @@ public:
|
||||||
void setTitleFontName(const char* fontName);
|
void setTitleFontName(const char* fontName);
|
||||||
const char* getTitleFontName() const;
|
const char* getTitleFontName() const;
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the "class name" of widget.
|
|
||||||
*/
|
|
||||||
virtual const char* getDescription() const;
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
|
@ -186,6 +191,8 @@ protected:
|
||||||
void normalTextureScaleChangedWithSize();
|
void normalTextureScaleChangedWithSize();
|
||||||
void pressedTextureScaleChangedWithSize();
|
void pressedTextureScaleChangedWithSize();
|
||||||
void disabledTextureScaleChangedWithSize();
|
void disabledTextureScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
cocos2d::Node* _buttonNormalRenderer;
|
cocos2d::Node* _buttonNormalRenderer;
|
||||||
cocos2d::Node* _buttonClickedRenderer;
|
cocos2d::Node* _buttonClickedRenderer;
|
||||||
|
|
|
@ -24,10 +24,9 @@
|
||||||
|
|
||||||
#include "gui/UICheckBox.h"
|
#include "gui/UICheckBox.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
||||||
UICheckBox::UICheckBox():
|
UICheckBox::UICheckBox():
|
||||||
_backGroundBoxRenderer(NULL),
|
_backGroundBoxRenderer(NULL),
|
||||||
_backGroundSelectedBoxRenderer(NULL),
|
_backGroundSelectedBoxRenderer(NULL),
|
||||||
|
@ -41,7 +40,12 @@ _backGroundTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_backGroundSelectedTexType(UI_TEX_TYPE_LOCAL),
|
_backGroundSelectedTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_frontCrossTexType(UI_TEX_TYPE_LOCAL),
|
_frontCrossTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_backGroundDisabledTexType(UI_TEX_TYPE_LOCAL),
|
_backGroundDisabledTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_frontCrossDisabledTexType(UI_TEX_TYPE_LOCAL)
|
_frontCrossDisabledTexType(UI_TEX_TYPE_LOCAL),
|
||||||
|
_backGroundFileName(""),
|
||||||
|
_backGroundSelectedFileName(""),
|
||||||
|
_frontCrossFileName(""),
|
||||||
|
_backGroundDisabledFileName(""),
|
||||||
|
_frontCrossDisabledFileName("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,11 +79,11 @@ bool UICheckBox::init()
|
||||||
void UICheckBox::initRenderer()
|
void UICheckBox::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_backGroundBoxRenderer = Sprite::create();
|
_backGroundBoxRenderer = cocos2d::Sprite::create();
|
||||||
_backGroundSelectedBoxRenderer = Sprite::create();
|
_backGroundSelectedBoxRenderer = cocos2d::Sprite::create();
|
||||||
_frontCrossRenderer = Sprite::create();
|
_frontCrossRenderer = cocos2d::Sprite::create();
|
||||||
_backGroundBoxDisabledRenderer = Sprite::create();
|
_backGroundBoxDisabledRenderer = cocos2d::Sprite::create();
|
||||||
_frontCrossDisabledRenderer = Sprite::create();
|
_frontCrossDisabledRenderer = cocos2d::Sprite::create();
|
||||||
_renderer->addChild(_backGroundBoxRenderer);
|
_renderer->addChild(_backGroundBoxRenderer);
|
||||||
_renderer->addChild(_backGroundSelectedBoxRenderer);
|
_renderer->addChild(_backGroundSelectedBoxRenderer);
|
||||||
_renderer->addChild(_frontCrossRenderer);
|
_renderer->addChild(_frontCrossRenderer);
|
||||||
|
@ -102,6 +106,7 @@ void UICheckBox::loadTextureBackGround(const char *backGround,TextureResType tex
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_backGroundFileName = backGround;
|
||||||
_backGroundTexType = texType;
|
_backGroundTexType = texType;
|
||||||
switch (_backGroundTexType)
|
switch (_backGroundTexType)
|
||||||
{
|
{
|
||||||
|
@ -125,6 +130,7 @@ void UICheckBox::loadTextureBackGroundSelected(const char *backGroundSelected,Te
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_backGroundSelectedFileName = backGroundSelected;
|
||||||
_backGroundSelectedTexType = texType;
|
_backGroundSelectedTexType = texType;
|
||||||
switch (_backGroundSelectedTexType)
|
switch (_backGroundSelectedTexType)
|
||||||
{
|
{
|
||||||
|
@ -148,6 +154,7 @@ void UICheckBox::loadTextureFrontCross(const char *cross,TextureResType texType)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_frontCrossFileName = cross;
|
||||||
_frontCrossTexType = texType;
|
_frontCrossTexType = texType;
|
||||||
switch (_frontCrossTexType)
|
switch (_frontCrossTexType)
|
||||||
{
|
{
|
||||||
|
@ -171,6 +178,7 @@ void UICheckBox::loadTextureBackGroundDisabled(const char *backGroundDisabled,Te
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_backGroundDisabledFileName = backGroundDisabled;
|
||||||
_backGroundDisabledTexType = texType;
|
_backGroundDisabledTexType = texType;
|
||||||
switch (_backGroundDisabledTexType)
|
switch (_backGroundDisabledTexType)
|
||||||
{
|
{
|
||||||
|
@ -194,6 +202,7 @@ void UICheckBox::loadTextureFrontCrossDisabled(const char *frontCrossDisabled,Te
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_frontCrossDisabledFileName = frontCrossDisabled;
|
||||||
_frontCrossDisabledTexType = texType;
|
_frontCrossDisabledTexType = texType;
|
||||||
switch (_frontCrossDisabledTexType)
|
switch (_frontCrossDisabledTexType)
|
||||||
{
|
{
|
||||||
|
@ -211,7 +220,7 @@ void UICheckBox::loadTextureFrontCrossDisabled(const char *frontCrossDisabled,Te
|
||||||
frontCrossDisabledTextureScaleChangedWithSize();
|
frontCrossDisabledTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICheckBox::onTouchEnded(const Point &touchPoint)
|
void UICheckBox::onTouchEnded(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
if (_focus)
|
if (_focus)
|
||||||
{
|
{
|
||||||
|
@ -289,7 +298,7 @@ void UICheckBox::unSelectedEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICheckBox::addEventListener(Object *target, SEL_SelectedStateEvent selector)
|
void UICheckBox::addEventListener(cocos2d::Object *target, SEL_SelectedStateEvent selector)
|
||||||
{
|
{
|
||||||
_selectedStateEventListener = target;
|
_selectedStateEventListener = target;
|
||||||
_selectedStateEventSelector = selector;
|
_selectedStateEventSelector = selector;
|
||||||
|
@ -323,7 +332,7 @@ bool UICheckBox::isFlipY()
|
||||||
return _backGroundBoxRenderer->isFlippedY();
|
return _backGroundBoxRenderer->isFlippedY();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICheckBox::setAnchorPoint(const Point &pt)
|
void UICheckBox::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_backGroundBoxRenderer->setAnchorPoint(pt);
|
_backGroundBoxRenderer->setAnchorPoint(pt);
|
||||||
|
@ -342,12 +351,12 @@ void UICheckBox::onSizeChanged()
|
||||||
frontCrossDisabledTextureScaleChangedWithSize();
|
frontCrossDisabledTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UICheckBox::getContentSize() const
|
const cocos2d::Size& UICheckBox::getContentSize() const
|
||||||
{
|
{
|
||||||
return _backGroundBoxRenderer->getContentSize();
|
return _backGroundBoxRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UICheckBox::getVirtualRenderer()
|
cocos2d::Node* UICheckBox::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _backGroundBoxRenderer;
|
return _backGroundBoxRenderer;
|
||||||
}
|
}
|
||||||
|
@ -361,7 +370,7 @@ void UICheckBox::backGroundTextureScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _backGroundBoxRenderer->getContentSize();
|
cocos2d::Size textureSize = _backGroundBoxRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_backGroundBoxRenderer->setScale(1.0f);
|
_backGroundBoxRenderer->setScale(1.0f);
|
||||||
|
@ -382,7 +391,7 @@ void UICheckBox::backGroundSelectedTextureScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _backGroundSelectedBoxRenderer->getContentSize();
|
cocos2d::Size textureSize = _backGroundSelectedBoxRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_backGroundSelectedBoxRenderer->setScale(1.0f);
|
_backGroundSelectedBoxRenderer->setScale(1.0f);
|
||||||
|
@ -403,7 +412,7 @@ void UICheckBox::frontCrossTextureScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _frontCrossRenderer->getContentSize();
|
cocos2d::Size textureSize = _frontCrossRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_frontCrossRenderer->setScale(1.0f);
|
_frontCrossRenderer->setScale(1.0f);
|
||||||
|
@ -424,7 +433,7 @@ void UICheckBox::backGroundDisabledTextureScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _backGroundBoxDisabledRenderer->getContentSize();
|
cocos2d::Size textureSize = _backGroundBoxDisabledRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_backGroundBoxDisabledRenderer->setScale(1.0f);
|
_backGroundBoxDisabledRenderer->setScale(1.0f);
|
||||||
|
@ -445,7 +454,7 @@ void UICheckBox::frontCrossDisabledTextureScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _frontCrossDisabledRenderer->getContentSize();
|
cocos2d::Size textureSize = _frontCrossDisabledRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_frontCrossDisabledRenderer->setScale(1.0f);
|
_frontCrossDisabledRenderer->setScale(1.0f);
|
||||||
|
@ -463,4 +472,23 @@ const char* UICheckBox::getDescription() const
|
||||||
return "CheckBox";
|
return "CheckBox";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UICheckBox::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UICheckBox::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UICheckBox::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UICheckBox* checkBox = dynamic_cast<UICheckBox*>(widget);
|
||||||
|
if (checkBox)
|
||||||
|
{
|
||||||
|
loadTextureBackGround(checkBox->_backGroundFileName.c_str(), checkBox->_backGroundTexType);
|
||||||
|
loadTextureBackGroundSelected(checkBox->_backGroundSelectedFileName.c_str(), checkBox->_backGroundSelectedTexType);
|
||||||
|
loadTextureFrontCross(checkBox->_frontCrossFileName.c_str(), checkBox->_frontCrossTexType);
|
||||||
|
loadTextureBackGroundDisabled(checkBox->_backGroundDisabledFileName.c_str(), checkBox->_backGroundDisabledTexType);
|
||||||
|
loadTextureFrontCrossDisabled(checkBox->_frontCrossDisabledFileName.c_str(), checkBox->_frontCrossDisabledTexType);
|
||||||
|
setSelectedState(checkBox->_isSelected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -35,9 +35,13 @@ typedef enum
|
||||||
CHECKBOX_STATE_EVENT_UNSELECTED
|
CHECKBOX_STATE_EVENT_UNSELECTED
|
||||||
}CheckBoxEventType;
|
}CheckBoxEventType;
|
||||||
|
|
||||||
typedef void (cocos2d::CCObject::*SEL_SelectedStateEvent)(cocos2d::Object*,CheckBoxEventType);
|
typedef void (cocos2d::Object::*SEL_SelectedStateEvent)(cocos2d::Object*,CheckBoxEventType);
|
||||||
#define checkboxselectedeventselector(_SELECTOR) (SEL_SelectedStateEvent)(&_SELECTOR)
|
#define checkboxselectedeventselector(_SELECTOR) (SEL_SelectedStateEvent)(&_SELECTOR)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UICheckBox : public UIWidget
|
class UICheckBox : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -161,6 +165,7 @@ public:
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
|
@ -175,6 +180,8 @@ protected:
|
||||||
void frontCrossTextureScaleChangedWithSize();
|
void frontCrossTextureScaleChangedWithSize();
|
||||||
void backGroundDisabledTextureScaleChangedWithSize();
|
void backGroundDisabledTextureScaleChangedWithSize();
|
||||||
void frontCrossDisabledTextureScaleChangedWithSize();
|
void frontCrossDisabledTextureScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
cocos2d::Sprite* _backGroundBoxRenderer;
|
cocos2d::Sprite* _backGroundBoxRenderer;
|
||||||
cocos2d::Sprite* _backGroundSelectedBoxRenderer;
|
cocos2d::Sprite* _backGroundSelectedBoxRenderer;
|
||||||
|
@ -191,6 +198,12 @@ protected:
|
||||||
TextureResType _frontCrossTexType;
|
TextureResType _frontCrossTexType;
|
||||||
TextureResType _backGroundDisabledTexType;
|
TextureResType _backGroundDisabledTexType;
|
||||||
TextureResType _frontCrossDisabledTexType;
|
TextureResType _frontCrossDisabledTexType;
|
||||||
|
|
||||||
|
std::string _backGroundFileName;
|
||||||
|
std::string _backGroundSelectedFileName;
|
||||||
|
std::string _frontCrossFileName;
|
||||||
|
std::string _backGroundDisabledFileName;
|
||||||
|
std::string _frontCrossDisabledFileName;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,367 +0,0 @@
|
||||||
/****************************************************************************
|
|
||||||
Copyright (c) 2013 cocos2d-x.org
|
|
||||||
|
|
||||||
http://www.cocos2d-x.org
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __UIDRAGPANEL_H__
|
|
||||||
#define __UIDRAGPANEL_H__
|
|
||||||
|
|
||||||
#include "gui/Layout.h"
|
|
||||||
#include "gui/UIScrollInterface.h"
|
|
||||||
|
|
||||||
namespace gui {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* drag panel move type
|
|
||||||
*/
|
|
||||||
enum DRAGPANEL_MOVE_TYPE
|
|
||||||
{
|
|
||||||
DRAGPANEL_MOVE_TYPE_NONE,
|
|
||||||
DRAGPANEL_MOVE_TYPE_AUTOMOVE,
|
|
||||||
DRAGPANEL_MOVE_TYPE_BOUNCE,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* dragpanel berth direction
|
|
||||||
*/
|
|
||||||
enum DRAGPANEL_BERTH_DIR
|
|
||||||
{
|
|
||||||
DRAGPANEL_BERTH_DIR_NONE,
|
|
||||||
DRAGPANEL_BERTH_DIR_LEFTBOTTOM,
|
|
||||||
DRAGPANEL_BERTH_DIR_LFETTOP,
|
|
||||||
DRAGPANEL_BERTH_DIR_RIGHTBOTTOM,
|
|
||||||
DRAGPANEL_BERTH_DIR_RIGHTTOP,
|
|
||||||
DRAGPANEL_BERTH_DIR_LEFT,
|
|
||||||
DRAGPANEL_BERTH_DIR_TOP,
|
|
||||||
DRAGPANEL_BERTH_DIR_RIGHT,
|
|
||||||
DRAGPANEL_BERTH_DIR_BOTTOM,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* dragpanel bounce direction
|
|
||||||
*/
|
|
||||||
enum DRAGPANEL_BOUNCE_DIR
|
|
||||||
{
|
|
||||||
DRAGPANEL_BOUNCE_DIR_NONE,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_LEFTBOTTOM,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_LEFTTOP,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_RIGHTBOTTOM,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_RIGHTTOP,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_LEFT,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_TOP,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_RIGHT,
|
|
||||||
DRAGPANEL_BOUNCE_DIR_BOTTOM,
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
DRAGPANEL_EVENT_BERTH_LEFTBOTTOM,
|
|
||||||
DRAGPANEL_EVENT_BERTH_LFETTOP,
|
|
||||||
DRAGPANEL_EVENT_BERTH_RIGHTBOTTOM,
|
|
||||||
DRAGPANEL_EVENT_BERTH_RIGHTTOP,
|
|
||||||
DRAGPANEL_EVENT_BERTH_LEFT,
|
|
||||||
DRAGPANEL_EVENT_BERTH_TOP,
|
|
||||||
DRAGPANEL_EVENT_BERTH_RIGHT,
|
|
||||||
DRAGPANEL_EVENT_BERTH_BOTTOM,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_LEFTBOTTOM,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_LEFTTOP,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_RIGHTBOTTOM,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_RIGHTTOP,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_LEFT,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_TOP,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_RIGHT,
|
|
||||||
DRAGPANEL_EVENT_BOUNCE_BOTTOM,
|
|
||||||
}DragPanelEventType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* dragpanel event
|
|
||||||
*/
|
|
||||||
typedef void (cocos2d::Object::*SEL_DragPanelEvent)(cocos2d::Object*, DragPanelEventType);
|
|
||||||
#define dragpaneleventselector(_SELECTOR)(SEL_DragPanelEvent)(&_SELECTOR)
|
|
||||||
|
|
||||||
class UIDragPanel : public Layout, public UIScrollInterface
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
UIDragPanel();
|
|
||||||
virtual ~UIDragPanel();
|
|
||||||
|
|
||||||
static UIDragPanel* create();
|
|
||||||
|
|
||||||
virtual bool onTouchBegan(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchMoved(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchEnded(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchCancelled(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchLongClicked(const cocos2d::Point &touchPoint);
|
|
||||||
|
|
||||||
virtual void update(float dt);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add widget child override
|
|
||||||
*/
|
|
||||||
virtual bool addChild(UIWidget* widget);
|
|
||||||
/**
|
|
||||||
* remove widget child override
|
|
||||||
*/
|
|
||||||
virtual bool removeChild(UIWidget* child);
|
|
||||||
/**
|
|
||||||
* remove all widget children override
|
|
||||||
*/
|
|
||||||
virtual void removeAllChildren();
|
|
||||||
/**
|
|
||||||
* get widget children of inner container
|
|
||||||
*/
|
|
||||||
virtual cocos2d::Array* getChildren();
|
|
||||||
/* gui mark */
|
|
||||||
/**
|
|
||||||
* get and set inner container size
|
|
||||||
*/
|
|
||||||
const cocos2d::Size& getInnerContainerSize() const;
|
|
||||||
void setInnerContainerSize(const cocos2d::Size &size);
|
|
||||||
/**
|
|
||||||
* get and set inner container position
|
|
||||||
*/
|
|
||||||
const cocos2d::Point& getInnerContainerPosition() const;
|
|
||||||
void setInnerContainerPosition(const cocos2d::Point& point, bool animated);
|
|
||||||
/**
|
|
||||||
* set inner container offset
|
|
||||||
*/
|
|
||||||
void setInnerContainerOffset(const cocos2d::Point& offset, bool animated);
|
|
||||||
/**/
|
|
||||||
|
|
||||||
// auto move
|
|
||||||
/**
|
|
||||||
* set auto move duration
|
|
||||||
*/
|
|
||||||
void setAutoMoveDuration(float duration);
|
|
||||||
/**
|
|
||||||
* set auto move ease rate
|
|
||||||
*/
|
|
||||||
void setAutoMoveEaseRate(float rate);
|
|
||||||
|
|
||||||
// berth
|
|
||||||
/**
|
|
||||||
* get berth or not
|
|
||||||
*/
|
|
||||||
bool isBerth();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* event
|
|
||||||
*/
|
|
||||||
void addEventListener(cocos2d::Object* target, SEL_DragPanelEvent selector);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get and set bounce enable
|
|
||||||
*/
|
|
||||||
bool isBounceEnable();
|
|
||||||
void setBounceEnable(bool bounce);
|
|
||||||
/**
|
|
||||||
* set bounce duration
|
|
||||||
*/
|
|
||||||
void setBounceDuratoin(float duration);
|
|
||||||
/**
|
|
||||||
* set bounce ease rate
|
|
||||||
*/
|
|
||||||
void setBounceEaseRate(float rate);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets inner container of dragpanel.
|
|
||||||
*
|
|
||||||
* Inner container is the container of dragpanel's children.
|
|
||||||
*
|
|
||||||
* @return inner container.
|
|
||||||
*/
|
|
||||||
Layout* getInnerContainer();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets LayoutType.
|
|
||||||
*
|
|
||||||
* @see LayoutType
|
|
||||||
*
|
|
||||||
* @param LayoutType
|
|
||||||
*/
|
|
||||||
virtual void setLayoutType(LayoutType type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets LayoutType.
|
|
||||||
*
|
|
||||||
* @see LayoutType
|
|
||||||
*
|
|
||||||
* @return LayoutType
|
|
||||||
*/
|
|
||||||
virtual LayoutType getLayoutType() const;
|
|
||||||
|
|
||||||
virtual void doLayout();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the "class name" of widget.
|
|
||||||
*/
|
|
||||||
virtual const char* getDescription() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual bool init();
|
|
||||||
virtual void initRenderer();
|
|
||||||
virtual void releaseResoures();
|
|
||||||
|
|
||||||
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void handleMoveLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void handleReleaseLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void interceptTouchEvent(int handleState,UIWidget* sender, const cocos2d::Point &touchPoint);
|
|
||||||
/* gui mark */
|
|
||||||
// virtual bool isInScrollDegreeRange(UIWidget* widget);
|
|
||||||
/**/
|
|
||||||
virtual void checkChildInfo(int handleState, UIWidget *sender, const cocos2d::Point &touchPoint);
|
|
||||||
// void updateWidthAndHeight();
|
|
||||||
void recordSlidTime(float dt);
|
|
||||||
|
|
||||||
/* gui mark */
|
|
||||||
void setInnerContainerOffset(const cocos2d::Point& offset);
|
|
||||||
/**/
|
|
||||||
|
|
||||||
// check if dragpanel rect contain inner rect
|
|
||||||
bool checkContainInnerRect();
|
|
||||||
|
|
||||||
// move
|
|
||||||
void moveWithDelta(const cocos2d::Point& delta);
|
|
||||||
|
|
||||||
// auto move
|
|
||||||
void autoMove();
|
|
||||||
void autoMoveOver();
|
|
||||||
void startAutoMove();
|
|
||||||
void stopAutoMove();
|
|
||||||
|
|
||||||
// berth
|
|
||||||
// check if move to boundary with update
|
|
||||||
bool checkToBoundaryWithDeltaPosition(const cocos2d::Point& delta);
|
|
||||||
|
|
||||||
// calculate to boundary delta
|
|
||||||
cocos2d::Point calculateToBoundaryDeltaPosition(const cocos2d::Point& paramDelta);
|
|
||||||
|
|
||||||
// check berth
|
|
||||||
bool checkBerth();
|
|
||||||
|
|
||||||
// berth event
|
|
||||||
void berthEvent();
|
|
||||||
void berthToLeftEvent();
|
|
||||||
void berthToRightEvent();
|
|
||||||
void berthToTopEvent();
|
|
||||||
void berthToBottomEvent();
|
|
||||||
void berthToLeftBottomEvent();
|
|
||||||
void berthToLeftTopEvent();
|
|
||||||
void berthToRightBottomEvent();
|
|
||||||
void berthToRightTopEvent();
|
|
||||||
|
|
||||||
// bounce
|
|
||||||
bool checkNeedBounce();
|
|
||||||
void startBounce();
|
|
||||||
void stopBounce();
|
|
||||||
void bounceToCorner();
|
|
||||||
void bounceOver();
|
|
||||||
// bounce event
|
|
||||||
void bounceToLeftBottomEvent();
|
|
||||||
void bounceToRightBottomEvent();
|
|
||||||
void bounceToLeftTopEvent();
|
|
||||||
void bounceToRightTopEvent();
|
|
||||||
void bounceToLeftEvent();
|
|
||||||
void bounceToTopEvent();
|
|
||||||
void bounceToRightEvent();
|
|
||||||
void bounceToBottomEvent();
|
|
||||||
|
|
||||||
void actionWithDuration(float duration);
|
|
||||||
bool actionIsDone();
|
|
||||||
void actionStartWithWidget(UIWidget* widget);
|
|
||||||
void actionStep(float dt);
|
|
||||||
void actionUpdate(float dt);
|
|
||||||
void actionStop();
|
|
||||||
void actionDone();
|
|
||||||
void moveByWithDuration(float duration, const cocos2d::Point& deltaPosition);
|
|
||||||
void moveByInit();
|
|
||||||
void moveByUpdate(float t);
|
|
||||||
void moveToWithDuration(float duration, const cocos2d::Point& position);
|
|
||||||
void moveToInit();
|
|
||||||
void moveToUpdate(float t);
|
|
||||||
virtual void onSizeChanged();
|
|
||||||
/*compatible*/
|
|
||||||
/**
|
|
||||||
* These methods will be removed
|
|
||||||
*/
|
|
||||||
virtual void setClippingEnable(bool is){setClippingEnabled(is);};
|
|
||||||
/************/
|
|
||||||
virtual void setClippingEnabled(bool able){Layout::setClippingEnabled(able);};
|
|
||||||
protected:
|
|
||||||
Layout* _innerContainer;
|
|
||||||
|
|
||||||
/*
|
|
||||||
DRAGPANEL_DIR m_eDirection;
|
|
||||||
DRAGPANEL_MOVE_DIR m_eMoveDirection;
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool _touchPressed;
|
|
||||||
bool _touchMoved;
|
|
||||||
bool _touchReleased;
|
|
||||||
bool _touchCanceld; // check touch out of drag panel boundary
|
|
||||||
|
|
||||||
cocos2d::Point _touchStartNodeSpace;
|
|
||||||
cocos2d::Point _touchStartWorldSpace;
|
|
||||||
cocos2d::Point _touchEndWorldSpace;
|
|
||||||
|
|
||||||
float _slidTime;
|
|
||||||
|
|
||||||
// move type
|
|
||||||
DRAGPANEL_MOVE_TYPE _moveType;
|
|
||||||
|
|
||||||
// auto move
|
|
||||||
float _autoMoveDuration;
|
|
||||||
float _autoMoveEaseRate;
|
|
||||||
|
|
||||||
// event
|
|
||||||
cocos2d::Object* _eventLister;
|
|
||||||
SEL_DragPanelEvent _eventSelector;
|
|
||||||
|
|
||||||
// berth
|
|
||||||
DRAGPANEL_BERTH_DIR _berthDirection;
|
|
||||||
|
|
||||||
// bounce
|
|
||||||
bool _bounceEnable;
|
|
||||||
DRAGPANEL_BOUNCE_DIR _bounceDirection;
|
|
||||||
float _bounceDuration;
|
|
||||||
float _bounceEaseRate;
|
|
||||||
|
|
||||||
|
|
||||||
float _runningAction;
|
|
||||||
int _actionType;
|
|
||||||
|
|
||||||
UIWidget* _actionWidget;
|
|
||||||
|
|
||||||
float _duration;
|
|
||||||
float _elapsed;
|
|
||||||
bool _firstTick;
|
|
||||||
|
|
||||||
cocos2d::Point _positionDelta;
|
|
||||||
cocos2d::Point _startPosition;
|
|
||||||
cocos2d::Point _previousPosition;
|
|
||||||
|
|
||||||
cocos2d::Point _endPosition;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* defined(__TestCpp__UIDragPanel__) */
|
|
|
@ -22,112 +22,10 @@
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "gui/UIHelper.h"
|
#include "CocosGUI.h"
|
||||||
#include "cocos2d.h"
|
|
||||||
#include "cocostudio/DictionaryHelper.h"
|
|
||||||
#include "cocostudio/CCSGUIReader.h"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocostudio;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
static UIHelper* helperInstance = NULL;
|
|
||||||
|
|
||||||
UIHelper* UIHelper::instance()
|
|
||||||
{
|
|
||||||
if (!helperInstance)
|
|
||||||
{
|
|
||||||
helperInstance = new UIHelper();
|
|
||||||
}
|
|
||||||
return helperInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::purgeUIHelper()
|
|
||||||
{
|
|
||||||
CC_SAFE_DELETE(helperInstance);
|
|
||||||
}
|
|
||||||
|
|
||||||
UIHelper::UIHelper():
|
|
||||||
_textureFiles(NULL),
|
|
||||||
_fileDesignHeight(0.0f),
|
|
||||||
_fileDesignWidth(0.0f)
|
|
||||||
{
|
|
||||||
Size winSize = Director::getInstance()->getWinSize();
|
|
||||||
_fileDesignWidth = winSize.width;
|
|
||||||
_fileDesignHeight = winSize.height;
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
UIHelper::~UIHelper()
|
|
||||||
{
|
|
||||||
cocostudio::CCSGUIReader::purgeCCSGUIReader();
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::init()
|
|
||||||
{
|
|
||||||
_textureFiles = CCArray::create();
|
|
||||||
_textureFiles->retain();
|
|
||||||
}
|
|
||||||
|
|
||||||
UIWidget* UIHelper::createWidgetFromJsonFile(const char *fileName)
|
|
||||||
{
|
|
||||||
return CCSGUIReader::shareReader()->widgetFromJsonFile(fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::addSpriteFrame(const char *fileName)
|
|
||||||
{
|
|
||||||
if (!fileName || strcmp(fileName, "") == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ccArray* arrayTextures = _textureFiles->data;
|
|
||||||
int length = arrayTextures->num;
|
|
||||||
for (int i=0;i<length;i++)
|
|
||||||
{
|
|
||||||
String* file = (String*)(arrayTextures->arr[i]);
|
|
||||||
if (strcmp(file->_string.c_str(), fileName) == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_textureFiles->addObject(CCString::create(fileName));
|
|
||||||
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::removeSpriteFrame(const char *fileName)
|
|
||||||
{
|
|
||||||
if (!fileName || strcmp(fileName, "") == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ccArray* arrayTextures = _textureFiles->data;
|
|
||||||
int length = arrayTextures->num;
|
|
||||||
for (int i=0;i<length;i++)
|
|
||||||
{
|
|
||||||
String* file = (String*)(arrayTextures->arr[i]);
|
|
||||||
if (strcmp(file->_string.c_str(), fileName) == 0)
|
|
||||||
{
|
|
||||||
SpriteFrameCache::getInstance()->removeSpriteFrameByName(fileName);
|
|
||||||
_textureFiles->removeObject(file);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::removeAllSpriteFrame()
|
|
||||||
{
|
|
||||||
ccArray* arrayTextures = _textureFiles->data;
|
|
||||||
int length = arrayTextures->num;
|
|
||||||
for (int i=0;i<length;i++)
|
|
||||||
{
|
|
||||||
String* file = (String*)(arrayTextures->arr[i]);
|
|
||||||
SpriteFrameCache::getInstance()->removeSpriteFrameByName(file->_string.c_str());
|
|
||||||
}
|
|
||||||
_textureFiles->removeAllObjects();
|
|
||||||
}
|
|
||||||
|
|
||||||
UIWidget* UIHelper::seekWidgetByTag(UIWidget* root, int tag)
|
UIWidget* UIHelper::seekWidgetByTag(UIWidget* root, int tag)
|
||||||
{
|
{
|
||||||
if (!root)
|
if (!root)
|
||||||
|
@ -138,7 +36,7 @@ UIWidget* UIHelper::seekWidgetByTag(UIWidget* root, int tag)
|
||||||
{
|
{
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
ccArray* arrayRootChildren = root->getChildren()->data;
|
cocos2d::ccArray* arrayRootChildren = root->getChildren()->data;
|
||||||
int length = arrayRootChildren->num;
|
int length = arrayRootChildren->num;
|
||||||
for (int i=0;i<length;i++)
|
for (int i=0;i<length;i++)
|
||||||
{
|
{
|
||||||
|
@ -162,7 +60,7 @@ UIWidget* UIHelper::seekWidgetByName(UIWidget* root, const char *name)
|
||||||
{
|
{
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
ccArray* arrayRootChildren = root->getChildren()->data;
|
cocos2d::ccArray* arrayRootChildren = root->getChildren()->data;
|
||||||
int length = arrayRootChildren->num;
|
int length = arrayRootChildren->num;
|
||||||
for (int i=0;i<length;i++)
|
for (int i=0;i<length;i++)
|
||||||
{
|
{
|
||||||
|
@ -182,12 +80,12 @@ UIWidget* UIHelper::seekWidgetByRelativeName(UIWidget *root, const char *name)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ccArray* arrayRootChildren = root->getChildren()->data;
|
cocos2d::ccArray* arrayRootChildren = root->getChildren()->data;
|
||||||
int length = arrayRootChildren->num;
|
int length = arrayRootChildren->num;
|
||||||
for (int i=0;i<length;i++)
|
for (int i=0;i<length;i++)
|
||||||
{
|
{
|
||||||
UIWidget* child = (UIWidget*)(arrayRootChildren->arr[i]);
|
UIWidget* child = (UIWidget*)(arrayRootChildren->arr[i]);
|
||||||
RelativeLayoutParameter* layoutParameter = dynamic_cast<RelativeLayoutParameter*>(child->getLayoutParameter());
|
UIRelativeLayoutParameter* layoutParameter = dynamic_cast<UIRelativeLayoutParameter*>(child->getLayoutParameter(LAYOUT_PARAMETER_RELATIVE));
|
||||||
if (layoutParameter && strcmp(layoutParameter->getRelativeName(), name) == 0)
|
if (layoutParameter && strcmp(layoutParameter->getRelativeName(), name) == 0)
|
||||||
{
|
{
|
||||||
return child;
|
return child;
|
||||||
|
@ -196,26 +94,6 @@ UIWidget* UIHelper::seekWidgetByRelativeName(UIWidget *root, const char *name)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIHelper::setFileDesignWidth(float width)
|
|
||||||
{
|
|
||||||
_fileDesignWidth = width;
|
|
||||||
}
|
|
||||||
|
|
||||||
float UIHelper::getFileDesignWidth()
|
|
||||||
{
|
|
||||||
return _fileDesignWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIHelper::setFileDesignHeight(float height)
|
|
||||||
{
|
|
||||||
_fileDesignHeight = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
float UIHelper::getFileDesignHeight()
|
|
||||||
{
|
|
||||||
return _fileDesignHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*temp action*/
|
/*temp action*/
|
||||||
UIWidget* UIHelper::seekActionWidgetByActionTag(UIWidget* root, int tag)
|
UIWidget* UIHelper::seekActionWidgetByActionTag(UIWidget* root, int tag)
|
||||||
{
|
{
|
||||||
|
@ -227,7 +105,7 @@ UIWidget* UIHelper::seekActionWidgetByActionTag(UIWidget* root, int tag)
|
||||||
{
|
{
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
ccArray* arrayRootChildren = root->getChildren()->data;
|
cocos2d::ccArray* arrayRootChildren = root->getChildren()->data;
|
||||||
int length = arrayRootChildren->num;
|
int length = arrayRootChildren->num;
|
||||||
for (int i=0;i<length;i++)
|
for (int i=0;i<length;i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,52 +25,15 @@
|
||||||
#ifndef __UIHELPER_H__
|
#ifndef __UIHELPER_H__
|
||||||
#define __UIHELPER_H__
|
#define __UIHELPER_H__
|
||||||
|
|
||||||
#include "gui/UIInputManager.h"
|
|
||||||
#include "cocostudio/CSContentJsonDictionary.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define CCUIHELPER gui::UIHelper::instance()
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UIHelper
|
class UIHelper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
|
||||||
* Default constructor
|
|
||||||
*/
|
|
||||||
UIHelper();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default destructor
|
|
||||||
*/
|
|
||||||
virtual ~UIHelper();
|
|
||||||
|
|
||||||
//initializes state of UIHelper.
|
|
||||||
void init();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load a widget with json file.
|
|
||||||
*
|
|
||||||
* @return a widget created with json file.
|
|
||||||
*/
|
|
||||||
UIWidget* createWidgetFromJsonFile(const char* fileName);
|
|
||||||
|
|
||||||
//get instance
|
|
||||||
static UIHelper* instance();
|
|
||||||
|
|
||||||
//release instance
|
|
||||||
static void purgeUIHelper();
|
|
||||||
|
|
||||||
//add a plist file for loading widget's texture.
|
|
||||||
void addSpriteFrame(const char* fileName);
|
|
||||||
|
|
||||||
//remove a plist file for loading widget's texture.
|
|
||||||
void removeSpriteFrame(const char* fileName);
|
|
||||||
|
|
||||||
//remove all plist files for loading widget's texture.
|
|
||||||
void removeAllSpriteFrame();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a widget whose tag equals to param tag from root widget.
|
* Finds a widget whose tag equals to param tag from root widget.
|
||||||
*
|
*
|
||||||
|
@ -80,7 +43,7 @@ public:
|
||||||
*
|
*
|
||||||
* @return finded result.
|
* @return finded result.
|
||||||
*/
|
*/
|
||||||
UIWidget* seekWidgetByTag(UIWidget* root, int tag);
|
static UIWidget* seekWidgetByTag(UIWidget* root, int tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a widget whose name equals to param name from root widget.
|
* Finds a widget whose name equals to param name from root widget.
|
||||||
|
@ -91,7 +54,7 @@ public:
|
||||||
*
|
*
|
||||||
* @return finded result.
|
* @return finded result.
|
||||||
*/
|
*/
|
||||||
UIWidget* seekWidgetByName(UIWidget* root, const char* name);
|
static UIWidget* seekWidgetByName(UIWidget* root, const char* name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a widget whose name equals to param name from root widget.
|
* Finds a widget whose name equals to param name from root widget.
|
||||||
|
@ -104,19 +67,10 @@ public:
|
||||||
*
|
*
|
||||||
* @return finded result.
|
* @return finded result.
|
||||||
*/
|
*/
|
||||||
UIWidget* seekWidgetByRelativeName(UIWidget* root, const char* name);
|
static UIWidget* seekWidgetByRelativeName(UIWidget* root, const char* name);
|
||||||
void setFileDesignWidth(float width);
|
|
||||||
float getFileDesignWidth();
|
|
||||||
void setFileDesignHeight(float height);
|
|
||||||
float getFileDesignHeight();
|
|
||||||
/*temp action*/
|
|
||||||
UIWidget* seekActionWidgetByActionTag(UIWidget* root, int tag);
|
|
||||||
protected:
|
|
||||||
|
|
||||||
float _fileDesignWidth;
|
/*temp action*/
|
||||||
float _fileDesignHeight;
|
static UIWidget* seekActionWidgetByActionTag(UIWidget* root, int tag);
|
||||||
//texture
|
|
||||||
cocos2d::Array* _textureFiles;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,11 +25,9 @@
|
||||||
#include "gui/UIImageView.h"
|
#include "gui/UIImageView.h"
|
||||||
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocos2d::extension;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
||||||
#define DYNAMIC_CAST_CCSPRITE dynamic_cast<cocos2d::Sprite*>(_imageRenderer)
|
#define DYNAMIC_CAST_CCSPRITE dynamic_cast<cocos2d::Sprite*>(_imageRenderer)
|
||||||
#define DYNAMIC_CAST_SCALE9SPRITE dynamic_cast<cocos2d::extension::Scale9Sprite*>(_imageRenderer)
|
#define DYNAMIC_CAST_SCALE9SPRITE dynamic_cast<cocos2d::extension::Scale9Sprite*>(_imageRenderer)
|
||||||
|
|
||||||
|
@ -41,7 +39,7 @@ _touchRelease(false),
|
||||||
_doubleClickEnabled(false),
|
_doubleClickEnabled(false),
|
||||||
_scale9Enabled(false),
|
_scale9Enabled(false),
|
||||||
_prevIgnoreSize(true),
|
_prevIgnoreSize(true),
|
||||||
_capInsets(Rect::ZERO),
|
_capInsets(cocos2d::Rect::ZERO),
|
||||||
_imageRenderer(NULL),
|
_imageRenderer(NULL),
|
||||||
_textureFile(""),
|
_textureFile(""),
|
||||||
_imageTexType(UI_TEX_TYPE_LOCAL),
|
_imageTexType(UI_TEX_TYPE_LOCAL),
|
||||||
|
@ -70,7 +68,7 @@ UIImageView* UIImageView::create()
|
||||||
void UIImageView::initRenderer()
|
void UIImageView::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_imageRenderer = Sprite::create();
|
_imageRenderer = cocos2d::Sprite::create();
|
||||||
_renderer->addChild(_imageRenderer);
|
_renderer->addChild(_imageRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,6 +88,7 @@ void UIImageView::loadTexture(const char *fileName, TextureResType texType)
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->initWithFile(fileName);
|
DYNAMIC_CAST_SCALE9SPRITE->initWithFile(fileName);
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->setColor(getColor());
|
DYNAMIC_CAST_SCALE9SPRITE->setColor(getColor());
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->setOpacity(getOpacity());
|
DYNAMIC_CAST_SCALE9SPRITE->setOpacity(getOpacity());
|
||||||
|
DYNAMIC_CAST_SCALE9SPRITE->setCapInsets(_capInsets);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -104,6 +103,7 @@ void UIImageView::loadTexture(const char *fileName, TextureResType texType)
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->initWithSpriteFrameName(fileName);
|
DYNAMIC_CAST_SCALE9SPRITE->initWithSpriteFrameName(fileName);
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->setColor(getColor());
|
DYNAMIC_CAST_SCALE9SPRITE->setColor(getColor());
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->setOpacity(getOpacity());
|
DYNAMIC_CAST_SCALE9SPRITE->setOpacity(getOpacity());
|
||||||
|
DYNAMIC_CAST_SCALE9SPRITE->setCapInsets(_capInsets);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -120,7 +120,7 @@ void UIImageView::loadTexture(const char *fileName, TextureResType texType)
|
||||||
imageTextureScaleChangedWithSize();
|
imageTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIImageView::setTextureRect(const Rect &rect)
|
void UIImageView::setTextureRect(const cocos2d::Rect &rect)
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
|
@ -131,7 +131,7 @@ void UIImageView::setTextureRect(const Rect &rect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIImageView::onTouchBegan(const Point &touchPoint)
|
bool UIImageView::onTouchBegan(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
setFocused(true);
|
setFocused(true);
|
||||||
_touchStartPos.x = touchPoint.x;
|
_touchStartPos.x = touchPoint.x;
|
||||||
|
@ -149,7 +149,7 @@ bool UIImageView::onTouchBegan(const Point &touchPoint)
|
||||||
return _touchPassedEnabled;
|
return _touchPassedEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIImageView::onTouchEnded(const Point &touchPoint)
|
void UIImageView::onTouchEnded(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
if (_doubleClickEnabled)
|
if (_doubleClickEnabled)
|
||||||
{
|
{
|
||||||
|
@ -278,11 +278,11 @@ void UIImageView::setScale9Enabled(bool able)
|
||||||
_imageRenderer = NULL;
|
_imageRenderer = NULL;
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
_imageRenderer = extension::Scale9Sprite::create();
|
_imageRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_imageRenderer = CCSprite::create();
|
_imageRenderer = cocos2d::Sprite::create();
|
||||||
}
|
}
|
||||||
loadTexture(_textureFile.c_str(),_imageTexType);
|
loadTexture(_textureFile.c_str(),_imageTexType);
|
||||||
_renderer->addChild(_imageRenderer);
|
_renderer->addChild(_imageRenderer);
|
||||||
|
@ -308,7 +308,7 @@ void UIImageView::ignoreContentAdaptWithSize(bool ignore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIImageView::setCapInsets(const Rect &capInsets)
|
void UIImageView::setCapInsets(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsets = capInsets;
|
_capInsets = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
|
@ -318,7 +318,7 @@ void UIImageView::setCapInsets(const Rect &capInsets)
|
||||||
DYNAMIC_CAST_SCALE9SPRITE->setCapInsets(capInsets);
|
DYNAMIC_CAST_SCALE9SPRITE->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIImageView::setAnchorPoint(const Point &pt)
|
void UIImageView::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_imageRenderer->setAnchorPoint(pt);
|
_imageRenderer->setAnchorPoint(pt);
|
||||||
|
@ -329,12 +329,12 @@ void UIImageView::onSizeChanged()
|
||||||
imageTextureScaleChangedWithSize();
|
imageTextureScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UIImageView::getContentSize() const
|
const cocos2d::Size& UIImageView::getContentSize() const
|
||||||
{
|
{
|
||||||
return _imageTextureSize;
|
return _imageTextureSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UIImageView::getVirtualRenderer()
|
cocos2d::Node* UIImageView::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _imageRenderer;
|
return _imageRenderer;
|
||||||
}
|
}
|
||||||
|
@ -353,11 +353,11 @@ void UIImageView::imageTextureScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_imageRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_imageRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _imageRenderer->getContentSize();
|
cocos2d::Size textureSize = _imageRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_imageRenderer->setScale(1.0f);
|
_imageRenderer->setScale(1.0f);
|
||||||
|
@ -376,4 +376,21 @@ const char* UIImageView::getDescription() const
|
||||||
return "ImageView";
|
return "ImageView";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UIImageView::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UIImageView::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIImageView::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UIImageView* imageView = dynamic_cast<UIImageView*>(widget);
|
||||||
|
if (imageView)
|
||||||
|
{
|
||||||
|
_prevIgnoreSize = imageView->_prevIgnoreSize;
|
||||||
|
setScale9Enabled(imageView->_scale9Enabled);
|
||||||
|
loadTexture(imageView->_textureFile.c_str(), imageView->_imageTexType);
|
||||||
|
setCapInsets(imageView->_capInsets);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -29,6 +29,10 @@
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UIImageView : public UIWidget
|
class UIImageView : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -100,22 +104,22 @@ public:
|
||||||
//override "ignoreContentAdaptWithSize" method of widget.
|
//override "ignoreContentAdaptWithSize" method of widget.
|
||||||
virtual void ignoreContentAdaptWithSize(bool ignore);
|
virtual void ignoreContentAdaptWithSize(bool ignore);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the "class name" of widget.
|
||||||
|
*/
|
||||||
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
void setDoubleClickEnabled(bool able);
|
void setDoubleClickEnabled(bool able);
|
||||||
void doubleClickEvent();
|
void doubleClickEvent();
|
||||||
void checkDoubleClick(float dt);
|
void checkDoubleClick(float dt);
|
||||||
virtual const cocos2d::Size& getContentSize() const;
|
virtual const cocos2d::Size& getContentSize() const;
|
||||||
virtual cocos2d::Node* getVirtualRenderer();
|
virtual cocos2d::Node* getVirtualRenderer();
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the "class name" of widget.
|
|
||||||
*/
|
|
||||||
virtual const char* getDescription() const;
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void imageTextureScaleChangedWithSize();
|
void imageTextureScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
int _clickCount;
|
int _clickCount;
|
||||||
float _clickTimeInterval;
|
float _clickTimeInterval;
|
||||||
|
|
|
@ -37,11 +37,11 @@ _longClickRecordTime(0.0),
|
||||||
_checkedDoubleClickWidget(NULL),
|
_checkedDoubleClickWidget(NULL),
|
||||||
_rootWidget(NULL)
|
_rootWidget(NULL)
|
||||||
{
|
{
|
||||||
_manageredWidget = CCArray::create();
|
_manageredWidget = Array::create();
|
||||||
_manageredWidget->retain();
|
_manageredWidget->retain();
|
||||||
_checkedDoubleClickWidget = CCArray::create();
|
_checkedDoubleClickWidget = Array::create();
|
||||||
_checkedDoubleClickWidget->retain();
|
_checkedDoubleClickWidget->retain();
|
||||||
_selectedWidgets = CCArray::create();
|
_selectedWidgets = Array::create();
|
||||||
_selectedWidgets->retain();
|
_selectedWidgets->retain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#define __UIINPUTMANAGER_H__
|
#define __UIINPUTMANAGER_H__
|
||||||
|
|
||||||
#include "cocos2d.h"
|
#include "cocos2d.h"
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
~UIInputManager();
|
virtual ~UIInputManager();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Regist a widget to input manager.
|
* Regist a widget to input manager.
|
||||||
|
|
|
@ -24,10 +24,9 @@
|
||||||
|
|
||||||
#include "gui/UILabel.h"
|
#include "gui/UILabel.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
||||||
UILabel::UILabel():
|
UILabel::UILabel():
|
||||||
_touchScaleChangeEnabled(false),
|
_touchScaleChangeEnabled(false),
|
||||||
_normalScaleValue(1.0f),
|
_normalScaleValue(1.0f),
|
||||||
|
@ -67,7 +66,7 @@ bool UILabel::init()
|
||||||
void UILabel::initRenderer()
|
void UILabel::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_labelRenderer = CCLabelTTF::create();
|
_labelRenderer = cocos2d::LabelTTF::create();
|
||||||
_renderer->addChild(_labelRenderer);
|
_renderer->addChild(_labelRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,29 +94,31 @@ int UILabel::getStringLength()
|
||||||
|
|
||||||
void UILabel::setFontSize(int size)
|
void UILabel::setFontSize(int size)
|
||||||
{
|
{
|
||||||
|
_fontSize = size;
|
||||||
_labelRenderer->setFontSize(size);
|
_labelRenderer->setFontSize(size);
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabel::setFontName(const char* name)
|
void UILabel::setFontName(const char* name)
|
||||||
{
|
{
|
||||||
|
_fontName = name;
|
||||||
_labelRenderer->setFontName(name);
|
_labelRenderer->setFontName(name);
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabel::setTextAreaSize(const Size &size)
|
void UILabel::setTextAreaSize(const cocos2d::Size &size)
|
||||||
{
|
{
|
||||||
_labelRenderer->setDimensions(size);
|
_labelRenderer->setDimensions(size);
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabel::setTextHorizontalAlignment(TextHAlignment alignment)
|
void UILabel::setTextHorizontalAlignment(cocos2d::TextHAlignment alignment)
|
||||||
{
|
{
|
||||||
_labelRenderer->setHorizontalAlignment(alignment);
|
_labelRenderer->setHorizontalAlignment(alignment);
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabel::setTextVerticalAlignment(TextVAlignment alignment)
|
void UILabel::setTextVerticalAlignment(cocos2d::TextVAlignment alignment)
|
||||||
{
|
{
|
||||||
_labelRenderer->setVerticalAlignment(alignment);
|
_labelRenderer->setVerticalAlignment(alignment);
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
|
@ -182,7 +183,7 @@ bool UILabel::isFlipY()
|
||||||
return _labelRenderer->isFlippedY();
|
return _labelRenderer->isFlippedY();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabel::setAnchorPoint(const Point &pt)
|
void UILabel::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_labelRenderer->setAnchorPoint(pt);
|
_labelRenderer->setAnchorPoint(pt);
|
||||||
|
@ -193,12 +194,12 @@ void UILabel::onSizeChanged()
|
||||||
labelScaleChangedWithSize();
|
labelScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UILabel::getContentSize() const
|
const cocos2d::Size& UILabel::getContentSize() const
|
||||||
{
|
{
|
||||||
return _labelRenderer->getContentSize();
|
return _labelRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UILabel::getVirtualRenderer()
|
cocos2d::Node* UILabel::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _labelRenderer;
|
return _labelRenderer;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +213,7 @@ void UILabel::labelScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _labelRenderer->getContentSize();
|
cocos2d::Size textureSize = _labelRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_labelRenderer->setScale(1.0f);
|
_labelRenderer->setScale(1.0f);
|
||||||
|
@ -223,6 +224,7 @@ void UILabel::labelScaleChangedWithSize()
|
||||||
_labelRenderer->setScaleX(scaleX);
|
_labelRenderer->setScaleX(scaleX);
|
||||||
_labelRenderer->setScaleY(scaleY);
|
_labelRenderer->setScaleY(scaleY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* UILabel::getDescription() const
|
const char* UILabel::getDescription() const
|
||||||
|
@ -230,4 +232,21 @@ const char* UILabel::getDescription() const
|
||||||
return "Label";
|
return "Label";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UILabel::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UILabel::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UILabel::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UILabel* label = dynamic_cast<UILabel*>(widget);
|
||||||
|
if (label)
|
||||||
|
{
|
||||||
|
setFontName(label->_fontName.c_str());
|
||||||
|
setFontSize(label->_labelRenderer->getFontSize());
|
||||||
|
setText(label->getStringValue());
|
||||||
|
setTouchScaleChangeEnabled(label->_touchScaleChangeEnabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -27,8 +27,13 @@
|
||||||
|
|
||||||
#include "gui/UIWidget.h"
|
#include "gui/UIWidget.h"
|
||||||
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UILabel : public UIWidget
|
class UILabel : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -125,10 +130,6 @@ public:
|
||||||
void setTextAreaSize(const cocos2d::Size &size);
|
void setTextAreaSize(const cocos2d::Size &size);
|
||||||
void setTextHorizontalAlignment(cocos2d::TextHAlignment alignment);
|
void setTextHorizontalAlignment(cocos2d::TextHAlignment alignment);
|
||||||
void setTextVerticalAlignment(cocos2d::TextVAlignment alignment);
|
void setTextVerticalAlignment(cocos2d::TextVAlignment alignment);
|
||||||
|
|
||||||
|
|
||||||
void setTouchScaleChangeAble(bool able){setTouchScaleChangeEnabled(able);};
|
|
||||||
bool getTouchScaleChangeAble(){return isTouchScaleChangeEnabled();};
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
|
@ -138,6 +139,8 @@ protected:
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void clickScale(float scale);
|
void clickScale(float scale);
|
||||||
void labelScaleChangedWithSize();
|
void labelScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
bool _touchScaleChangeEnabled;
|
bool _touchScaleChangeEnabled;
|
||||||
float _normalScaleValue;
|
float _normalScaleValue;
|
||||||
|
|
|
@ -24,10 +24,9 @@
|
||||||
|
|
||||||
#include "gui/UILabelAtlas.h"
|
#include "gui/UILabelAtlas.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
||||||
UICCLabelAtlas::UICCLabelAtlas()
|
UICCLabelAtlas::UICCLabelAtlas()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -56,7 +55,7 @@ void UICCLabelAtlas::setProperty(const char *string, const char *charMapFile, un
|
||||||
initWithString(string, charMapFile, itemWidth, itemHeight, startCharMap);
|
initWithString(string, charMapFile, itemWidth, itemHeight, startCharMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCLabelAtlas::setProperty(const char *string, Texture2D *texture, unsigned int itemWidth, unsigned int itemHeight, unsigned int startCharMap)
|
void UICCLabelAtlas::setProperty(const char *string, cocos2d::Texture2D *texture, unsigned int itemWidth, unsigned int itemHeight, unsigned int startCharMap)
|
||||||
{
|
{
|
||||||
initWithString(string, texture, itemWidth, itemHeight, startCharMap);
|
initWithString(string, texture, itemWidth, itemHeight, startCharMap);
|
||||||
}
|
}
|
||||||
|
@ -68,20 +67,26 @@ void UICCLabelAtlas::draw()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CCAtlasNode::draw();
|
cocos2d::AtlasNode::draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCLabelAtlas::updateDisplayedOpacity(GLubyte opacity)
|
void UICCLabelAtlas::updateDisplayedOpacity(GLubyte opacity)
|
||||||
{
|
{
|
||||||
CCAtlasNode::setOpacity(opacity);
|
cocos2d::AtlasNode::setOpacity(opacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
UILabelAtlas::UILabelAtlas():
|
UILabelAtlas::UILabelAtlas():
|
||||||
_laberAtlasRenderer(NULL)
|
_laberAtlasRenderer(NULL),
|
||||||
|
_stringValue(""),
|
||||||
|
_charMapFileName(""),
|
||||||
|
_itemWidth(0),
|
||||||
|
_itemHeight(0),
|
||||||
|
_startCharMap("")
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UILabelAtlas::~UILabelAtlas()
|
UILabelAtlas::~UILabelAtlas()
|
||||||
|
@ -108,8 +113,13 @@ void UILabelAtlas::initRenderer()
|
||||||
_renderer->addChild(_laberAtlasRenderer);
|
_renderer->addChild(_laberAtlasRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabelAtlas::setProperty(const char *stringValue, const char *charMapFile, int itemWidth, int itemHeight, const char *startCharMap,bool useSpriteFrame)
|
void UILabelAtlas::setProperty(const char *stringValue, const char *charMapFile, int itemWidth, int itemHeight, const char *startCharMap)
|
||||||
{
|
{
|
||||||
|
_stringValue = stringValue;
|
||||||
|
_charMapFileName = charMapFile;
|
||||||
|
_itemWidth = itemWidth;
|
||||||
|
_itemHeight = itemHeight;
|
||||||
|
_startCharMap = startCharMap;
|
||||||
_laberAtlasRenderer->setProperty(stringValue, charMapFile, itemWidth, itemHeight, (int)(startCharMap[0]));
|
_laberAtlasRenderer->setProperty(stringValue, charMapFile, itemWidth, itemHeight, (int)(startCharMap[0]));
|
||||||
updateAnchorPoint();
|
updateAnchorPoint();
|
||||||
labelAtlasScaleChangedWithSize();
|
labelAtlasScaleChangedWithSize();
|
||||||
|
@ -117,6 +127,7 @@ void UILabelAtlas::setProperty(const char *stringValue, const char *charMapFile,
|
||||||
|
|
||||||
void UILabelAtlas::setStringValue(const char *value)
|
void UILabelAtlas::setStringValue(const char *value)
|
||||||
{
|
{
|
||||||
|
_stringValue = value;
|
||||||
_laberAtlasRenderer->setString(value);
|
_laberAtlasRenderer->setString(value);
|
||||||
labelAtlasScaleChangedWithSize();
|
labelAtlasScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
@ -126,10 +137,10 @@ const char* UILabelAtlas::getStringValue()
|
||||||
return _laberAtlasRenderer->getString();
|
return _laberAtlasRenderer->getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabelAtlas::setAnchorPoint(const Point &pt)
|
void UILabelAtlas::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_laberAtlasRenderer->setAnchorPoint(Point(pt.x, pt.y));
|
_laberAtlasRenderer->setAnchorPoint(cocos2d::Point(pt.x, pt.y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabelAtlas::onSizeChanged()
|
void UILabelAtlas::onSizeChanged()
|
||||||
|
@ -137,12 +148,12 @@ void UILabelAtlas::onSizeChanged()
|
||||||
labelAtlasScaleChangedWithSize();
|
labelAtlasScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UILabelAtlas::getContentSize() const
|
const cocos2d::Size& UILabelAtlas::getContentSize() const
|
||||||
{
|
{
|
||||||
return _laberAtlasRenderer->getContentSize();
|
return _laberAtlasRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UILabelAtlas::getVirtualRenderer()
|
cocos2d::Node* UILabelAtlas::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _laberAtlasRenderer;
|
return _laberAtlasRenderer;
|
||||||
}
|
}
|
||||||
|
@ -156,7 +167,7 @@ void UILabelAtlas::labelAtlasScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _laberAtlasRenderer->getContentSize();
|
cocos2d::Size textureSize = _laberAtlasRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_laberAtlasRenderer->setScale(1.0f);
|
_laberAtlasRenderer->setScale(1.0f);
|
||||||
|
@ -171,7 +182,21 @@ void UILabelAtlas::labelAtlasScaleChangedWithSize()
|
||||||
|
|
||||||
const char* UILabelAtlas::getDescription() const
|
const char* UILabelAtlas::getDescription() const
|
||||||
{
|
{
|
||||||
return "LabelAtlase";
|
return "LabelAtlas";
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWidget* UILabelAtlas::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UILabelAtlas::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UILabelAtlas::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UILabelAtlas* labelAtlas = dynamic_cast<UILabelAtlas*>(widget);
|
||||||
|
if (labelAtlas)
|
||||||
|
{
|
||||||
|
setProperty(labelAtlas->_stringValue.c_str(), labelAtlas->_charMapFileName.c_str(), labelAtlas->_itemWidth, labelAtlas->_itemHeight, labelAtlas->_startCharMap.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -29,6 +29,10 @@
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UICCLabelAtlas : public cocos2d::LabelAtlas
|
class UICCLabelAtlas : public cocos2d::LabelAtlas
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -51,7 +55,10 @@ public:
|
||||||
virtual void updateDisplayedOpacity(GLubyte opacity);
|
virtual void updateDisplayedOpacity(GLubyte opacity);
|
||||||
virtual void draw(void);
|
virtual void draw(void);
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UILabelAtlas : public UIWidget
|
class UILabelAtlas : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -71,7 +78,7 @@ public:
|
||||||
static UILabelAtlas* create();
|
static UILabelAtlas* create();
|
||||||
|
|
||||||
/** initializes the UILabelAtlas with a string, a char map file(the atlas), the width and height of each element and the starting char of the atlas */
|
/** initializes the UILabelAtlas with a string, a char map file(the atlas), the width and height of each element and the starting char of the atlas */
|
||||||
void setProperty(const char* stringValue,const char* charMapFile, int itemWidth, int itemHeight, const char* startCharMap,bool useSpriteFrame = false);
|
void setProperty(const char* stringValue,const char* charMapFile, int itemWidth, int itemHeight, const char* startCharMap);
|
||||||
|
|
||||||
//set string value for labelatlas.
|
//set string value for labelatlas.
|
||||||
void setStringValue(const char* value);
|
void setStringValue(const char* value);
|
||||||
|
@ -92,12 +99,20 @@ public:
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void labelAtlasScaleChangedWithSize();
|
void labelAtlasScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
UICCLabelAtlas* _laberAtlasRenderer;
|
UICCLabelAtlas* _laberAtlasRenderer;
|
||||||
|
std::string _stringValue;
|
||||||
|
std::string _charMapFileName;
|
||||||
|
int _itemWidth;
|
||||||
|
int _itemHeight;
|
||||||
|
std::string _startCharMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,13 @@
|
||||||
|
|
||||||
#include "gui/UILabelBMFont.h"
|
#include "gui/UILabelBMFont.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
UILabelBMFont::UILabelBMFont():
|
UILabelBMFont::UILabelBMFont():
|
||||||
_labelBMFontRenderer(NULL),
|
_labelBMFontRenderer(NULL),
|
||||||
_fntFileHasInit(false)
|
_fntFileHasInit(false),
|
||||||
|
_fntFileName(""),
|
||||||
|
_stringValue("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ UILabelBMFont* UILabelBMFont::create()
|
||||||
void UILabelBMFont::initRenderer()
|
void UILabelBMFont::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_labelBMFontRenderer = CCLabelBMFont::create();
|
_labelBMFontRenderer = cocos2d::LabelBMFont::create();
|
||||||
_renderer->addChild(_labelBMFontRenderer);
|
_renderer->addChild(_labelBMFontRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,15 +64,22 @@ void UILabelBMFont::setFntFile(const char *fileName)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_fntFileName = fileName;
|
||||||
_labelBMFontRenderer->initWithString("", fileName);
|
_labelBMFontRenderer->initWithString("", fileName);
|
||||||
updateAnchorPoint();
|
updateAnchorPoint();
|
||||||
labelBMFontScaleChangedWithSize();
|
labelBMFontScaleChangedWithSize();
|
||||||
_fntFileHasInit = true;
|
_fntFileHasInit = true;
|
||||||
|
setText(_stringValue.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabelBMFont::setText(const char* value)
|
void UILabelBMFont::setText(const char* value)
|
||||||
{
|
{
|
||||||
if (!value || !_fntFileHasInit)
|
if (!value)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_stringValue = value;
|
||||||
|
if (!_fntFileHasInit)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -82,10 +89,10 @@ void UILabelBMFont::setText(const char* value)
|
||||||
|
|
||||||
const char* UILabelBMFont::getStringValue()
|
const char* UILabelBMFont::getStringValue()
|
||||||
{
|
{
|
||||||
return _labelBMFontRenderer->getString();
|
return _stringValue.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILabelBMFont::setAnchorPoint(const Point &pt)
|
void UILabelBMFont::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_labelBMFontRenderer->setAnchorPoint(pt);
|
_labelBMFontRenderer->setAnchorPoint(pt);
|
||||||
|
@ -96,12 +103,12 @@ void UILabelBMFont::onSizeChanged()
|
||||||
labelBMFontScaleChangedWithSize();
|
labelBMFontScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UILabelBMFont::getContentSize() const
|
const cocos2d::Size& UILabelBMFont::getContentSize() const
|
||||||
{
|
{
|
||||||
return _labelBMFontRenderer->getContentSize();
|
return _labelBMFontRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UILabelBMFont::getVirtualRenderer()
|
cocos2d::Node* UILabelBMFont::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _labelBMFontRenderer;
|
return _labelBMFontRenderer;
|
||||||
}
|
}
|
||||||
|
@ -115,7 +122,7 @@ void UILabelBMFont::labelBMFontScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = _labelBMFontRenderer->getContentSize();
|
cocos2d::Size textureSize = _labelBMFontRenderer->getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_labelBMFontRenderer->setScale(1.0f);
|
_labelBMFontRenderer->setScale(1.0f);
|
||||||
|
@ -133,5 +140,19 @@ const char* UILabelBMFont::getDescription() const
|
||||||
return "LabelBMFont";
|
return "LabelBMFont";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UILabelBMFont::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UILabelBMFont::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UILabelBMFont::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UILabelBMFont* labelBMFont = dynamic_cast<UILabelBMFont*>(widget);
|
||||||
|
if (labelBMFont)
|
||||||
|
{
|
||||||
|
setFntFile(labelBMFont->_fntFileName.c_str());
|
||||||
|
setText(labelBMFont->_stringValue.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -29,6 +29,10 @@
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UILabelBMFont : public UIWidget
|
class UILabelBMFont : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -58,7 +62,6 @@ public:
|
||||||
virtual void setAnchorPoint(const cocos2d::Point &pt);
|
virtual void setAnchorPoint(const cocos2d::Point &pt);
|
||||||
virtual const cocos2d::Size& getContentSize() const;
|
virtual const cocos2d::Size& getContentSize() const;
|
||||||
virtual cocos2d::Node* getVirtualRenderer();
|
virtual cocos2d::Node* getVirtualRenderer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
|
@ -67,9 +70,13 @@ protected:
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void labelBMFontScaleChangedWithSize();
|
void labelBMFontScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
cocos2d::LabelBMFont* _labelBMFontRenderer;
|
cocos2d::LabelBMFont* _labelBMFontRenderer;
|
||||||
bool _fntFileHasInit;
|
bool _fntFileHasInit;
|
||||||
|
std::string _fntFileName;
|
||||||
|
std::string _stringValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,7 @@ UIWidget* UILayer::getWidgetByTag(int tag)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return CCUIHELPER->seekWidgetByTag(_rootWidget, tag);
|
return UIHelper::seekWidgetByTag(_rootWidget, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
UIWidget* UILayer::getWidgetByName(const char* name)
|
UIWidget* UILayer::getWidgetByName(const char* name)
|
||||||
|
@ -128,7 +128,7 @@ UIWidget* UILayer::getWidgetByName(const char* name)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return CCUIHELPER->seekWidgetByName(_rootWidget, name);
|
return UIHelper::seekWidgetByName(_rootWidget, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
UIRootWidget* UILayer::getRootWidget()
|
UIRootWidget* UILayer::getRootWidget()
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -44,23 +44,28 @@ typedef enum
|
||||||
LAYOUT_RELATIVE
|
LAYOUT_RELATIVE
|
||||||
}LayoutType;
|
}LayoutType;
|
||||||
|
|
||||||
class Layout : public UIWidget
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
class UILayout : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*/
|
*/
|
||||||
Layout();
|
UILayout();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
virtual ~Layout();
|
virtual ~UILayout();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates and initializes a layout.
|
* Allocates and initializes a layout.
|
||||||
*/
|
*/
|
||||||
static Layout* create();
|
static UILayout* create();
|
||||||
|
|
||||||
//override "hitTest" method of widget.
|
//override "hitTest" method of widget.
|
||||||
virtual bool hitTest(const cocos2d::Point &pt);
|
virtual bool hitTest(const cocos2d::Point &pt);
|
||||||
|
@ -168,6 +173,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual const cocos2d::Size& getContentSize() const;
|
virtual const cocos2d::Size& getContentSize() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the "class name" of widget.
|
||||||
|
*/
|
||||||
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets LayoutType.
|
* Sets LayoutType.
|
||||||
*
|
*
|
||||||
|
@ -189,9 +199,12 @@ public:
|
||||||
virtual void doLayout();
|
virtual void doLayout();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the "class name" of widget.
|
* Adds a child to the container.
|
||||||
|
*
|
||||||
|
* @param child A child widget
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual bool addChild(UIWidget* child);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//override "init" method of widget.
|
//override "init" method of widget.
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
|
@ -204,6 +217,11 @@ protected:
|
||||||
|
|
||||||
//init background image renderer.
|
//init background image renderer.
|
||||||
void addBackGroundImage();
|
void addBackGroundImage();
|
||||||
|
|
||||||
|
void supplyTheLayoutParameterLackToChild(UIWidget* child);
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
|
virtual void copyClonedWidgetChildren(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
bool _clippingEnabled;
|
bool _clippingEnabled;
|
||||||
|
|
||||||
|
@ -224,23 +242,26 @@ protected:
|
||||||
cocos2d::Size _backGroundImageTextureSize;
|
cocos2d::Size _backGroundImageTextureSize;
|
||||||
LayoutType _layoutType;
|
LayoutType _layoutType;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
class RectClippingNode : public cocos2d::ClippingNode
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
class UIRectClippingNode : public cocos2d::ClippingNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~RectClippingNode();
|
virtual ~UIRectClippingNode();
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
static RectClippingNode* create();
|
static UIRectClippingNode* create();
|
||||||
void setClippingSize(const cocos2d::Size& size);
|
void setClippingSize(const cocos2d::Size& size);
|
||||||
void setClippingEnabled(bool enabled);
|
void setClippingEnabled(bool enabled);
|
||||||
virtual void visit();
|
virtual void visit();
|
||||||
void setEnabled(bool enabled);
|
void setEnabled(bool enabled);
|
||||||
bool isEnabled() const;
|
bool isEnabled() const;
|
||||||
protected:
|
protected:
|
||||||
cocos2d::DrawNode* m_pInnerStencil;
|
cocos2d::DrawNode* _innerStencil;
|
||||||
bool _enabled;
|
bool _enabled;
|
||||||
private:
|
private:
|
||||||
RectClippingNode();
|
UIRectClippingNode();
|
||||||
cocos2d::Point rect[4];
|
cocos2d::Point rect[4];
|
||||||
cocos2d::Size _clippingSize;
|
cocos2d::Size _clippingSize;
|
||||||
bool _clippingEnabled;
|
bool _clippingEnabled;
|
|
@ -21,7 +21,7 @@
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "gui/UILayoutDefine.h"
|
#include "UILayoutDefine.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,13 @@
|
||||||
#define __UILAYOUTDEFINE_H__
|
#define __UILAYOUTDEFINE_H__
|
||||||
|
|
||||||
#include "cocos2d.h"
|
#include "cocos2d.h"
|
||||||
|
#include "ExtensionMacros.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UIMargin
|
class UIMargin
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -46,6 +50,7 @@ public:
|
||||||
bool equals(const UIMargin& target) const;
|
bool equals(const UIMargin& target) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const UIMargin UIMarginZero = UIMargin();
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -61,22 +66,25 @@ typedef enum
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
RELATIVE_ALIGN_NONE,
|
RELATIVE_ALIGN_NONE,
|
||||||
RELATIVE_ALIGN_PARENT_LEFT,
|
RELATIVE_ALIGN_PARENT_TOP_LEFT,
|
||||||
RELATIVE_ALIGN_PARENT_TOP,
|
RELATIVE_ALIGN_PARENT_TOP_CENTER_HORIZONTAL,
|
||||||
RELATIVE_ALIGN_PARENT_RIGHT,
|
RELATIVE_ALIGN_PARENT_TOP_RIGHT,
|
||||||
RELATIVE_ALIGN_PARENT_BOTTOM,
|
RELATIVE_ALIGN_PARENT_LEFT_CENTER_VERTICAL,
|
||||||
RELATIVE_CENTER_IN_PARENT,
|
RELATIVE_CENTER_IN_PARENT,
|
||||||
RELATIVE_CENTER_HORIZONTAL,
|
RELATIVE_ALIGN_PARENT_RIGHT_CENTER_VERTICAL,
|
||||||
RELATIVE_CENTER_VERTICAL,
|
RELATIVE_ALIGN_PARENT_LEFT_BOTTOM,
|
||||||
|
RELATIVE_ALIGN_PARENT_BOTTOM_CENTER_HORIZONTAL,
|
||||||
|
RELATIVE_ALIGN_PARENT_RIGHT_BOTTOM,
|
||||||
|
|
||||||
|
RELATIVE_LOCATION_ABOVE_LEFTALIGN,
|
||||||
|
RELATIVE_LOCATION_ABOVE_CENTER,
|
||||||
|
RELATIVE_LOCATION_ABOVE_RIGHTALIGN,
|
||||||
RELATIVE_LOCATION_LEFT_OF_TOPALIGN,
|
RELATIVE_LOCATION_LEFT_OF_TOPALIGN,
|
||||||
RELATIVE_LOCATION_LEFT_OF_CENTER,
|
RELATIVE_LOCATION_LEFT_OF_CENTER,
|
||||||
RELATIVE_LOCATION_LEFT_OF_BOTTOMALIGN,
|
RELATIVE_LOCATION_LEFT_OF_BOTTOMALIGN,
|
||||||
RELATIVE_LOCATION_RIGHT_OF_TOPALIGN,
|
RELATIVE_LOCATION_RIGHT_OF_TOPALIGN,
|
||||||
RELATIVE_LOCATION_RIGHT_OF_CENTER,
|
RELATIVE_LOCATION_RIGHT_OF_CENTER,
|
||||||
RELATIVE_LOCATION_RIGHT_OF_BOTTOMALIGN,
|
RELATIVE_LOCATION_RIGHT_OF_BOTTOMALIGN,
|
||||||
RELATIVE_LOCATION_ABOVE_LEFTALIGN,
|
|
||||||
RELATIVE_LOCATION_ABOVE_CENTER,
|
|
||||||
RELATIVE_LOCATION_ABOVE_RIGHTALIGN,
|
|
||||||
RELATIVE_LOCATION_BELOW_LEFTALIGN,
|
RELATIVE_LOCATION_BELOW_LEFTALIGN,
|
||||||
RELATIVE_LOCATION_BELOW_CENTER,
|
RELATIVE_LOCATION_BELOW_CENTER,
|
||||||
RELATIVE_LOCATION_BELOW_RIGHTALIGN
|
RELATIVE_LOCATION_BELOW_RIGHTALIGN
|
||||||
|
|
|
@ -22,14 +22,15 @@
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "gui/LayoutParameter.h"
|
#include "gui/UILayoutParameter.h"
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
LayoutParameter* LayoutParameter::create()
|
|
||||||
|
UILayoutParameter* UILayoutParameter::create()
|
||||||
{
|
{
|
||||||
LayoutParameter* parameter = new LayoutParameter();
|
UILayoutParameter* parameter = new UILayoutParameter();
|
||||||
if (parameter)
|
if (parameter)
|
||||||
{
|
{
|
||||||
parameter->autorelease();
|
parameter->autorelease();
|
||||||
|
@ -39,24 +40,24 @@ LayoutParameter* LayoutParameter::create()
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayoutParameter::setMargin(const UIMargin &margin)
|
void UILayoutParameter::setMargin(const UIMargin &margin)
|
||||||
{
|
{
|
||||||
_margin = margin;
|
_margin = margin;
|
||||||
}
|
}
|
||||||
|
|
||||||
const UIMargin& LayoutParameter::getMargin() const
|
const UIMargin& UILayoutParameter::getMargin() const
|
||||||
{
|
{
|
||||||
return _margin;
|
return _margin;
|
||||||
}
|
}
|
||||||
|
|
||||||
LayoutParameterType LayoutParameter::getLayoutType() const
|
LayoutParameterType UILayoutParameter::getLayoutType() const
|
||||||
{
|
{
|
||||||
return _layoutParameterType;
|
return _layoutParameterType;
|
||||||
}
|
}
|
||||||
|
|
||||||
LinearLayoutParameter* LinearLayoutParameter::create()
|
UILinearLayoutParameter* UILinearLayoutParameter::create()
|
||||||
{
|
{
|
||||||
LinearLayoutParameter* parameter = new LinearLayoutParameter();
|
UILinearLayoutParameter* parameter = new UILinearLayoutParameter();
|
||||||
if (parameter)
|
if (parameter)
|
||||||
{
|
{
|
||||||
parameter->autorelease();
|
parameter->autorelease();
|
||||||
|
@ -66,19 +67,19 @@ LinearLayoutParameter* LinearLayoutParameter::create()
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinearLayoutParameter::setGravity(UILinearGravity gravity)
|
void UILinearLayoutParameter::setGravity(UILinearGravity gravity)
|
||||||
{
|
{
|
||||||
_linearGravity = gravity;
|
_linearGravity = gravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
UILinearGravity LinearLayoutParameter::getGravity() const
|
UILinearGravity UILinearLayoutParameter::getGravity() const
|
||||||
{
|
{
|
||||||
return _linearGravity;
|
return _linearGravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
RelativeLayoutParameter* RelativeLayoutParameter::create()
|
UIRelativeLayoutParameter* UIRelativeLayoutParameter::create()
|
||||||
{
|
{
|
||||||
RelativeLayoutParameter* parameter = new RelativeLayoutParameter();
|
UIRelativeLayoutParameter* parameter = new UIRelativeLayoutParameter();
|
||||||
if (parameter)
|
if (parameter)
|
||||||
{
|
{
|
||||||
parameter->autorelease();
|
parameter->autorelease();
|
||||||
|
@ -88,32 +89,32 @@ RelativeLayoutParameter* RelativeLayoutParameter::create()
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RelativeLayoutParameter::setAlign(UIRelativeAlign align)
|
void UIRelativeLayoutParameter::setAlign(UIRelativeAlign align)
|
||||||
{
|
{
|
||||||
_relativeAlign = align;
|
_relativeAlign = align;
|
||||||
}
|
}
|
||||||
|
|
||||||
UIRelativeAlign RelativeLayoutParameter::getAlign() const
|
UIRelativeAlign UIRelativeLayoutParameter::getAlign() const
|
||||||
{
|
{
|
||||||
return _relativeAlign;
|
return _relativeAlign;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RelativeLayoutParameter::setRelativeToWidgetName(const char *name)
|
void UIRelativeLayoutParameter::setRelativeToWidgetName(const char *name)
|
||||||
{
|
{
|
||||||
_relativeWidgetName = name;
|
_relativeWidgetName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* RelativeLayoutParameter::getRelativeToWidgetName() const
|
const char* UIRelativeLayoutParameter::getRelativeToWidgetName() const
|
||||||
{
|
{
|
||||||
return _relativeWidgetName.c_str();
|
return _relativeWidgetName.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RelativeLayoutParameter::setRelativeName(const char* name)
|
void UIRelativeLayoutParameter::setRelativeName(const char* name)
|
||||||
{
|
{
|
||||||
_relativeLayoutName = name;
|
_relativeLayoutName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* RelativeLayoutParameter::getRelativeName() const
|
const char* UIRelativeLayoutParameter::getRelativeName() const
|
||||||
{
|
{
|
||||||
return _relativeLayoutName.c_str();
|
return _relativeLayoutName.c_str();
|
||||||
}
|
}
|
|
@ -35,25 +35,28 @@ typedef enum
|
||||||
LAYOUT_PARAMETER_LINEAR,
|
LAYOUT_PARAMETER_LINEAR,
|
||||||
LAYOUT_PARAMETER_RELATIVE
|
LAYOUT_PARAMETER_RELATIVE
|
||||||
}LayoutParameterType;
|
}LayoutParameterType;
|
||||||
|
/**
|
||||||
class LayoutParameter : public cocos2d::Object
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
class UILayoutParameter : public cocos2d::Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*/
|
*/
|
||||||
LayoutParameter() : _margin(UIMargin()){_layoutParameterType = LAYOUT_PARAMETER_NONE;};
|
UILayoutParameter() : _margin(UIMargin()){_layoutParameterType = LAYOUT_PARAMETER_NONE;};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
virtual ~LayoutParameter(){};
|
virtual ~UILayoutParameter(){};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates and initializes.
|
* Allocates and initializes.
|
||||||
* @return A initialized LayoutParameter which is marked as "autorelease".
|
* @return A initialized LayoutParameter which is marked as "autorelease".
|
||||||
*/
|
*/
|
||||||
static LayoutParameter* create();
|
static UILayoutParameter* create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets Margin parameter for LayoutParameter.
|
* Sets Margin parameter for LayoutParameter.
|
||||||
|
@ -85,25 +88,28 @@ protected:
|
||||||
UIMargin _margin;
|
UIMargin _margin;
|
||||||
LayoutParameterType _layoutParameterType;
|
LayoutParameterType _layoutParameterType;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
class LinearLayoutParameter : public LayoutParameter
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
class UILinearLayoutParameter : public UILayoutParameter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*/
|
*/
|
||||||
LinearLayoutParameter() : _linearGravity(LINEAR_GRAVITY_NONE){_layoutParameterType = LAYOUT_PARAMETER_LINEAR;};
|
UILinearLayoutParameter() : _linearGravity(LINEAR_GRAVITY_NONE){_layoutParameterType = LAYOUT_PARAMETER_LINEAR;};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
virtual ~LinearLayoutParameter(){};
|
virtual ~UILinearLayoutParameter(){};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates and initializes.
|
* Allocates and initializes.
|
||||||
* @return A initialized LayoutParameter which is marked as "autorelease".
|
* @return A initialized LayoutParameter which is marked as "autorelease".
|
||||||
*/
|
*/
|
||||||
static LinearLayoutParameter* create();
|
static UILinearLayoutParameter* create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets UILinearGravity parameter for LayoutParameter.
|
* Sets UILinearGravity parameter for LayoutParameter.
|
||||||
|
@ -125,25 +131,31 @@ public:
|
||||||
protected:
|
protected:
|
||||||
UILinearGravity _linearGravity;
|
UILinearGravity _linearGravity;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
|
||||||
class RelativeLayoutParameter : public LayoutParameter
|
class UILayout;
|
||||||
|
|
||||||
|
class UIRelativeLayoutParameter : public UILayoutParameter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*/
|
*/
|
||||||
RelativeLayoutParameter() : _relativeAlign(RELATIVE_ALIGN_NONE),_relativeWidgetName(""),_relativeLayoutName(""){_layoutParameterType = LAYOUT_PARAMETER_RELATIVE;};
|
UIRelativeLayoutParameter() : _relativeAlign(RELATIVE_ALIGN_NONE),_relativeWidgetName(""),_relativeLayoutName(""),_put(false){_layoutParameterType = LAYOUT_PARAMETER_RELATIVE;};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
virtual ~RelativeLayoutParameter(){};
|
virtual ~UIRelativeLayoutParameter(){};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates and initializes.
|
* Allocates and initializes.
|
||||||
* @return A initialized LayoutParameter which is marked as "autorelease".
|
* @return A initialized LayoutParameter which is marked as "autorelease".
|
||||||
*/
|
*/
|
||||||
static RelativeLayoutParameter* create();
|
static UIRelativeLayoutParameter* create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets UIRelativeAlign parameter for LayoutParameter.
|
* Sets UIRelativeAlign parameter for LayoutParameter.
|
||||||
|
@ -194,6 +206,8 @@ protected:
|
||||||
UIRelativeAlign _relativeAlign;
|
UIRelativeAlign _relativeAlign;
|
||||||
std::string _relativeWidgetName;
|
std::string _relativeWidgetName;
|
||||||
std::string _relativeLayoutName;
|
std::string _relativeLayoutName;
|
||||||
|
bool _put;
|
||||||
|
friend class UILayout;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -22,226 +22,156 @@
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef __UILISTVIEW_H__
|
#ifndef __UILISTVIEW_H__
|
||||||
#define __UILISTVIEW_H__
|
#define __UILISTVIEW_H__
|
||||||
|
|
||||||
/* gui mark */
|
#include "gui/UIScrollView.h"
|
||||||
#include "gui/Layout.h"
|
|
||||||
/**/
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui{
|
||||||
|
|
||||||
/**
|
|
||||||
* list view direction
|
|
||||||
*/
|
|
||||||
typedef enum LISTVIEW_DIR
|
|
||||||
{
|
|
||||||
LISTVIEW_DIR_NONE,
|
|
||||||
LISTVIEW_DIR_VERTICAL,
|
|
||||||
LISTVIEW_DIR_HORIZONTAL
|
|
||||||
}ListViewDirection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* list view scroll direction
|
|
||||||
*/
|
|
||||||
typedef enum LISTVIEW_MOVE_DIR
|
|
||||||
{
|
|
||||||
LISTVIEW_MOVE_DIR_NONE,
|
|
||||||
LISTVIEW_MOVE_DIR_UP,
|
|
||||||
LISTVIEW_MOVE_DIR_DOWN,
|
|
||||||
LISTVIEW_MOVE_DIR_LEFT,
|
|
||||||
LISTVIEW_MOVE_DIR_RIGHT,
|
|
||||||
}ListViewMoveDirection;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
LISTVIEW_EVENT_INIT_CHILD,
|
LISTVIEW_GRAVITY_LEFT,
|
||||||
LISTVIEW_EVENT_UPDATE_CHILD,
|
LISTVIEW_GRAVITY_RIGHT,
|
||||||
}ListViewEventType;
|
LISTVIEW_GRAVITY_CENTER_HORIZONTAL,
|
||||||
|
|
||||||
/**
|
LISTVIEW_GRAVITY_TOP,
|
||||||
* list view event
|
LISTVIEW_GRAVITY_BOTTOM,
|
||||||
*/
|
LISTVIEW_GRAVITY_CENTER_VERTICAL,
|
||||||
typedef void (cocos2d::Object::*SEL_ListViewEvent)(cocos2d::Object*, ListViewEventType);
|
}ListViewGravity;
|
||||||
#define listvieweventselector(_SELECTOR)(SEL_ListViewEvent)(&_SELECTOR)
|
|
||||||
|
|
||||||
class UIListView : public Layout
|
class UIListView : public UIScrollView
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor
|
||||||
|
*/
|
||||||
UIListView();
|
UIListView();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default destructor
|
||||||
|
*/
|
||||||
virtual ~UIListView();
|
virtual ~UIListView();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates and initializes.
|
||||||
|
*/
|
||||||
static UIListView* create();
|
static UIListView* create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add widget child override
|
* Sets a item model for listview
|
||||||
|
*
|
||||||
|
* A model will be cloned for adding default item.
|
||||||
|
*
|
||||||
|
* @param model item model for listview
|
||||||
*/
|
*/
|
||||||
virtual bool addChild(UIWidget* widget);
|
void setItemModel(UIWidget* model);
|
||||||
/**
|
|
||||||
* remove all widget children override
|
|
||||||
*/
|
|
||||||
virtual void removeAllChildren();
|
|
||||||
/**
|
|
||||||
* remove widget child override
|
|
||||||
*/
|
|
||||||
virtual bool removeChild(UIWidget* child);
|
|
||||||
|
|
||||||
virtual bool onTouchBegan(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchMoved(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchEnded(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchCancelled(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void onTouchLongClicked(const cocos2d::Point &touchPoint);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set and get direction
|
* Push back a default item(create by a cloned model) into listview.
|
||||||
*/
|
*/
|
||||||
void setDirection(ListViewDirection dir);
|
void pushBackDefaultItem();
|
||||||
ListViewDirection getDirection();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialze data length
|
* Insert a default item(create by a cloned model) into listview.
|
||||||
* and create children with parameter length
|
|
||||||
*/
|
*/
|
||||||
void initChildWithDataLength(int length);
|
void insertDefaultItem(int index);
|
||||||
/**
|
|
||||||
* get data length
|
|
||||||
*/
|
|
||||||
int getDataLength();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* update child function whetn trigger update child event
|
* Push back custom item into listview.
|
||||||
*/
|
*/
|
||||||
/**
|
void pushBackCustomItem(UIWidget* item);
|
||||||
* get update widget child
|
|
||||||
*/
|
|
||||||
UIWidget* getUpdateChild();
|
|
||||||
/**
|
|
||||||
* get update data index
|
|
||||||
*/
|
|
||||||
int getUpdateDataIndex();
|
|
||||||
/**
|
|
||||||
* get and set update success or not
|
|
||||||
*/
|
|
||||||
bool getUpdateSuccess();
|
|
||||||
void setUpdateSuccess(bool sucess);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add event call-back function
|
* Insert custom item into listview.
|
||||||
*/
|
*/
|
||||||
/**
|
void insertCustomItem(UIWidget* item, int index);
|
||||||
* add event
|
|
||||||
*/
|
|
||||||
void addEventListenter(cocos2d::Object* target, SEL_ListViewEvent selector);
|
|
||||||
|
|
||||||
/* gui mark */
|
|
||||||
/**
|
|
||||||
* get and set degree range for checking move or not with scrolling
|
|
||||||
*/
|
|
||||||
/**/
|
|
||||||
virtual void update(float dt);
|
|
||||||
|
|
||||||
virtual void doLayout(){};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the "class name" of widget.
|
* Removes the last item of listview.
|
||||||
*/
|
*/
|
||||||
|
void removeLastItem();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a item whose index is same as the parameter.
|
||||||
|
*
|
||||||
|
* @param index of item.
|
||||||
|
*/
|
||||||
|
void removeItem(int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a item whose index is same as the parameter.
|
||||||
|
*
|
||||||
|
* @param index of item.
|
||||||
|
*
|
||||||
|
* @return the item widget.
|
||||||
|
*/
|
||||||
|
UIWidget* getItem(unsigned int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item container.
|
||||||
|
*/
|
||||||
|
cocos2d::Array* getItems();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the index of item.
|
||||||
|
*
|
||||||
|
* @param item the item which need to be checked.
|
||||||
|
*
|
||||||
|
* @return the index of item.
|
||||||
|
*/
|
||||||
|
unsigned int getIndex(UIWidget* item) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the gravity of listview.
|
||||||
|
* @see ListViewGravity
|
||||||
|
*/
|
||||||
|
void setGravity(ListViewGravity gravity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the margin between each item.
|
||||||
|
*
|
||||||
|
* @param margin
|
||||||
|
*/
|
||||||
|
void setItemsMargin(float margin);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh the view of list.
|
||||||
|
*
|
||||||
|
* If you change the data, you need to call this mathod.
|
||||||
|
*/
|
||||||
|
void refreshView();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes scroll direction of scrollview.
|
||||||
|
*
|
||||||
|
* @see SCROLLVIEW_DIR SCROLLVIEW_DIR_VERTICAL means vertical scroll, SCROLLVIEW_DIR_HORIZONTAL means horizontal scroll
|
||||||
|
*
|
||||||
|
* @param SCROLLVIEW_DIR
|
||||||
|
*/
|
||||||
|
virtual void setDirection(SCROLLVIEW_DIR dir);
|
||||||
|
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
|
void updateInnerContainerSize();
|
||||||
|
void remedyLayoutParameter(UIWidget* item);
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
void setMoveDirection(ListViewMoveDirection dir);
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
ListViewMoveDirection getMoveDirection();
|
virtual void copyClonedWidgetChildren(UIWidget* model);
|
||||||
|
|
||||||
virtual void resetProperty();
|
|
||||||
|
|
||||||
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void handleMoveLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void handleReleaseLogic(const cocos2d::Point &touchPoint);
|
|
||||||
virtual void interceptTouchEvent(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
|
||||||
/* gui mark */
|
|
||||||
// virtual bool isInScrollDegreeRange(UIWidget* widget);
|
|
||||||
/**/
|
|
||||||
virtual void checkChildInfo(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
|
||||||
|
|
||||||
void moveChildren(float offset);
|
|
||||||
virtual bool scrollChildren(float touchOffset);
|
|
||||||
void autoScrollChildren(float dt);
|
|
||||||
float getCurAutoScrollDistance(float time);
|
|
||||||
void startAutoScrollChildren(float v);
|
|
||||||
void stopAutoScrollChildren();
|
|
||||||
void recordSlidTime(float dt);
|
|
||||||
void startRecordSlidAction();
|
|
||||||
virtual void endRecordSlidAction();
|
|
||||||
|
|
||||||
UIWidget* getCheckPositionChild();
|
|
||||||
UIWidget* getChildFromUpdatePool();
|
|
||||||
void pushChildToPool();
|
|
||||||
void getAndCallback();
|
|
||||||
|
|
||||||
void setUpdateChild(UIWidget* child);
|
|
||||||
void setUpdateDataIndex(int index);
|
|
||||||
void clearCollectOverArray();
|
|
||||||
void collectOverTopChild();
|
|
||||||
void collectOverBottomChild();
|
|
||||||
void collectOverLeftChild();
|
|
||||||
void collectOverRightChild();
|
|
||||||
void setLoopPosition();
|
|
||||||
void updateChild();
|
|
||||||
|
|
||||||
void initChildEvent();
|
|
||||||
void updateChildEvent();
|
|
||||||
|
|
||||||
virtual void setClippingEnabled(bool able){Layout::setClippingEnabled(able);};
|
|
||||||
protected:
|
protected:
|
||||||
ListViewDirection _direction;
|
|
||||||
ListViewMoveDirection _moveDirection;
|
|
||||||
|
|
||||||
float _touchStartLocation;
|
UIWidget* _model;
|
||||||
float _touchEndLocation;
|
cocos2d::Array* _items;
|
||||||
float _touchMoveStartLocation;
|
ListViewGravity _gravity;
|
||||||
float _topBoundary;//test
|
float _itemsMargin;
|
||||||
float _bottomBoundary;//test
|
|
||||||
float _leftBoundary;
|
|
||||||
float _rightBoundary;
|
|
||||||
|
|
||||||
bool _autoScroll;
|
|
||||||
|
|
||||||
float _autoScrollOriginalSpeed;
|
|
||||||
float _autoScrollAcceleration;
|
|
||||||
|
|
||||||
bool _bePressed;
|
|
||||||
float _slidTime;
|
|
||||||
cocos2d::Point _moveChildPoint;
|
|
||||||
float _childFocusCancelOffset;
|
|
||||||
|
|
||||||
cocos2d::Object* _eventListener;
|
|
||||||
SEL_ListViewEvent _eventSelector;
|
|
||||||
|
|
||||||
cocos2d::Array* _childPool;
|
|
||||||
cocos2d::Array* _updatePool;
|
|
||||||
|
|
||||||
int _dataLength;
|
|
||||||
int _begin;
|
|
||||||
int _end;
|
|
||||||
UIWidget* _updateChild;
|
|
||||||
int _updateDataIndex;
|
|
||||||
bool _updateSuccess;
|
|
||||||
|
|
||||||
cocos2d::Array* _overTopArray;
|
|
||||||
cocos2d::Array* _overBottomArray;
|
|
||||||
cocos2d::Array* _overLeftArray;
|
|
||||||
cocos2d::Array* _overRightArray;
|
|
||||||
|
|
||||||
float _disBoundaryToChild_0;
|
|
||||||
float _disBetweenChild;
|
|
||||||
|
|
||||||
/* gui mark */
|
|
||||||
float _scrollDegreeRange;
|
|
||||||
/**/
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* defined(__UIListView__) */
|
||||||
#endif /* defined(__Test__UIListView__) */
|
|
||||||
|
|
|
@ -25,11 +25,9 @@
|
||||||
#include "gui/UILoadingBar.h"
|
#include "gui/UILoadingBar.h"
|
||||||
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocos2d::extension;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
|
||||||
#define DYNAMIC_CAST_CCSPRITE dynamic_cast<cocos2d::Sprite*>(_barRenderer)
|
#define DYNAMIC_CAST_CCSPRITE dynamic_cast<cocos2d::Sprite*>(_barRenderer)
|
||||||
|
|
||||||
UILoadingBar::UILoadingBar():
|
UILoadingBar::UILoadingBar():
|
||||||
|
@ -38,10 +36,10 @@ _percent(100),
|
||||||
_totalLength(0),
|
_totalLength(0),
|
||||||
_barRenderer(NULL),
|
_barRenderer(NULL),
|
||||||
_renderBarTexType(UI_TEX_TYPE_LOCAL),
|
_renderBarTexType(UI_TEX_TYPE_LOCAL),
|
||||||
_barRendererTextureSize(Size::ZERO),
|
_barRendererTextureSize(cocos2d::Size::ZERO),
|
||||||
_scale9Enabled(false),
|
_scale9Enabled(false),
|
||||||
_prevIgnoreSize(true),
|
_prevIgnoreSize(true),
|
||||||
_capInsets(Rect::ZERO),
|
_capInsets(cocos2d::Rect::ZERO),
|
||||||
_textureFile("")
|
_textureFile("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -66,9 +64,9 @@ UILoadingBar* UILoadingBar::create()
|
||||||
void UILoadingBar::initRenderer()
|
void UILoadingBar::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_barRenderer = CCSprite::create();
|
_barRenderer = cocos2d::Sprite::create();
|
||||||
_renderer->addChild(_barRenderer);
|
_renderer->addChild(_barRenderer);
|
||||||
_barRenderer->setAnchorPoint(Point(0.0f,0.5f));
|
_barRenderer->setAnchorPoint(cocos2d::Point(0.0,0.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILoadingBar::setDirection(LoadingBarType dir)
|
void UILoadingBar::setDirection(LoadingBarType dir)
|
||||||
|
@ -82,19 +80,19 @@ void UILoadingBar::setDirection(LoadingBarType dir)
|
||||||
switch (_barType)
|
switch (_barType)
|
||||||
{
|
{
|
||||||
case LoadingBarTypeLeft:
|
case LoadingBarTypeLeft:
|
||||||
_barRenderer->setAnchorPoint(Point(0.0f,0.5f));
|
_barRenderer->setAnchorPoint(cocos2d::Point(0.0f,0.5f));
|
||||||
_barRenderer->setPosition(Point(-_totalLength*0.5f,0.0f));
|
_barRenderer->setPosition(cocos2d::Point(-_totalLength*0.5f,0.0f));
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setFlippedX(false);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setFlippedX(false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LoadingBarTypeRight:
|
case LoadingBarTypeRight:
|
||||||
_barRenderer->setAnchorPoint(Point(1.0f,0.5f));
|
_barRenderer->setAnchorPoint(cocos2d::Point(1.0f,0.5f));
|
||||||
_barRenderer->setPosition(Point(_totalLength*0.5f,0.0f));
|
_barRenderer->setPosition(cocos2d::Point(_totalLength*0.5f,0.0f));
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setFlippedX(true);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setFlippedX(true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -118,21 +116,23 @@ void UILoadingBar::loadTexture(const char* texture,TextureResType texType)
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->initWithFile(texture);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->initWithFile(texture);
|
||||||
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setCapInsets(_capInsets);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->initWithFile(texture);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->initWithFile(texture);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->initWithSpriteFrameName(texture);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->initWithSpriteFrameName(texture);
|
||||||
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setCapInsets(_capInsets);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->initWithSpriteFrameName(texture);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->initWithSpriteFrameName(texture);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -140,31 +140,31 @@ void UILoadingBar::loadTexture(const char* texture,TextureResType texType)
|
||||||
}
|
}
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
_barRendererTextureSize.width = _barRenderer->getContentSize().width;
|
_barRendererTextureSize = _barRenderer->getContentSize();
|
||||||
_barRendererTextureSize.height = _barRenderer->getContentSize().height;
|
|
||||||
|
|
||||||
switch (_barType)
|
switch (_barType)
|
||||||
{
|
{
|
||||||
case LoadingBarTypeLeft:
|
case LoadingBarTypeLeft:
|
||||||
_barRenderer->setAnchorPoint(Point(0.0f,0.5f));
|
_barRenderer->setAnchorPoint(cocos2d::Point(0.0f,0.5f));
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setFlippedX(false);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setFlippedX(false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LoadingBarTypeRight:
|
case LoadingBarTypeRight:
|
||||||
_barRenderer->setAnchorPoint(Point(1.0f,0.5f));
|
_barRenderer->setAnchorPoint(cocos2d::Point(1.0f,0.5f));
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setFlippedX(true);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setFlippedX(true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -182,11 +182,11 @@ void UILoadingBar::setScale9Enabled(bool enabled)
|
||||||
_barRenderer = NULL;
|
_barRenderer = NULL;
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
_barRenderer = Scale9Sprite::create();
|
_barRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_barRenderer = CCSprite::create();
|
_barRenderer = cocos2d::Sprite::create();
|
||||||
}
|
}
|
||||||
loadTexture(_textureFile.c_str(),_renderBarTexType);
|
loadTexture(_textureFile.c_str(),_renderBarTexType);
|
||||||
_renderer->addChild(_barRenderer);
|
_renderer->addChild(_barRenderer);
|
||||||
|
@ -203,14 +203,14 @@ void UILoadingBar::setScale9Enabled(bool enabled)
|
||||||
setCapInsets(_capInsets);
|
setCapInsets(_capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILoadingBar::setCapInsets(const Rect &capInsets)
|
void UILoadingBar::setCapInsets(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsets = capInsets;
|
_capInsets = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UILoadingBar::setPercent(int percent)
|
void UILoadingBar::setPercent(int percent)
|
||||||
|
@ -231,10 +231,10 @@ void UILoadingBar::setPercent(int percent)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
{
|
{
|
||||||
Sprite* barNode = DYNAMIC_CAST_CCSPRITE;
|
cocos2d::Sprite* barNode = DYNAMIC_CAST_CCSPRITE;
|
||||||
if (barNode)
|
if (barNode)
|
||||||
{
|
{
|
||||||
Point to = barNode->getTextureRect().origin;
|
cocos2d::Point to = barNode->getTextureRect().origin;
|
||||||
x = to.x;
|
x = to.x;
|
||||||
y = to.y;
|
y = to.y;
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,7 @@ void UILoadingBar::setPercent(int percent)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setTextureRect(Rect(x, y, _barRendererTextureSize.width * res, _barRendererTextureSize.height));
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setTextureRect(cocos2d::Rect(x, y, _barRendererTextureSize.width * res, _barRendererTextureSize.height));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,12 +272,12 @@ void UILoadingBar::ignoreContentAdaptWithSize(bool ignore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UILoadingBar::getContentSize() const
|
const cocos2d::Size& UILoadingBar::getContentSize() const
|
||||||
{
|
{
|
||||||
return _barRendererTextureSize;
|
return _barRendererTextureSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UILoadingBar::getVirtualRenderer()
|
cocos2d::Node* UILoadingBar::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _barRenderer;
|
return _barRenderer;
|
||||||
}
|
}
|
||||||
|
@ -303,7 +303,7 @@ void UILoadingBar::barRendererScaleChangedWithSize()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
Size textureSize = _barRenderer->getContentSize();
|
cocos2d::Size textureSize = _barRendererTextureSize;
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_barRenderer->setScale(1.0f);
|
_barRenderer->setScale(1.0f);
|
||||||
|
@ -318,10 +318,10 @@ void UILoadingBar::barRendererScaleChangedWithSize()
|
||||||
switch (_barType)
|
switch (_barType)
|
||||||
{
|
{
|
||||||
case LoadingBarTypeLeft:
|
case LoadingBarTypeLeft:
|
||||||
_barRenderer->setPosition(Point(-_totalLength * 0.5f, 0.0f));
|
_barRenderer->setPosition(cocos2d::Point(-_totalLength * 0.5f, 0.0f));
|
||||||
break;
|
break;
|
||||||
case LoadingBarTypeRight:
|
case LoadingBarTypeRight:
|
||||||
_barRenderer->setPosition(Point(_totalLength * 0.5f, 0.0f));
|
_barRenderer->setPosition(cocos2d::Point(_totalLength * 0.5f, 0.0f));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -331,7 +331,7 @@ void UILoadingBar::barRendererScaleChangedWithSize()
|
||||||
void UILoadingBar::setScale9Scale()
|
void UILoadingBar::setScale9Scale()
|
||||||
{
|
{
|
||||||
float width = (float)(_percent) / 100 * _totalLength;
|
float width = (float)(_percent) / 100 * _totalLength;
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setPreferredSize(Size(width, _barRendererTextureSize.height));
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setPreferredSize(cocos2d::Size(width, _size.height));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* UILoadingBar::getDescription() const
|
const char* UILoadingBar::getDescription() const
|
||||||
|
@ -339,4 +339,22 @@ const char* UILoadingBar::getDescription() const
|
||||||
return "LoadingBar";
|
return "LoadingBar";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UILoadingBar::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UILoadingBar::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UILoadingBar::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UILoadingBar* loadingBar = dynamic_cast<UILoadingBar*>(widget);
|
||||||
|
if (loadingBar)
|
||||||
|
{
|
||||||
|
_prevIgnoreSize = loadingBar->_prevIgnoreSize;
|
||||||
|
setScale9Enabled(loadingBar->_scale9Enabled);
|
||||||
|
loadTexture(loadingBar->_textureFile.c_str(), loadingBar->_renderBarTexType);
|
||||||
|
setCapInsets(loadingBar->_capInsets);
|
||||||
|
setPercent(loadingBar->_percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -34,7 +34,10 @@ typedef enum
|
||||||
LoadingBarTypeLeft,
|
LoadingBarTypeLeft,
|
||||||
LoadingBarTypeRight
|
LoadingBarTypeRight
|
||||||
}LoadingBarType;
|
}LoadingBarType;
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UILoadingBar : public UIWidget
|
class UILoadingBar : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -126,6 +129,8 @@ protected:
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void setScale9Scale();
|
void setScale9Scale();
|
||||||
void barRendererScaleChangedWithSize();
|
void barRendererScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
LoadingBarType _barType;
|
LoadingBarType _barType;
|
||||||
int _percent;
|
int _percent;
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
|
|
||||||
#include "gui/UIPageView.h"
|
#include "gui/UIPageView.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
UIPageView::UIPageView():
|
UIPageView::UIPageView():
|
||||||
|
@ -33,9 +31,8 @@ _curPageIdx(0),
|
||||||
_pages(NULL),
|
_pages(NULL),
|
||||||
_touchMoveDir(PAGEVIEW_TOUCHLEFT),
|
_touchMoveDir(PAGEVIEW_TOUCHLEFT),
|
||||||
_touchStartLocation(0.0f),
|
_touchStartLocation(0.0f),
|
||||||
_touchEndLocation(0.0f),
|
|
||||||
_touchMoveStartLocation(0.0f),
|
_touchMoveStartLocation(0.0f),
|
||||||
_movePagePoint(Point::ZERO),
|
_movePagePoint(cocos2d::Point::ZERO),
|
||||||
_leftChild(NULL),
|
_leftChild(NULL),
|
||||||
_rightChild(NULL),
|
_rightChild(NULL),
|
||||||
_leftBoundary(0.0f),
|
_leftBoundary(0.0f),
|
||||||
|
@ -52,7 +49,8 @@ _eventSelector(NULL)
|
||||||
|
|
||||||
UIPageView::~UIPageView()
|
UIPageView::~UIPageView()
|
||||||
{
|
{
|
||||||
_pages->release();
|
_pages->removeAllObjects();
|
||||||
|
CC_SAFE_RELEASE(_pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
UIPageView* UIPageView::create()
|
UIPageView* UIPageView::create()
|
||||||
|
@ -69,12 +67,13 @@ UIPageView* UIPageView::create()
|
||||||
|
|
||||||
bool UIPageView::init()
|
bool UIPageView::init()
|
||||||
{
|
{
|
||||||
if (Layout::init())
|
if (UILayout::init())
|
||||||
{
|
{
|
||||||
_pages = CCArray::create();
|
_pages = cocos2d::Array::create();
|
||||||
_pages->retain();
|
_pages->retain();
|
||||||
setClippingEnabled(true);
|
setClippingEnabled(true);
|
||||||
setUpdateEnabled(true);
|
setUpdateEnabled(true);
|
||||||
|
setTouchEnabled(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -86,6 +85,10 @@ void UIPageView::addWidgetToPage(UIWidget *widget, int pageIdx, bool forceCreate
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (pageIdx < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
int pageCount = _pages->count();
|
int pageCount = _pages->count();
|
||||||
if (pageIdx < 0 || pageIdx >= pageCount)
|
if (pageIdx < 0 || pageIdx >= pageCount)
|
||||||
{
|
{
|
||||||
|
@ -95,30 +98,29 @@ void UIPageView::addWidgetToPage(UIWidget *widget, int pageIdx, bool forceCreate
|
||||||
{
|
{
|
||||||
CCLOG("pageIdx is %d, it will be added as page id [%d]",pageIdx,pageCount);
|
CCLOG("pageIdx is %d, it will be added as page id [%d]",pageIdx,pageCount);
|
||||||
}
|
}
|
||||||
Layout* newPage = createPage();
|
UILayout* newPage = createPage();
|
||||||
newPage->addChild(widget);
|
newPage->addChild(widget);
|
||||||
addPage(newPage);
|
addPage(newPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Layout * page = dynamic_cast<Layout*>(_pages->getObjectAtIndex(pageIdx));
|
UILayout * page = dynamic_cast<UILayout*>(_pages->getObjectAtIndex(pageIdx));
|
||||||
if (page)
|
if (page)
|
||||||
{
|
{
|
||||||
page->addChild(widget);
|
page->addChild(widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout* UIPageView::createPage()
|
UILayout* UIPageView::createPage()
|
||||||
{
|
{
|
||||||
Layout* newPage = Layout::create();
|
UILayout* newPage = UILayout::create();
|
||||||
newPage->setSize(getSize());
|
newPage->setSize(getSize());
|
||||||
return newPage;
|
return newPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::addPage(Layout* page)
|
void UIPageView::addPage(UILayout* page)
|
||||||
{
|
{
|
||||||
if (!page)
|
if (!page)
|
||||||
{
|
{
|
||||||
|
@ -132,20 +134,20 @@ void UIPageView::addPage(Layout* page)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Size pSize = page->getSize();
|
cocos2d::Size pSize = page->getSize();
|
||||||
Size pvSize = getSize();
|
cocos2d::Size pvSize = getSize();
|
||||||
if (!pSize.equals(pvSize))
|
if (!pSize.equals(pvSize))
|
||||||
{
|
{
|
||||||
CCLOG("page size does not match pageview size, it will be force sized!");
|
CCLOG("page size does not match pageview size, it will be force sized!");
|
||||||
page->setSize(pvSize);
|
page->setSize(pvSize);
|
||||||
}
|
}
|
||||||
page->setPosition(Point(getPositionXByIndex(_pages->count()), 0));
|
page->setPosition(cocos2d::Point(getPositionXByIndex(_pages->count()), 0));
|
||||||
_pages->addObject(page);
|
_pages->addObject(page);
|
||||||
addChild(page);
|
addChild(page);
|
||||||
updateBoundaryPages();
|
updateBoundaryPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::insertPage(Layout* page, int idx)
|
void UIPageView::insertPage(UILayout* page, int idx)
|
||||||
{
|
{
|
||||||
if (idx < 0)
|
if (idx < 0)
|
||||||
{
|
{
|
||||||
|
@ -172,27 +174,27 @@ void UIPageView::insertPage(Layout* page, int idx)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_pages->insertObject(page, idx);
|
_pages->insertObject(page, idx);
|
||||||
page->setPosition(Point(getPositionXByIndex(idx), 0));
|
page->setPosition(cocos2d::Point(getPositionXByIndex(idx), 0));
|
||||||
addChild(page);
|
addChild(page);
|
||||||
Size pSize = page->getSize();
|
cocos2d::Size pSize = page->getSize();
|
||||||
Size pvSize = getSize();
|
cocos2d::Size pvSize = getSize();
|
||||||
if (!pSize.equals(pvSize))
|
if (!pSize.equals(pvSize))
|
||||||
{
|
{
|
||||||
CCLOG("page size does not match pageview size, it will be force sized!");
|
CCLOG("page size does not match pageview size, it will be force sized!");
|
||||||
page->setSize(pvSize);
|
page->setSize(pvSize);
|
||||||
}
|
}
|
||||||
ccArray* arrayPages = _pages->data;
|
cocos2d::ccArray* arrayPages = _pages->data;
|
||||||
int length = arrayPages->num;
|
int length = arrayPages->num;
|
||||||
for (int i=(idx+1); i<length; i++) {
|
for (int i=(idx+1); i<length; i++) {
|
||||||
UIWidget* behindPage = dynamic_cast<UIWidget*>(arrayPages->arr[i]);
|
UIWidget* behindPage = dynamic_cast<UIWidget*>(arrayPages->arr[i]);
|
||||||
Point formerPos = behindPage->getPosition();
|
cocos2d::Point formerPos = behindPage->getPosition();
|
||||||
behindPage->setPosition(Point(formerPos.x+getSize().width, 0));
|
behindPage->setPosition(cocos2d::Point(formerPos.x+getSize().width, 0));
|
||||||
}
|
}
|
||||||
updateBoundaryPages();
|
updateBoundaryPages();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::removePage(Layout* page)
|
void UIPageView::removePage(UILayout* page)
|
||||||
{
|
{
|
||||||
if (!page)
|
if (!page)
|
||||||
{
|
{
|
||||||
|
@ -209,7 +211,7 @@ void UIPageView::removePageAtIndex(int index)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Layout* page = dynamic_cast<Layout*>(_pages->getObjectAtIndex(index));
|
UILayout* page = dynamic_cast<UILayout*>(_pages->getObjectAtIndex(index));
|
||||||
if (page)
|
if (page)
|
||||||
{
|
{
|
||||||
removePage(page);
|
removePage(page);
|
||||||
|
@ -222,6 +224,7 @@ void UIPageView::updateBoundaryPages()
|
||||||
{
|
{
|
||||||
_leftChild = NULL;
|
_leftChild = NULL;
|
||||||
_rightChild = NULL;
|
_rightChild = NULL;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
_leftChild = dynamic_cast<UIWidget*>(_pages->getObjectAtIndex(0));
|
_leftChild = dynamic_cast<UIWidget*>(_pages->getObjectAtIndex(0));
|
||||||
_rightChild = dynamic_cast<UIWidget*>(_pages->getLastObject());
|
_rightChild = dynamic_cast<UIWidget*>(_pages->getLastObject());
|
||||||
|
@ -234,7 +237,7 @@ float UIPageView::getPositionXByIndex(int idx)
|
||||||
|
|
||||||
bool UIPageView::addChild(UIWidget* widget)
|
bool UIPageView::addChild(UIWidget* widget)
|
||||||
{
|
{
|
||||||
return Layout::addChild(widget);
|
return UILayout::addChild(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIPageView::removeChild(UIWidget* widget)
|
bool UIPageView::removeChild(UIWidget* widget)
|
||||||
|
@ -242,14 +245,14 @@ bool UIPageView::removeChild(UIWidget* widget)
|
||||||
if (_pages->containsObject(widget))
|
if (_pages->containsObject(widget))
|
||||||
{
|
{
|
||||||
_pages->removeObject(widget);
|
_pages->removeObject(widget);
|
||||||
return Layout::removeChild(widget);
|
return UILayout::removeChild(widget);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::onSizeChanged()
|
void UIPageView::onSizeChanged()
|
||||||
{
|
{
|
||||||
Layout::onSizeChanged();
|
UILayout::onSizeChanged();
|
||||||
_rightBoundary = getSize().width;
|
_rightBoundary = getSize().width;
|
||||||
updateChildrenSize();
|
updateChildrenSize();
|
||||||
updateChildrenPosition();
|
updateChildrenPosition();
|
||||||
|
@ -262,10 +265,10 @@ void UIPageView::updateChildrenSize()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Size selfSize = getSize();
|
cocos2d::Size selfSize = getSize();
|
||||||
for (int i = 0; i < _pages->count(); i++)
|
for (unsigned int i=0; i<_pages->count(); i++)
|
||||||
{
|
{
|
||||||
Layout* page = dynamic_cast<Layout*>(_pages->getObjectAtIndex(i));
|
UILayout* page = dynamic_cast<UILayout*>(_pages->getObjectAtIndex(i));
|
||||||
page->setSize(selfSize);
|
page->setSize(selfSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,18 +291,18 @@ void UIPageView::updateChildrenPosition()
|
||||||
_curPageIdx = pageCount-1;
|
_curPageIdx = pageCount-1;
|
||||||
}
|
}
|
||||||
float pageWidth = getSize().width;
|
float pageWidth = getSize().width;
|
||||||
ccArray* arrayPages = _pages->data;
|
cocos2d::ccArray* arrayPages = _pages->data;
|
||||||
for (int i=0; i<pageCount; i++)
|
for (int i=0; i<pageCount; i++)
|
||||||
{
|
{
|
||||||
Layout* page = dynamic_cast<Layout*>(arrayPages->arr[i]);
|
UILayout* page = dynamic_cast<UILayout*>(arrayPages->arr[i]);
|
||||||
page->setPosition(Point((i-_curPageIdx)*pageWidth, 0));
|
page->setPosition(cocos2d::Point((i-_curPageIdx)*pageWidth, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::removeAllChildren()
|
void UIPageView::removeAllChildren()
|
||||||
{
|
{
|
||||||
_pages->removeAllObjects();
|
_pages->removeAllObjects();
|
||||||
Layout::removeAllChildren();
|
UILayout::removeAllChildren();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::scrollToPage(int idx)
|
void UIPageView::scrollToPage(int idx)
|
||||||
|
@ -330,13 +333,16 @@ void UIPageView::update(float dt)
|
||||||
step = -_autoScrollDistance;
|
step = -_autoScrollDistance;
|
||||||
_autoScrollDistance = 0.0f;
|
_autoScrollDistance = 0.0f;
|
||||||
_isAutoScrolling = false;
|
_isAutoScrolling = false;
|
||||||
pageTurningEvent();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_autoScrollDistance += step;
|
_autoScrollDistance += step;
|
||||||
}
|
}
|
||||||
scrollPages(-step);
|
scrollPages(-step);
|
||||||
|
if (!_isAutoScrolling)
|
||||||
|
{
|
||||||
|
pageTurningEvent();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -348,13 +354,16 @@ void UIPageView::update(float dt)
|
||||||
step = _autoScrollDistance;
|
step = _autoScrollDistance;
|
||||||
_autoScrollDistance = 0.0f;
|
_autoScrollDistance = 0.0f;
|
||||||
_isAutoScrolling = false;
|
_isAutoScrolling = false;
|
||||||
pageTurningEvent();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_autoScrollDistance -= step;
|
_autoScrollDistance -= step;
|
||||||
}
|
}
|
||||||
scrollPages(step);
|
scrollPages(step);
|
||||||
|
if (!_isAutoScrolling)
|
||||||
|
{
|
||||||
|
pageTurningEvent();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -363,14 +372,14 @@ void UIPageView::update(float dt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIPageView::onTouchBegan(const Point &touchPoint)
|
bool UIPageView::onTouchBegan(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
bool pass = Layout::onTouchBegan(touchPoint);
|
bool pass = UILayout::onTouchBegan(touchPoint);
|
||||||
handlePressLogic(touchPoint);
|
handlePressLogic(touchPoint);
|
||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::onTouchMoved(const Point &touchPoint)
|
void UIPageView::onTouchMoved(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
_touchMovePos.x = touchPoint.x;
|
_touchMovePos.x = touchPoint.x;
|
||||||
_touchMovePos.y = touchPoint.y;
|
_touchMovePos.y = touchPoint.y;
|
||||||
|
@ -387,15 +396,15 @@ void UIPageView::onTouchMoved(const Point &touchPoint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::onTouchEnded(const Point &touchPoint)
|
void UIPageView::onTouchEnded(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
Layout::onTouchEnded(touchPoint);
|
UILayout::onTouchEnded(touchPoint);
|
||||||
handleReleaseLogic(touchPoint);
|
handleReleaseLogic(touchPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::movePages(float offset)
|
void UIPageView::movePages(float offset)
|
||||||
{
|
{
|
||||||
ccArray* arrayPages = _pages->data;
|
cocos2d::ccArray* arrayPages = _pages->data;
|
||||||
int length = arrayPages->num;
|
int length = arrayPages->num;
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
|
@ -447,21 +456,21 @@ bool UIPageView::scrollPages(float touchOffset)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::onTouchCancelled(const Point &touchPoint)
|
void UIPageView::onTouchCancelled(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
Layout::onTouchCancelled(touchPoint);
|
UILayout::onTouchCancelled(touchPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::handlePressLogic(const Point &touchPoint)
|
void UIPageView::handlePressLogic(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
cocos2d::Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
||||||
_touchMoveStartLocation = nsp.x;
|
_touchMoveStartLocation = nsp.x;
|
||||||
_touchStartLocation = nsp.x;
|
_touchStartLocation = nsp.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::handleMoveLogic(const Point &touchPoint)
|
void UIPageView::handleMoveLogic(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
cocos2d::Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
||||||
float offset = 0.0;
|
float offset = 0.0;
|
||||||
float moveX = nsp.x;
|
float moveX = nsp.x;
|
||||||
offset = moveX - _touchMoveStartLocation;
|
offset = moveX - _touchMoveStartLocation;
|
||||||
|
@ -477,12 +486,16 @@ void UIPageView::handleMoveLogic(const Point &touchPoint)
|
||||||
scrollPages(offset);
|
scrollPages(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::handleReleaseLogic(const Point &touchPoint)
|
void UIPageView::handleReleaseLogic(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
|
if (_pages->count() <= 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
UIWidget* curPage = dynamic_cast<UIWidget*>(_pages->getObjectAtIndex(_curPageIdx));
|
UIWidget* curPage = dynamic_cast<UIWidget*>(_pages->getObjectAtIndex(_curPageIdx));
|
||||||
if (curPage)
|
if (curPage)
|
||||||
{
|
{
|
||||||
Point curPagePos = curPage->getPosition();
|
cocos2d::Point curPagePos = curPage->getPosition();
|
||||||
int pageCount = _pages->count();
|
int pageCount = _pages->count();
|
||||||
float curPageLocation = curPagePos.x;
|
float curPageLocation = curPagePos.x;
|
||||||
float pageWidth = getSize().width;
|
float pageWidth = getSize().width;
|
||||||
|
@ -516,12 +529,12 @@ void UIPageView::handleReleaseLogic(const Point &touchPoint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::checkChildInfo(int handleState,UIWidget* sender, const Point &touchPoint)
|
void UIPageView::checkChildInfo(int handleState,UIWidget* sender, const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
interceptTouchEvent(handleState, sender, touchPoint);
|
interceptTouchEvent(handleState, sender, touchPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::interceptTouchEvent(int handleState, UIWidget *sender, const Point &touchPoint)
|
void UIPageView::interceptTouchEvent(int handleState, UIWidget *sender, const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
switch (handleState)
|
switch (handleState)
|
||||||
{
|
{
|
||||||
|
@ -556,7 +569,7 @@ void UIPageView::pageTurningEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIPageView::addEventListener(Object *target, SEL_PageViewEvent selector)
|
void UIPageView::addEventListener(cocos2d::Object *target, SEL_PageViewEvent selector)
|
||||||
{
|
{
|
||||||
_eventListener = target;
|
_eventListener = target;
|
||||||
_eventSelector = selector;
|
_eventSelector = selector;
|
||||||
|
@ -567,9 +580,39 @@ int UIPageView::getCurPageIndex() const
|
||||||
return _curPageIdx;
|
return _curPageIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cocos2d::Array* UIPageView::getPages()
|
||||||
|
{
|
||||||
|
return _pages;
|
||||||
|
}
|
||||||
|
|
||||||
const char* UIPageView::getDescription() const
|
const char* UIPageView::getDescription() const
|
||||||
{
|
{
|
||||||
return "PageView";
|
return "PageView";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UIPageView::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UIPageView::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIPageView::copyClonedWidgetChildren(UIWidget* model)
|
||||||
|
{
|
||||||
|
cocos2d::ccArray* arrayPages = dynamic_cast<UIPageView*>(model)->getPages()->data;
|
||||||
|
int length = arrayPages->num;
|
||||||
|
for (int i=0; i<length; i++)
|
||||||
|
{
|
||||||
|
UILayout* page = (UILayout*)(arrayPages->arr[i]);
|
||||||
|
addPage(dynamic_cast<UILayout*>(page->clone()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIPageView::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UIPageView* pageView = dynamic_cast<UIPageView*>(widget);
|
||||||
|
if (pageView)
|
||||||
|
{
|
||||||
|
UILayout::copySpecialProperties(widget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -25,7 +25,7 @@
|
||||||
#ifndef __UIPAGEVIEW_H__
|
#ifndef __UIPAGEVIEW_H__
|
||||||
#define __UIPAGEVIEW_H__
|
#define __UIPAGEVIEW_H__
|
||||||
|
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
#include "gui/UIScrollInterface.h"
|
#include "gui/UIScrollInterface.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
@ -43,7 +43,7 @@ typedef enum {
|
||||||
PAGEVIEW_TOUCHRIGHT
|
PAGEVIEW_TOUCHRIGHT
|
||||||
}PVTouchDir;
|
}PVTouchDir;
|
||||||
|
|
||||||
class UIPageView : public Layout , public UIScrollInterface
|
class UIPageView : public UILayout , public UIScrollInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -78,21 +78,21 @@ public:
|
||||||
*
|
*
|
||||||
* @param page page to be added to pageview.
|
* @param page page to be added to pageview.
|
||||||
*/
|
*/
|
||||||
void addPage(Layout* page);
|
void addPage(UILayout* page);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inert a page to pageview.
|
* Inert a page to pageview.
|
||||||
*
|
*
|
||||||
* @param page page to be added to pageview.
|
* @param page page to be added to pageview.
|
||||||
*/
|
*/
|
||||||
void insertPage(Layout* page, int idx);
|
void insertPage(UILayout* page, int idx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a page of pageview.
|
* Remove a page of pageview.
|
||||||
*
|
*
|
||||||
* @param page page which will be removed.
|
* @param page page which will be removed.
|
||||||
*/
|
*/
|
||||||
void removePage(Layout* page);
|
void removePage(UILayout* page);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a page at index of pageview.
|
* Remove a page at index of pageview.
|
||||||
|
@ -115,9 +115,12 @@ public:
|
||||||
*/
|
*/
|
||||||
int getCurPageIndex() const;
|
int getCurPageIndex() const;
|
||||||
|
|
||||||
|
cocos2d::Array* getPages();
|
||||||
|
|
||||||
// event
|
// event
|
||||||
void addEventListener(cocos2d::Object *target, SEL_PageViewEvent selector);
|
void addEventListener(cocos2d::Object *target, SEL_PageViewEvent selector);
|
||||||
|
|
||||||
|
|
||||||
//override "removeChild" method of widget.
|
//override "removeChild" method of widget.
|
||||||
virtual bool removeChild(UIWidget* widget);
|
virtual bool removeChild(UIWidget* widget);
|
||||||
|
|
||||||
|
@ -145,10 +148,11 @@ public:
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool addChild(UIWidget* widget);
|
virtual bool addChild(UIWidget* widget);
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
Layout* createPage();
|
UILayout* createPage();
|
||||||
float getPositionXByIndex(int idx);
|
float getPositionXByIndex(int idx);
|
||||||
void updateBoundaryPages();
|
void updateBoundaryPages();
|
||||||
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
||||||
|
@ -162,14 +166,15 @@ protected:
|
||||||
void updateChildrenSize();
|
void updateChildrenSize();
|
||||||
void updateChildrenPosition();
|
void updateChildrenPosition();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
virtual void setClippingEnabled(bool able){Layout::setClippingEnabled(able);};
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
|
virtual void copyClonedWidgetChildren(UIWidget* model);
|
||||||
|
virtual void setClippingEnabled(bool able){UILayout::setClippingEnabled(able);};
|
||||||
protected:
|
protected:
|
||||||
int _curPageIdx;
|
int _curPageIdx;
|
||||||
cocos2d::Array* _pages;
|
cocos2d::Array* _pages;
|
||||||
PVTouchDir _touchMoveDir;
|
PVTouchDir _touchMoveDir;
|
||||||
float _touchStartLocation;
|
float _touchStartLocation;
|
||||||
float _touchEndLocation;
|
|
||||||
float _touchMoveStartLocation;
|
float _touchMoveStartLocation;
|
||||||
cocos2d::Point _movePagePoint;
|
cocos2d::Point _movePagePoint;
|
||||||
UIWidget* _leftChild;
|
UIWidget* _leftChild;
|
||||||
|
@ -183,6 +188,7 @@ protected:
|
||||||
float _childFocusCancelOffset;
|
float _childFocusCancelOffset;
|
||||||
cocos2d::Object* _eventListener;
|
cocos2d::Object* _eventListener;
|
||||||
SEL_PageViewEvent _eventSelector;
|
SEL_PageViewEvent _eventSelector;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
|
|
||||||
#include "gui/UIRootWidget.h"
|
#include "gui/UIRootWidget.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
UIRootWidget::UIRootWidget()
|
UIRootWidget::UIRootWidget()
|
||||||
|
@ -50,9 +48,9 @@ UIRootWidget* UIRootWidget::create()
|
||||||
|
|
||||||
bool UIRootWidget::init()
|
bool UIRootWidget::init()
|
||||||
{
|
{
|
||||||
if (Layout::init())
|
if (UILayout::init())
|
||||||
{
|
{
|
||||||
setSize(Director::getInstance()->getWinSize());
|
setSize(cocos2d::Director::getInstance()->getWinSize());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -25,11 +25,15 @@
|
||||||
#ifndef __UIROOTWIDGET_H__
|
#ifndef __UIROOTWIDGET_H__
|
||||||
#define __UIROOTWIDGET_H__
|
#define __UIROOTWIDGET_H__
|
||||||
|
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
class UIRootWidget : public Layout
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
class UIRootWidget : public UILayout
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -36,7 +36,6 @@ protected:
|
||||||
virtual void handleMoveLogic(const cocos2d::Point &touchPoint) = 0;
|
virtual void handleMoveLogic(const cocos2d::Point &touchPoint) = 0;
|
||||||
virtual void handleReleaseLogic(const cocos2d::Point &touchPoint) = 0;
|
virtual void handleReleaseLogic(const cocos2d::Point &touchPoint) = 0;
|
||||||
virtual void interceptTouchEvent(int handleState, UIWidget* sender, const cocos2d::Point &touchPoint) = 0;
|
virtual void interceptTouchEvent(int handleState, UIWidget* sender, const cocos2d::Point &touchPoint) = 0;
|
||||||
// virtual bool isInScrollDegreeRange(UIWidget* widget) = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -25,7 +25,7 @@
|
||||||
#ifndef __UISCROLLVIEW_H__
|
#ifndef __UISCROLLVIEW_H__
|
||||||
#define __UISCROLLVIEW_H__
|
#define __UISCROLLVIEW_H__
|
||||||
|
|
||||||
#include "gui//Layout.h"
|
#include "gui/UILayout.h"
|
||||||
#include "gui/UIScrollInterface.h"
|
#include "gui/UIScrollInterface.h"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
@ -34,16 +34,8 @@ enum SCROLLVIEW_DIR
|
||||||
{
|
{
|
||||||
SCROLLVIEW_DIR_NONE,
|
SCROLLVIEW_DIR_NONE,
|
||||||
SCROLLVIEW_DIR_VERTICAL,
|
SCROLLVIEW_DIR_VERTICAL,
|
||||||
SCROLLVIEW_DIR_HORIZONTAL
|
SCROLLVIEW_DIR_HORIZONTAL,
|
||||||
};
|
SCROLLVIEW_DIR_BOTH
|
||||||
|
|
||||||
enum SCROLLVIEW_MOVE_DIR
|
|
||||||
{
|
|
||||||
SCROLLVIEW_MOVE_DIR_NONE,
|
|
||||||
SCROLLVIEW_MOVE_DIR_UP,
|
|
||||||
SCROLLVIEW_MOVE_DIR_DOWN,
|
|
||||||
SCROLLVIEW_MOVE_DIR_LEFT,
|
|
||||||
SCROLLVIEW_MOVE_DIR_RIGHT,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -52,13 +44,18 @@ typedef enum
|
||||||
SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM,
|
SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM,
|
||||||
SCROLLVIEW_EVENT_SCROLL_TO_LEFT,
|
SCROLLVIEW_EVENT_SCROLL_TO_LEFT,
|
||||||
SCROLLVIEW_EVENT_SCROLL_TO_RIGHT,
|
SCROLLVIEW_EVENT_SCROLL_TO_RIGHT,
|
||||||
|
SCROLLVIEW_EVENT_SCROLLING,
|
||||||
|
SCROLLVIEW_EVENT_BOUNCE_TOP,
|
||||||
|
SCROLLVIEW_EVENT_BOUNCE_BOTTOM,
|
||||||
|
SCROLLVIEW_EVENT_BOUNCE_LEFT,
|
||||||
|
SCROLLVIEW_EVENT_BOUNCE_RIGHT
|
||||||
}ScrollviewEventType;
|
}ScrollviewEventType;
|
||||||
|
|
||||||
typedef void (cocos2d::Object::*SEL_ScrollViewEvent)(cocos2d::Object*, ScrollviewEventType);
|
typedef void (cocos2d::CCObject::*SEL_ScrollViewEvent)(cocos2d::Object*, ScrollviewEventType);
|
||||||
#define scrollvieweventselector(_SELECTOR) (SEL_ScrollViewEvent)(&_SELECTOR)
|
#define scrollvieweventselector(_SELECTOR) (SEL_ScrollViewEvent)(&_SELECTOR)
|
||||||
|
|
||||||
|
|
||||||
class UIScrollView : public Layout , public UIScrollInterface
|
class UIScrollView : public UILayout , public UIScrollInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -83,7 +80,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param SCROLLVIEW_DIR
|
* @param SCROLLVIEW_DIR
|
||||||
*/
|
*/
|
||||||
void setDirection(SCROLLVIEW_DIR dir);
|
virtual void setDirection(SCROLLVIEW_DIR dir);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets scroll direction of scrollview.
|
* Gets scroll direction of scrollview.
|
||||||
|
@ -101,17 +98,117 @@ public:
|
||||||
*
|
*
|
||||||
* @return inner container.
|
* @return inner container.
|
||||||
*/
|
*/
|
||||||
Layout* getInnerContainer();
|
UILayout* getInnerContainer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scroll inner container to bottom boundary of scrollview.
|
* Scroll inner container to bottom boundary of scrollview.
|
||||||
*/
|
*/
|
||||||
void scrollToBottom();
|
void scrollToBottom(float time, bool attenuated);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scroll inner container to top boundary of scrollview.
|
* Scroll inner container to top boundary of scrollview.
|
||||||
*/
|
*/
|
||||||
void scrollToTop();
|
void scrollToTop(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToLeft(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToRight(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to top and left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToTopLeft(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to top and right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToTopRight(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to bottom and left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToBottomLeft(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to bottom and right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToBottomRight(float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to vertical percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToPercentVertical(float percent, float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to horizontal percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToPercentHorizontal(float percent, float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll inner container to both direction percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void scrollToPercentBothDirection(const cocos2d::Point& percent, float time, bool attenuated);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to bottom boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToBottom();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to top boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToTop();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToLeft();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToRight();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to top and left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToTopLeft();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to top and right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToTopRight();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to bottom and left boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToBottomLeft();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to bottom and right boundary of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToBottomRight();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to vertical percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToPercentVertical(float percent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to horizontal percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToPercentHorizontal(float percent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move inner container to both direction percent position of scrollview.
|
||||||
|
*/
|
||||||
|
void jumpToPercentBothDirection(const cocos2d::Point& percent);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes inner container size of scrollview.
|
* Changes inner container size of scrollview.
|
||||||
|
@ -165,6 +262,14 @@ public:
|
||||||
|
|
||||||
virtual void update(float dt);
|
virtual void update(float dt);
|
||||||
|
|
||||||
|
void setBounceEnabled(bool enabled);
|
||||||
|
|
||||||
|
bool isBounceEnabled() const;
|
||||||
|
|
||||||
|
void setInertiaScrollEnabled(bool enabled);
|
||||||
|
|
||||||
|
bool isInertiaScrollEnabled() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets LayoutType.
|
* Sets LayoutType.
|
||||||
*
|
*
|
||||||
|
@ -192,12 +297,20 @@ public:
|
||||||
protected:
|
protected:
|
||||||
virtual bool init();
|
virtual bool init();
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
void moveChildren(float offset);
|
void moveChildren(float offsetX, float offsetY);
|
||||||
void autoScrollChildren(float dt);
|
void autoScrollChildren(float dt);
|
||||||
void startAutoScrollChildren(float v);
|
void bounceChildren(float dt);
|
||||||
|
void checkBounceBoundary();
|
||||||
|
bool checkNeedBounce();
|
||||||
|
void startAutoScrollChildrenWithOriginalSpeed(const cocos2d::Point& dir, float v, bool attenuated, float acceleration);
|
||||||
|
void startAutoScrollChildrenWithDestination(const cocos2d::Point& des, float time, bool attenuated);
|
||||||
|
void jumpToDestination(const cocos2d::Point& des);
|
||||||
void stopAutoScrollChildren();
|
void stopAutoScrollChildren();
|
||||||
float getCurAutoScrollDistance(float time);
|
void startBounceChildren(float v);
|
||||||
virtual bool scrollChildren(float touchOffset);
|
void stopBounceChildren();
|
||||||
|
bool checkCustomScrollDestination(float* touchOffsetX, float* touchOffsetY);
|
||||||
|
virtual bool scrollChildren(float touchOffsetX, float touchOffsetY);
|
||||||
|
bool bounceScrollChildren(float touchOffsetX, float touchOffsetY);
|
||||||
void startRecordSlidAction();
|
void startRecordSlidAction();
|
||||||
virtual void endRecordSlidAction();
|
virtual void endRecordSlidAction();
|
||||||
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
virtual void handlePressLogic(const cocos2d::Point &touchPoint);
|
||||||
|
@ -206,48 +319,71 @@ protected:
|
||||||
virtual void interceptTouchEvent(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
virtual void interceptTouchEvent(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
||||||
virtual void checkChildInfo(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
virtual void checkChildInfo(int handleState,UIWidget* sender,const cocos2d::Point &touchPoint);
|
||||||
void recordSlidTime(float dt);
|
void recordSlidTime(float dt);
|
||||||
//override "releaseResoures" method of widget.
|
|
||||||
virtual void releaseResoures();
|
|
||||||
|
|
||||||
void scrollToTopEvent();
|
void scrollToTopEvent();
|
||||||
void scrollToBottomEvent();
|
void scrollToBottomEvent();
|
||||||
void scrollToLeftEvent();
|
void scrollToLeftEvent();
|
||||||
void scrollToRightEvent();
|
void scrollToRightEvent();
|
||||||
void setMoveDirection(SCROLLVIEW_MOVE_DIR dir);
|
void scrollingEvent();
|
||||||
SCROLLVIEW_MOVE_DIR getMoveDirection();
|
void bounceTopEvent();
|
||||||
|
void bounceBottomEvent();
|
||||||
|
void bounceLeftEvent();
|
||||||
|
void bounceRightEvent();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
virtual void setClippingEnabled(bool able){Layout::setClippingEnabled(able);};
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
|
virtual void copyClonedWidgetChildren(UIWidget* model);
|
||||||
|
virtual void setClippingEnabled(bool able){UILayout::setClippingEnabled(able);};
|
||||||
protected:
|
protected:
|
||||||
Layout* _innerContainer;
|
UILayout* _innerContainer;
|
||||||
|
|
||||||
SCROLLVIEW_DIR _direction;
|
SCROLLVIEW_DIR _direction;
|
||||||
SCROLLVIEW_MOVE_DIR _moveDirection;
|
|
||||||
float _touchStartLocation;
|
cocos2d::Point _touchBeganPoint;
|
||||||
float _touchEndLocation;
|
cocos2d::Point _touchMovedPoint;
|
||||||
float _touchMoveStartLocation;
|
cocos2d::Point _touchEndedPoint;
|
||||||
float _topBoundary;//test
|
cocos2d::Point _touchMovingPoint;
|
||||||
float _bottomBoundary;//test
|
cocos2d::Point _autoScrollDir;
|
||||||
|
|
||||||
|
float _topBoundary;
|
||||||
|
float _bottomBoundary;
|
||||||
float _leftBoundary;
|
float _leftBoundary;
|
||||||
float _rightBoundary;
|
float _rightBoundary;
|
||||||
|
|
||||||
bool _topEnd;
|
float _bounceTopBoundary;
|
||||||
bool _bottomEnd;
|
float _bounceBottomBoundary;
|
||||||
bool _leftEnd;
|
float _bounceLeftBoundary;
|
||||||
bool _rightEnd;
|
float _bounceRightBoundary;
|
||||||
|
|
||||||
|
|
||||||
bool _autoScroll;
|
bool _autoScroll;
|
||||||
|
float _autoScrollAddUpTime;
|
||||||
|
|
||||||
float _autoScrollOriginalSpeed;
|
float _autoScrollOriginalSpeed;
|
||||||
float _autoScrollAcceleration;
|
float _autoScrollAcceleration;
|
||||||
|
bool _isAutoScrollSpeedAttenuated;
|
||||||
|
bool _needCheckAutoScrollDestination;
|
||||||
|
cocos2d::Point _autoScrollDestination;
|
||||||
|
|
||||||
bool _bePressed;
|
bool _bePressed;
|
||||||
float _slidTime;
|
float _slidTime;
|
||||||
cocos2d::Point _moveChildPoint;
|
cocos2d::Point _moveChildPoint;
|
||||||
float _childFocusCancelOffset;
|
float _childFocusCancelOffset;
|
||||||
|
|
||||||
|
bool _leftBounceNeeded;
|
||||||
|
bool _topBounceNeeded;
|
||||||
|
bool _rightBounceNeeded;
|
||||||
|
bool _bottomBounceNeeded;
|
||||||
|
|
||||||
|
bool _bounceEnabled;
|
||||||
|
bool _bouncing;
|
||||||
|
cocos2d::Point _bounceDir;
|
||||||
|
float _bounceOriginalSpeed;
|
||||||
|
bool _inertiaScrollEnabled;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cocos2d::Object* _eventListener;
|
cocos2d::Object* _eventListener;
|
||||||
SEL_ScrollViewEvent _eventSelector;
|
SEL_ScrollViewEvent _eventSelector;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,15 +25,12 @@
|
||||||
#include "gui/UISlider.h"
|
#include "gui/UISlider.h"
|
||||||
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
#include "extensions/GUI/CCControlExtension/CCScale9Sprite.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
using namespace cocos2d::extension;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
UISlider::UISlider():
|
UISlider::UISlider():
|
||||||
_barRenderer(NULL),
|
_barRenderer(NULL),
|
||||||
_progressBarRenderer(NULL),
|
_progressBarRenderer(NULL),
|
||||||
_progressBarTextureSize(Size::ZERO),
|
_progressBarTextureSize(cocos2d::Size::ZERO),
|
||||||
_slidBallNormalRenderer(NULL),
|
_slidBallNormalRenderer(NULL),
|
||||||
_slidBallPressedRenderer(NULL),
|
_slidBallPressedRenderer(NULL),
|
||||||
_slidBallDisabledRenderer(NULL),
|
_slidBallDisabledRenderer(NULL),
|
||||||
|
@ -47,8 +44,8 @@ _progressBarTextureFile(""),
|
||||||
_slidBallNormalTextureFile(""),
|
_slidBallNormalTextureFile(""),
|
||||||
_slidBallPressedTextureFile(""),
|
_slidBallPressedTextureFile(""),
|
||||||
_slidBallDisabledTextureFile(""),
|
_slidBallDisabledTextureFile(""),
|
||||||
_capInsetsBarRenderer(Rect::ZERO),
|
_capInsetsBarRenderer(cocos2d::Rect::ZERO),
|
||||||
_capInsetsProgressBarRenderer(Rect::ZERO),
|
_capInsetsProgressBarRenderer(cocos2d::Rect::ZERO),
|
||||||
_slidPercentListener(NULL),
|
_slidPercentListener(NULL),
|
||||||
_slidPercentSelector(NULL),
|
_slidPercentSelector(NULL),
|
||||||
_barTexType(UI_TEX_TYPE_LOCAL),
|
_barTexType(UI_TEX_TYPE_LOCAL),
|
||||||
|
@ -79,17 +76,17 @@ UISlider* UISlider::create()
|
||||||
void UISlider::initRenderer()
|
void UISlider::initRenderer()
|
||||||
{
|
{
|
||||||
UIWidget::initRenderer();
|
UIWidget::initRenderer();
|
||||||
_barRenderer = CCSprite::create();
|
_barRenderer = cocos2d::Sprite::create();
|
||||||
_progressBarRenderer = CCSprite::create();
|
_progressBarRenderer = cocos2d::Sprite::create();
|
||||||
_progressBarRenderer->setAnchorPoint(Point(0.0f, 0.5f));
|
_progressBarRenderer->setAnchorPoint(cocos2d::Point(0.0f, 0.5f));
|
||||||
_renderer->addChild(_barRenderer, -1);
|
_renderer->addChild(_barRenderer, -1);
|
||||||
_renderer->addChild(_progressBarRenderer, -1);
|
_renderer->addChild(_progressBarRenderer, -1);
|
||||||
_slidBallNormalRenderer = CCSprite::create();
|
_slidBallNormalRenderer = cocos2d::Sprite::create();
|
||||||
_slidBallPressedRenderer = CCSprite::create();
|
_slidBallPressedRenderer = cocos2d::Sprite::create();
|
||||||
_slidBallPressedRenderer->setVisible(false);
|
_slidBallPressedRenderer->setVisible(false);
|
||||||
_slidBallDisabledRenderer = CCSprite::create();
|
_slidBallDisabledRenderer = cocos2d::Sprite::create();
|
||||||
_slidBallDisabledRenderer->setVisible(false);
|
_slidBallDisabledRenderer->setVisible(false);
|
||||||
_slidBallRenderer = CCNode::create();
|
_slidBallRenderer = cocos2d::Node::create();
|
||||||
_slidBallRenderer->addChild(_slidBallNormalRenderer);
|
_slidBallRenderer->addChild(_slidBallNormalRenderer);
|
||||||
_slidBallRenderer->addChild(_slidBallPressedRenderer);
|
_slidBallRenderer->addChild(_slidBallPressedRenderer);
|
||||||
_slidBallRenderer->addChild(_slidBallDisabledRenderer);
|
_slidBallRenderer->addChild(_slidBallDisabledRenderer);
|
||||||
|
@ -109,21 +106,21 @@ void UISlider::loadBarTexture(const char* fileName, TextureResType texType)
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->initWithFile(fileName);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->initWithFile(fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->initWithFile(fileName);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->initWithFile(fileName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->initWithSpriteFrameName(fileName);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->initWithSpriteFrameName(fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->initWithSpriteFrameName(fileName);
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->initWithSpriteFrameName(fileName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -131,13 +128,13 @@ void UISlider::loadBarTexture(const char* fileName, TextureResType texType)
|
||||||
}
|
}
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_barRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
barRendererScaleChangedWithSize();
|
barRendererScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
@ -155,21 +152,21 @@ void UISlider::loadProgressBarTexture(const char *fileName, TextureResType texTy
|
||||||
case UI_TEX_TYPE_LOCAL:
|
case UI_TEX_TYPE_LOCAL:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->initWithFile(fileName);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->initWithFile(fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_progressBarRenderer)->initWithFile(fileName);
|
dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer)->initWithFile(fileName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->initWithSpriteFrameName(fileName);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->initWithSpriteFrameName(fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_progressBarRenderer)->initWithSpriteFrameName(fileName);
|
dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer)->initWithSpriteFrameName(fileName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -177,15 +174,15 @@ void UISlider::loadProgressBarTexture(const char *fileName, TextureResType texTy
|
||||||
}
|
}
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<Sprite*>(_progressBarRenderer)->setColor(getColor());
|
dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer)->setColor(getColor());
|
||||||
dynamic_cast<Sprite*>(_progressBarRenderer)->setOpacity(getOpacity());
|
dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer)->setOpacity(getOpacity());
|
||||||
}
|
}
|
||||||
_progressBarRenderer->setAnchorPoint(Point(0.0f, 0.5f));
|
_progressBarRenderer->setAnchorPoint(cocos2d::Point(0.0f, 0.5f));
|
||||||
_progressBarTextureSize = _progressBarRenderer->getContentSize();
|
_progressBarTextureSize = _progressBarRenderer->getContentSize();
|
||||||
progressBarRendererScaleChangedWithSize();
|
progressBarRendererScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
@ -204,13 +201,13 @@ void UISlider::setScale9Enabled(bool able)
|
||||||
_progressBarRenderer = NULL;
|
_progressBarRenderer = NULL;
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
_barRenderer = Scale9Sprite::create();
|
_barRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
_progressBarRenderer = Scale9Sprite::create();
|
_progressBarRenderer = cocos2d::extension::Scale9Sprite::create();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_barRenderer = CCSprite::create();
|
_barRenderer = cocos2d::Sprite::create();
|
||||||
_progressBarRenderer = CCSprite::create();
|
_progressBarRenderer = cocos2d::Sprite::create();
|
||||||
}
|
}
|
||||||
loadBarTexture(_textureFile.c_str(), _barTexType);
|
loadBarTexture(_textureFile.c_str(), _barTexType);
|
||||||
loadProgressBarTexture(_progressBarTextureFile.c_str(), _progressBarTexType);
|
loadProgressBarTexture(_progressBarTextureFile.c_str(), _progressBarTexType);
|
||||||
|
@ -239,30 +236,30 @@ void UISlider::ignoreContentAdaptWithSize(bool ignore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::setCapInsets(const Rect &capInsets)
|
void UISlider::setCapInsets(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
setCapInsetsBarRenderer(capInsets);
|
setCapInsetsBarRenderer(capInsets);
|
||||||
setCapInsetProgressBarRebderer(capInsets);
|
setCapInsetProgressBarRebderer(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::setCapInsetsBarRenderer(const Rect &capInsets)
|
void UISlider::setCapInsetsBarRenderer(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsetsBarRenderer = capInsets;
|
_capInsetsBarRenderer = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::setCapInsetProgressBarRebderer(const Rect &capInsets)
|
void UISlider::setCapInsetProgressBarRebderer(const cocos2d::Rect &capInsets)
|
||||||
{
|
{
|
||||||
_capInsetsProgressBarRenderer = capInsets;
|
_capInsetsProgressBarRenderer = capInsets;
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->setCapInsets(capInsets);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->setCapInsets(capInsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::loadSlidBallTextures(const char* normal,const char* pressed,const char* disabled,TextureResType texType)
|
void UISlider::loadSlidBallTextures(const char* normal,const char* pressed,const char* disabled,TextureResType texType)
|
||||||
|
@ -353,10 +350,10 @@ void UISlider::setPercent(int percent)
|
||||||
}
|
}
|
||||||
_percent = percent;
|
_percent = percent;
|
||||||
float dis = _barLength*(percent/100.0f);
|
float dis = _barLength*(percent/100.0f);
|
||||||
_slidBallRenderer->setPosition(Point(-_barLength/2.0f + dis, 0.0f));
|
_slidBallRenderer->setPosition(cocos2d::Point(-_barLength/2.0f + dis, 0.0f));
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->setPreferredSize(Size(dis,_progressBarTextureSize.height));
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->setPreferredSize(cocos2d::Size(dis,_progressBarTextureSize.height));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -365,10 +362,10 @@ void UISlider::setPercent(int percent)
|
||||||
{
|
{
|
||||||
case UI_TEX_TYPE_PLIST:
|
case UI_TEX_TYPE_PLIST:
|
||||||
{
|
{
|
||||||
Sprite* barNode = dynamic_cast<Sprite*>(_progressBarRenderer);
|
cocos2d::Sprite* barNode = dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer);
|
||||||
if (barNode)
|
if (barNode)
|
||||||
{
|
{
|
||||||
Point to = barNode->getTextureRect().origin;
|
cocos2d::Point to = barNode->getTextureRect().origin;
|
||||||
x = to.x;
|
x = to.x;
|
||||||
y = to.y;
|
y = to.y;
|
||||||
}
|
}
|
||||||
|
@ -377,33 +374,33 @@ void UISlider::setPercent(int percent)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dynamic_cast<Sprite*>(_progressBarRenderer)->setTextureRect(Rect(x, y, _progressBarTextureSize.width * (percent/100.0f), _progressBarTextureSize.height));
|
dynamic_cast<cocos2d::Sprite*>(_progressBarRenderer)->setTextureRect(cocos2d::Rect(x, y, _progressBarTextureSize.width * (percent/100.0f), _progressBarTextureSize.height));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UISlider::onTouchBegan(const Point &touchPoint)
|
bool UISlider::onTouchBegan(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
bool pass = UIWidget::onTouchBegan(touchPoint);
|
bool pass = UIWidget::onTouchBegan(touchPoint);
|
||||||
Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
cocos2d::Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
||||||
setPercent(getPercentWithBallPos(nsp.x));
|
setPercent(getPercentWithBallPos(nsp.x));
|
||||||
percentChangedEvent();
|
percentChangedEvent();
|
||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::onTouchMoved(const Point &touchPoint)
|
void UISlider::onTouchMoved(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
cocos2d::Point nsp = _renderer->convertToNodeSpace(touchPoint);
|
||||||
_slidBallRenderer->setPosition(Point(nsp.x,0));
|
_slidBallRenderer->setPosition(cocos2d::Point(nsp.x,0));
|
||||||
setPercent(getPercentWithBallPos(nsp.x));
|
setPercent(getPercentWithBallPos(nsp.x));
|
||||||
percentChangedEvent();
|
percentChangedEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::onTouchEnded(const Point &touchPoint)
|
void UISlider::onTouchEnded(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
UIWidget::onTouchEnded(touchPoint);
|
UIWidget::onTouchEnded(touchPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::onTouchCancelled(const Point &touchPoint)
|
void UISlider::onTouchCancelled(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
UIWidget::onTouchCancelled(touchPoint);
|
UIWidget::onTouchCancelled(touchPoint);
|
||||||
}
|
}
|
||||||
|
@ -413,7 +410,7 @@ float UISlider::getPercentWithBallPos(float px)
|
||||||
return (((px-(-_barLength/2.0f))/_barLength)*100.0f);
|
return (((px-(-_barLength/2.0f))/_barLength)*100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UISlider::addEventListener(Object *target, SEL_SlidPercentChangedEvent selector)
|
void UISlider::addEventListener(cocos2d::Object *target, SEL_SlidPercentChangedEvent selector)
|
||||||
{
|
{
|
||||||
_slidPercentListener = target;
|
_slidPercentListener = target;
|
||||||
_slidPercentSelector = selector;
|
_slidPercentSelector = selector;
|
||||||
|
@ -438,12 +435,12 @@ void UISlider::onSizeChanged()
|
||||||
progressBarRendererScaleChangedWithSize();
|
progressBarRendererScaleChangedWithSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UISlider::getContentSize() const
|
const cocos2d::Size& UISlider::getContentSize() const
|
||||||
{
|
{
|
||||||
return _barRenderer->getContentSize();
|
return _barRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UISlider::getVirtualRenderer()
|
cocos2d::Node* UISlider::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _barRenderer;
|
return _barRenderer;
|
||||||
}
|
}
|
||||||
|
@ -462,11 +459,11 @@ void UISlider::barRendererScaleChangedWithSize()
|
||||||
_barLength = _size.width;
|
_barLength = _size.width;
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_barRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_barRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size btextureSize = _barRenderer->getContentSize();
|
cocos2d::Size btextureSize = _barRenderer->getContentSize();
|
||||||
if (btextureSize.width <= 0.0f || btextureSize.height <= 0.0f)
|
if (btextureSize.width <= 0.0f || btextureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_barRenderer->setScale(1.0f);
|
_barRenderer->setScale(1.0f);
|
||||||
|
@ -487,7 +484,7 @@ void UISlider::progressBarRendererScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (!_scale9Enabled)
|
if (!_scale9Enabled)
|
||||||
{
|
{
|
||||||
Size ptextureSize = _progressBarTextureSize;
|
cocos2d::Size ptextureSize = _progressBarTextureSize;
|
||||||
float pscaleX = _size.width / ptextureSize.width;
|
float pscaleX = _size.width / ptextureSize.width;
|
||||||
float pscaleY = _size.height / ptextureSize.height;
|
float pscaleY = _size.height / ptextureSize.height;
|
||||||
_progressBarRenderer->setScaleX(pscaleX);
|
_progressBarRenderer->setScaleX(pscaleX);
|
||||||
|
@ -498,11 +495,11 @@ void UISlider::progressBarRendererScaleChangedWithSize()
|
||||||
{
|
{
|
||||||
if (_scale9Enabled)
|
if (_scale9Enabled)
|
||||||
{
|
{
|
||||||
dynamic_cast<Scale9Sprite*>(_progressBarRenderer)->setPreferredSize(_size);
|
dynamic_cast<cocos2d::extension::Scale9Sprite*>(_progressBarRenderer)->setPreferredSize(_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size ptextureSize = _progressBarTextureSize;
|
cocos2d::Size ptextureSize = _progressBarTextureSize;
|
||||||
if (ptextureSize.width <= 0.0f || ptextureSize.height <= 0.0f)
|
if (ptextureSize.width <= 0.0f || ptextureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_progressBarRenderer->setScale(1.0f);
|
_progressBarRenderer->setScale(1.0f);
|
||||||
|
@ -514,7 +511,7 @@ void UISlider::progressBarRendererScaleChangedWithSize()
|
||||||
_progressBarRenderer->setScaleY(pscaleY);
|
_progressBarRenderer->setScaleY(pscaleY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_progressBarRenderer->setPosition(Point(-_barLength * 0.5f, 0.0f));
|
_progressBarRenderer->setPosition(cocos2d::Point(-_barLength * 0.5f, 0.0f));
|
||||||
setPercent(_percent);
|
setPercent(_percent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,4 +541,25 @@ const char* UISlider::getDescription() const
|
||||||
return "Slider";
|
return "Slider";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UISlider::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UISlider::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UISlider::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UISlider* slider = dynamic_cast<UISlider*>(widget);
|
||||||
|
if (slider)
|
||||||
|
{
|
||||||
|
_prevIgnoreSize = slider->_prevIgnoreSize;
|
||||||
|
setScale9Enabled(slider->_scale9Enabled);
|
||||||
|
loadBarTexture(slider->_textureFile.c_str(), slider->_barTexType);
|
||||||
|
loadProgressBarTexture(slider->_progressBarTextureFile.c_str(), slider->_progressBarTexType);
|
||||||
|
loadSlidBallTextureNormal(slider->_slidBallNormalTextureFile.c_str(), slider->_ballNTexType);
|
||||||
|
loadSlidBallTexturePressed(slider->_slidBallPressedTextureFile.c_str(), slider->_ballPTexType);
|
||||||
|
loadSlidBallTextureDisabled(slider->_slidBallDisabledTextureFile.c_str(), slider->_ballDTexType);
|
||||||
|
setPercent(slider->getPercent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -34,9 +34,13 @@ typedef enum
|
||||||
SLIDER_PERCENTCHANGED
|
SLIDER_PERCENTCHANGED
|
||||||
}SliderEventType;
|
}SliderEventType;
|
||||||
|
|
||||||
typedef void (cocos2d::CCObject::*SEL_SlidPercentChangedEvent)(cocos2d::Object*,SliderEventType);
|
typedef void (cocos2d::Object::*SEL_SlidPercentChangedEvent)(cocos2d::Object*,SliderEventType);
|
||||||
#define sliderpercentchangedselector(_SELECTOR) (SEL_SlidPercentChangedEvent)(&_SELECTOR)
|
#define sliderpercentchangedselector(_SELECTOR) (SEL_SlidPercentChangedEvent)(&_SELECTOR)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UISlider : public UIWidget
|
class UISlider : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -185,6 +189,7 @@ public:
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initRenderer();
|
virtual void initRenderer();
|
||||||
float getPercentWithBallPos(float location);
|
float getPercentWithBallPos(float location);
|
||||||
|
@ -195,6 +200,8 @@ protected:
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void barRendererScaleChangedWithSize();
|
void barRendererScaleChangedWithSize();
|
||||||
void progressBarRendererScaleChangedWithSize();
|
void progressBarRendererScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
cocos2d::Node* _barRenderer;
|
cocos2d::Node* _barRenderer;
|
||||||
cocos2d::Node* _progressBarRenderer;
|
cocos2d::Node* _progressBarRenderer;
|
||||||
|
|
|
@ -24,19 +24,17 @@
|
||||||
|
|
||||||
#include "gui/UITextField.h"
|
#include "gui/UITextField.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
UICCTextField::UICCTextField()
|
UICCTextField::UICCTextField()
|
||||||
: m_bMaxLengthEnabled(false)
|
: _maxLengthEnabled(false)
|
||||||
, m_nMaxLength(0)
|
, _maxLength(0)
|
||||||
, m_bPasswordEnabled(false)
|
, _passwordEnabled(false)
|
||||||
, m_strPasswordStyleText("*")
|
, _passwordStyleText("*")
|
||||||
, m_bAttachWithIME(false)
|
, _attachWithIME(false)
|
||||||
, m_bDetachWithIME(false)
|
, _detachWithIME(false)
|
||||||
, m_bInsertText(false)
|
, _insertText(false)
|
||||||
, m_bDeleteBackward(false)
|
, _deleteBackward(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,26 +62,26 @@ UICCTextField * UICCTextField::create(const char *placeholder, const char *fontN
|
||||||
|
|
||||||
void UICCTextField::onEnter()
|
void UICCTextField::onEnter()
|
||||||
{
|
{
|
||||||
CCTextFieldTTF::setDelegate(this);
|
cocos2d::TextFieldTTF::setDelegate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool UICCTextField::onTextFieldAttachWithIME(TextFieldTTF *pSender)
|
bool UICCTextField::onTextFieldAttachWithIME(cocos2d::TextFieldTTF *pSender)
|
||||||
{
|
{
|
||||||
setAttachWithIME(true);
|
setAttachWithIME(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::onTextFieldInsertText(TextFieldTTF *pSender, const char *text, int nLen)
|
bool UICCTextField::onTextFieldInsertText(cocos2d::TextFieldTTF *pSender, const char *text, int nLen)
|
||||||
{
|
{
|
||||||
if (nLen == 1 && strcmp(text, "\n") == 0)
|
if (nLen == 1 && strcmp(text, "\n") == 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setInsertText(true);
|
setInsertText(true);
|
||||||
if (m_bMaxLengthEnabled)
|
if (_maxLengthEnabled)
|
||||||
{
|
{
|
||||||
if (CCTextFieldTTF::getCharCount() >= m_nMaxLength)
|
if (cocos2d::TextFieldTTF::getCharCount() >= _maxLength)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -92,13 +90,13 @@ bool UICCTextField::onTextFieldInsertText(TextFieldTTF *pSender, const char *tex
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::onTextFieldDeleteBackward(TextFieldTTF *pSender, const char *delText, int nLen)
|
bool UICCTextField::onTextFieldDeleteBackward(cocos2d::TextFieldTTF *pSender, const char *delText, int nLen)
|
||||||
{
|
{
|
||||||
setDeleteBackward(true);
|
setDeleteBackward(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::onTextFieldDetachWithIME(TextFieldTTF *pSender)
|
bool UICCTextField::onTextFieldDetachWithIME(cocos2d::TextFieldTTF *pSender)
|
||||||
{
|
{
|
||||||
setDetachWithIME(true);
|
setDetachWithIME(true);
|
||||||
return false;
|
return false;
|
||||||
|
@ -107,11 +105,11 @@ bool UICCTextField::onTextFieldDetachWithIME(TextFieldTTF *pSender)
|
||||||
void UICCTextField::insertText(const char * text, int len)
|
void UICCTextField::insertText(const char * text, int len)
|
||||||
{
|
{
|
||||||
std::string str_text = text;
|
std::string str_text = text;
|
||||||
int str_len = strlen(CCTextFieldTTF::getString());
|
int str_len = strlen(cocos2d::TextFieldTTF::getString());
|
||||||
|
|
||||||
if (strcmp(text, "\n") != 0)
|
if (strcmp(text, "\n") != 0)
|
||||||
{
|
{
|
||||||
if (m_bMaxLengthEnabled)
|
if (_maxLengthEnabled)
|
||||||
{
|
{
|
||||||
int multiple = 1;
|
int multiple = 1;
|
||||||
char value = text[0];
|
char value = text[0];
|
||||||
|
@ -120,26 +118,26 @@ void UICCTextField::insertText(const char * text, int len)
|
||||||
multiple = 3;
|
multiple = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str_len + len > m_nMaxLength * multiple)
|
if (str_len + len > _maxLength * multiple)
|
||||||
{
|
{
|
||||||
str_text = str_text.substr(0, m_nMaxLength * multiple);
|
str_text = str_text.substr(0, _maxLength * multiple);
|
||||||
len = m_nMaxLength * multiple;
|
len = _maxLength * multiple;
|
||||||
/*
|
/*
|
||||||
int mod = str_len % 3;
|
int mod = str_len % 3;
|
||||||
int offset = (mod == 0) ? 0 : (3 - mod);
|
int offset = (mod == 0) ? 0 : (3 - mod);
|
||||||
int amount = str_len + offset;
|
int amount = str_len + offset;
|
||||||
str_text = str_text.substr(0, m_nMaxLength - amount);
|
str_text = str_text.substr(0, _maxLength - amount);
|
||||||
// CCLOG("str_test = %s", str_text.c_str());
|
// CCLOG("str_test = %s", str_text.c_str());
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CCTextFieldTTF::insertText(str_text.c_str(), len);
|
cocos2d::TextFieldTTF::insertText(str_text.c_str(), len);
|
||||||
|
|
||||||
// password
|
// password
|
||||||
if (m_bPasswordEnabled)
|
if (_passwordEnabled)
|
||||||
{
|
{
|
||||||
if (CCTextFieldTTF::getCharCount() > 0)
|
if (cocos2d::TextFieldTTF::getCharCount() > 0)
|
||||||
{
|
{
|
||||||
setPasswordText(_inputText->c_str());
|
setPasswordText(_inputText->c_str());
|
||||||
}
|
}
|
||||||
|
@ -148,12 +146,12 @@ void UICCTextField::insertText(const char * text, int len)
|
||||||
|
|
||||||
void UICCTextField::deleteBackward()
|
void UICCTextField::deleteBackward()
|
||||||
{
|
{
|
||||||
CCTextFieldTTF::deleteBackward();
|
cocos2d::TextFieldTTF::deleteBackward();
|
||||||
|
|
||||||
if (CCTextFieldTTF::getCharCount() > 0)
|
if (cocos2d::TextFieldTTF::getCharCount() > 0)
|
||||||
{
|
{
|
||||||
// password
|
// password
|
||||||
if (m_bPasswordEnabled)
|
if (_passwordEnabled)
|
||||||
{
|
{
|
||||||
setPasswordText(_inputText->c_str());
|
setPasswordText(_inputText->c_str());
|
||||||
}
|
}
|
||||||
|
@ -162,47 +160,47 @@ void UICCTextField::deleteBackward()
|
||||||
|
|
||||||
void UICCTextField::openIME()
|
void UICCTextField::openIME()
|
||||||
{
|
{
|
||||||
CCTextFieldTTF::attachWithIME();
|
cocos2d::TextFieldTTF::attachWithIME();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::closeIME()
|
void UICCTextField::closeIME()
|
||||||
{
|
{
|
||||||
CCTextFieldTTF::detachWithIME();
|
cocos2d::TextFieldTTF::detachWithIME();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setMaxLengthEnabled(bool enable)
|
void UICCTextField::setMaxLengthEnabled(bool enable)
|
||||||
{
|
{
|
||||||
m_bMaxLengthEnabled = enable;
|
_maxLengthEnabled = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::isMaxLengthEnabled()
|
bool UICCTextField::isMaxLengthEnabled()
|
||||||
{
|
{
|
||||||
return m_bMaxLengthEnabled;
|
return _maxLengthEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setMaxLength(int length)
|
void UICCTextField::setMaxLength(int length)
|
||||||
{
|
{
|
||||||
m_nMaxLength = length;
|
_maxLength = length;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UICCTextField::getMaxLength()
|
int UICCTextField::getMaxLength()
|
||||||
{
|
{
|
||||||
return m_nMaxLength;
|
return _maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UICCTextField::getCharCount()
|
int UICCTextField::getCharCount()
|
||||||
{
|
{
|
||||||
return CCTextFieldTTF::getCharCount();
|
return cocos2d::TextFieldTTF::getCharCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setPasswordEnabled(bool enable)
|
void UICCTextField::setPasswordEnabled(bool enable)
|
||||||
{
|
{
|
||||||
m_bPasswordEnabled = enable;
|
_passwordEnabled = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::isPasswordEnabled()
|
bool UICCTextField::isPasswordEnabled()
|
||||||
{
|
{
|
||||||
return m_bPasswordEnabled;
|
return _passwordEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setPasswordStyleText(const char* styleText)
|
void UICCTextField::setPasswordStyleText(const char* styleText)
|
||||||
|
@ -216,7 +214,7 @@ void UICCTextField::setPasswordStyleText(const char* styleText)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_strPasswordStyleText = styleText;
|
_passwordStyleText = styleText;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setPasswordText(const char *text)
|
void UICCTextField::setPasswordText(const char *text)
|
||||||
|
@ -224,49 +222,49 @@ void UICCTextField::setPasswordText(const char *text)
|
||||||
std::string tempStr;
|
std::string tempStr;
|
||||||
for (size_t i = 0; i < strlen(text); ++i)
|
for (size_t i = 0; i < strlen(text); ++i)
|
||||||
{
|
{
|
||||||
tempStr.append(m_strPasswordStyleText);
|
tempStr.append(_passwordStyleText);
|
||||||
}
|
}
|
||||||
CCLabelTTF::setString(tempStr.c_str());
|
cocos2d::LabelTTF::setString(tempStr.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setAttachWithIME(bool attach)
|
void UICCTextField::setAttachWithIME(bool attach)
|
||||||
{
|
{
|
||||||
m_bAttachWithIME = attach;
|
_attachWithIME = attach;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::getAttachWithIME()
|
bool UICCTextField::getAttachWithIME()
|
||||||
{
|
{
|
||||||
return m_bAttachWithIME;
|
return _attachWithIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setDetachWithIME(bool detach)
|
void UICCTextField::setDetachWithIME(bool detach)
|
||||||
{
|
{
|
||||||
m_bDetachWithIME = detach;
|
_detachWithIME = detach;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::getDetachWithIME()
|
bool UICCTextField::getDetachWithIME()
|
||||||
{
|
{
|
||||||
return m_bDetachWithIME;
|
return _detachWithIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setInsertText(bool insert)
|
void UICCTextField::setInsertText(bool insert)
|
||||||
{
|
{
|
||||||
m_bInsertText = insert;
|
_insertText = insert;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::getInsertText()
|
bool UICCTextField::getInsertText()
|
||||||
{
|
{
|
||||||
return m_bInsertText;
|
return _insertText;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UICCTextField::setDeleteBackward(bool deleteBackward)
|
void UICCTextField::setDeleteBackward(bool deleteBackward)
|
||||||
{
|
{
|
||||||
m_bDeleteBackward = deleteBackward;
|
_deleteBackward = deleteBackward;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UICCTextField::getDeleteBackward()
|
bool UICCTextField::getDeleteBackward()
|
||||||
{
|
{
|
||||||
return m_bDeleteBackward;
|
return _deleteBackward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -278,7 +276,8 @@ _touchWidth(0.0f),
|
||||||
_touchHeight(0.0f),
|
_touchHeight(0.0f),
|
||||||
_useTouchArea(false),
|
_useTouchArea(false),
|
||||||
_eventListener(NULL),
|
_eventListener(NULL),
|
||||||
_eventSelector(NULL)
|
_eventSelector(NULL),
|
||||||
|
_passwordStyleText("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,7 +314,7 @@ void UITextField::initRenderer()
|
||||||
_renderer->addChild(_textFieldRenderer);
|
_renderer->addChild(_textFieldRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITextField::setTouchSize(const Size &size)
|
void UITextField::setTouchSize(const cocos2d::Size &size)
|
||||||
{
|
{
|
||||||
_useTouchArea = true;
|
_useTouchArea = true;
|
||||||
_touchWidth = size.width;
|
_touchWidth = size.width;
|
||||||
|
@ -361,7 +360,7 @@ const char* UITextField::getStringValue()
|
||||||
return _textFieldRenderer->getString();
|
return _textFieldRenderer->getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UITextField::onTouchBegan(const Point &touchPoint)
|
bool UITextField::onTouchBegan(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
bool pass = UIWidget::onTouchBegan(touchPoint);
|
bool pass = UIWidget::onTouchBegan(touchPoint);
|
||||||
_textFieldRenderer->attachWithIME();
|
_textFieldRenderer->attachWithIME();
|
||||||
|
@ -401,6 +400,8 @@ bool UITextField::isPasswordEnabled()
|
||||||
void UITextField::setPasswordStyleText(const char *styleText)
|
void UITextField::setPasswordStyleText(const char *styleText)
|
||||||
{
|
{
|
||||||
_textFieldRenderer->setPasswordStyleText(styleText);
|
_textFieldRenderer->setPasswordStyleText(styleText);
|
||||||
|
|
||||||
|
_passwordStyleText = styleText;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITextField::update(float dt)
|
void UITextField::update(float dt)
|
||||||
|
@ -489,7 +490,7 @@ void UITextField::insertTextEvent()
|
||||||
{
|
{
|
||||||
if (_eventListener && _eventSelector)
|
if (_eventListener && _eventSelector)
|
||||||
{
|
{
|
||||||
(_eventListener->*_eventSelector)(this, TEXTFIELD_EVENT_INDERT_TEXT);
|
(_eventListener->*_eventSelector)(this, TEXTFIELD_EVENT_INSERT_TEXT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,19 +502,19 @@ void UITextField::deleteBackwardEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITextField::addEventListener(Object *target, SEL_TextFieldEvent selecor)
|
void UITextField::addEventListener(cocos2d::Object *target, SEL_TextFieldEvent selecor)
|
||||||
{
|
{
|
||||||
_eventListener = target;
|
_eventListener = target;
|
||||||
_eventSelector = selecor;
|
_eventSelector = selecor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITextField::setAnchorPoint(const Point &pt)
|
void UITextField::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
UIWidget::setAnchorPoint(pt);
|
UIWidget::setAnchorPoint(pt);
|
||||||
_textFieldRenderer->setAnchorPoint(pt);
|
_textFieldRenderer->setAnchorPoint(pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITextField::setColor(const Color3B &color)
|
void UITextField::setColor(const cocos2d::Color3B &color)
|
||||||
{
|
{
|
||||||
UIWidget::setColor(color);
|
UIWidget::setColor(color);
|
||||||
_textFieldRenderer->setColor(color);
|
_textFieldRenderer->setColor(color);
|
||||||
|
@ -539,7 +540,7 @@ void UITextField::textfieldRendererScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Size textureSize = getContentSize();
|
cocos2d::Size textureSize = getContentSize();
|
||||||
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
|
||||||
{
|
{
|
||||||
_textFieldRenderer->setScale(1.0f);
|
_textFieldRenderer->setScale(1.0f);
|
||||||
|
@ -552,12 +553,12 @@ void UITextField::textfieldRendererScaleChangedWithSize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UITextField::getContentSize() const
|
const cocos2d::Size& UITextField::getContentSize() const
|
||||||
{
|
{
|
||||||
return _textFieldRenderer->getContentSize();
|
return _textFieldRenderer->getContentSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UITextField::getVirtualRenderer()
|
cocos2d::Node* UITextField::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _textFieldRenderer;
|
return _textFieldRenderer;
|
||||||
}
|
}
|
||||||
|
@ -567,4 +568,34 @@ const char* UITextField::getDescription() const
|
||||||
return "TextField";
|
return "TextField";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UITextField::attachWithIME()
|
||||||
|
{
|
||||||
|
_textFieldRenderer->attachWithIME();
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWidget* UITextField::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UITextField::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UITextField::copySpecialProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
UITextField* textField = dynamic_cast<UITextField*>(widget);
|
||||||
|
if (textField)
|
||||||
|
{
|
||||||
|
setText(textField->_textFieldRenderer->getString());
|
||||||
|
setPlaceHolder(textField->getStringValue());
|
||||||
|
setFontSize(textField->_textFieldRenderer->getFontSize());
|
||||||
|
setFontName(textField->_textFieldRenderer->getFontName());
|
||||||
|
setMaxLengthEnabled(textField->isMaxLengthEnabled());
|
||||||
|
setMaxLength(textField->getMaxLength());
|
||||||
|
setPasswordEnabled(textField->isPasswordEnabled());
|
||||||
|
setPasswordStyleText(textField->_passwordStyleText.c_str());
|
||||||
|
setAttachWithIME(textField->getAttachWithIME());
|
||||||
|
setDetachWithIME(textField->getDetachWithIME());
|
||||||
|
setInsertText(textField->getInsertText());
|
||||||
|
setDeleteBackward(textField->getDeleteBackward());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -30,6 +30,10 @@
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UICCTextField: public cocos2d::TextFieldTTF, public cocos2d::TextFieldDelegate
|
class UICCTextField: public cocos2d::TextFieldTTF, public cocos2d::TextFieldDelegate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -70,32 +74,32 @@ public:
|
||||||
bool getInsertText();
|
bool getInsertText();
|
||||||
void setDeleteBackward(bool deleteBackward);
|
void setDeleteBackward(bool deleteBackward);
|
||||||
bool getDeleteBackward();
|
bool getDeleteBackward();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_bMaxLengthEnabled;
|
bool _maxLengthEnabled;
|
||||||
int m_nMaxLength;
|
int _maxLength;
|
||||||
bool m_bPasswordEnabled;
|
bool _passwordEnabled;
|
||||||
std::string m_strPasswordStyleText;
|
std::string _passwordStyleText;
|
||||||
bool m_bAttachWithIME;
|
bool _attachWithIME;
|
||||||
bool m_bDetachWithIME;
|
bool _detachWithIME;
|
||||||
bool m_bInsertText;
|
bool _insertText;
|
||||||
bool m_bDeleteBackward;
|
bool _deleteBackward;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TEXTFIELD_EVENT_ATTACH_WITH_IME,
|
TEXTFIELD_EVENT_ATTACH_WITH_IME,
|
||||||
TEXTFIELD_EVENT_DETACH_WITH_IME,
|
TEXTFIELD_EVENT_DETACH_WITH_IME,
|
||||||
TEXTFIELD_EVENT_INDERT_TEXT,
|
TEXTFIELD_EVENT_INSERT_TEXT,
|
||||||
TEXTFIELD_EVENT_DELETE_BACKWARD,
|
TEXTFIELD_EVENT_DELETE_BACKWARD,
|
||||||
}TextFiledEventType;
|
}TextFiledEventType;
|
||||||
|
|
||||||
typedef void (cocos2d::Object::*SEL_TextFieldEvent)(cocos2d::Object*, TextFiledEventType);
|
typedef void (cocos2d::Object::*SEL_TextFieldEvent)(cocos2d::Object*, TextFiledEventType);
|
||||||
#define textfieldeventselector(_SELECTOR) (SEL_TextFieldEvent)(&_SELECTOR)
|
#define textfieldeventselector(_SELECTOR) (SEL_TextFieldEvent)(&_SELECTOR)
|
||||||
|
|
||||||
//class UITextField : public UIWidget
|
/** class UITextField : public UIWidget
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class UITextField : public UIWidget
|
class UITextField : public UIWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -129,22 +133,19 @@ public:
|
||||||
bool getDeleteBackward();
|
bool getDeleteBackward();
|
||||||
void setDeleteBackward(bool deleteBackward);
|
void setDeleteBackward(bool deleteBackward);
|
||||||
void addEventListener(cocos2d::Object* target, SEL_TextFieldEvent selecor);
|
void addEventListener(cocos2d::Object* target, SEL_TextFieldEvent selecor);
|
||||||
|
|
||||||
virtual void setAnchorPoint(const cocos2d::Point &pt);
|
virtual void setAnchorPoint(const cocos2d::Point &pt);
|
||||||
virtual void setColor(const cocos2d::Color3B &color);
|
virtual void setColor(const cocos2d::Color3B &color);
|
||||||
virtual void setOpacity(int opacity);
|
virtual void setOpacity(int opacity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
/*compatibel*/
|
|
||||||
/**
|
|
||||||
* These methods will be removed
|
|
||||||
*/
|
|
||||||
void setMaxLengthEnable(bool is){setMaxLengthEnabled(is);};
|
|
||||||
void setPasswordEnable(bool is){setPasswordEnabled(is);};
|
|
||||||
/************/
|
|
||||||
virtual const cocos2d::Size& getContentSize() const;
|
virtual const cocos2d::Size& getContentSize() const;
|
||||||
virtual cocos2d::Node* getVirtualRenderer();
|
virtual cocos2d::Node* getVirtualRenderer();
|
||||||
|
void attachWithIME();
|
||||||
protected:
|
protected:
|
||||||
// event
|
// event
|
||||||
void attachWithIMEEvent();
|
void attachWithIMEEvent();
|
||||||
|
@ -153,6 +154,8 @@ protected:
|
||||||
void deleteBackwardEvent();
|
void deleteBackwardEvent();
|
||||||
virtual void onSizeChanged();
|
virtual void onSizeChanged();
|
||||||
void textfieldRendererScaleChangedWithSize();
|
void textfieldRendererScaleChangedWithSize();
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
UICCTextField* _textFieldRenderer;
|
UICCTextField* _textFieldRenderer;
|
||||||
|
|
||||||
|
@ -163,6 +166,7 @@ protected:
|
||||||
cocos2d::Object* _eventListener;
|
cocos2d::Object* _eventListener;
|
||||||
SEL_TextFieldEvent _eventSelector;
|
SEL_TextFieldEvent _eventSelector;
|
||||||
|
|
||||||
|
std::string _passwordStyleText;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,11 +24,9 @@
|
||||||
|
|
||||||
#include "gui/UIWidget.h"
|
#include "gui/UIWidget.h"
|
||||||
#include "gui/UILayer.h"
|
#include "gui/UILayer.h"
|
||||||
#include "gui/Layout.h"
|
#include "gui/UILayout.h"
|
||||||
#include "gui/UIHelper.h"
|
#include "gui/UIHelper.h"
|
||||||
|
|
||||||
using namespace cocos2d;
|
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
#define DYNAMIC_CAST_CCBLENDPROTOCOL dynamic_cast<cocos2d::BlendProtocol*>(_renderer)
|
#define DYNAMIC_CAST_CCBLENDPROTOCOL dynamic_cast<cocos2d::BlendProtocol*>(_renderer)
|
||||||
|
@ -45,31 +43,31 @@ _touchEnabled(false),
|
||||||
_touchPassedEnabled(false),
|
_touchPassedEnabled(false),
|
||||||
_focus(false),
|
_focus(false),
|
||||||
_widgetZOrder(0),
|
_widgetZOrder(0),
|
||||||
_anchorPoint(Point(0.5f, 0.5f)),
|
_anchorPoint(cocos2d::Point(0.5f, 0.5f)),
|
||||||
_widgetParent(NULL),
|
_widgetParent(NULL),
|
||||||
_brightStyle(BRIGHT_NONE),
|
_brightStyle(BRIGHT_NONE),
|
||||||
_updateEnabled(false),
|
_updateEnabled(false),
|
||||||
_renderer(NULL),
|
_renderer(NULL),
|
||||||
_touchStartPos(Point::ZERO),
|
_touchStartPos(cocos2d::Point::ZERO),
|
||||||
_touchMovePos(Point::ZERO),
|
_touchMovePos(cocos2d::Point::ZERO),
|
||||||
_touchEndPos(Point::ZERO),
|
_touchEndPos(cocos2d::Point::ZERO),
|
||||||
_touchEventListener(NULL),
|
_touchEventListener(NULL),
|
||||||
_touchEventSelector(NULL),
|
_touchEventSelector(NULL),
|
||||||
_widgetTag(-1),
|
_widgetTag(-1),
|
||||||
_name("default"),
|
_name("default"),
|
||||||
_widgetType(WidgetTypeWidget),
|
_widgetType(WidgetTypeWidget),
|
||||||
_actionTag(0),
|
_actionTag(0),
|
||||||
_size(Size::ZERO),
|
_size(cocos2d::Size::ZERO),
|
||||||
_customSize(Size::ZERO),
|
_customSize(cocos2d::Size::ZERO),
|
||||||
_layoutParameter(NULL),
|
_layoutParameterDictionary(NULL),
|
||||||
_ignoreSize(false),
|
_ignoreSize(false),
|
||||||
_children(NULL),
|
_children(NULL),
|
||||||
_affectByClipping(false),
|
_affectByClipping(false),
|
||||||
_scheduler(NULL),
|
_scheduler(NULL),
|
||||||
_sizeType(SIZE_ABSOLUTE),
|
_sizeType(SIZE_ABSOLUTE),
|
||||||
_sizePercent(Point::ZERO),
|
_sizePercent(cocos2d::Point::ZERO),
|
||||||
_positionType(POSITION_ABSOLUTE),
|
_positionType(POSITION_ABSOLUTE),
|
||||||
_positionPercent(Point::ZERO),
|
_positionPercent(cocos2d::Point::ZERO),
|
||||||
_isRunning(false)
|
_isRunning(false)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -79,7 +77,8 @@ UIWidget::~UIWidget()
|
||||||
{
|
{
|
||||||
releaseResoures();
|
releaseResoures();
|
||||||
setParent(NULL);
|
setParent(NULL);
|
||||||
CC_SAFE_RELEASE_NULL(_layoutParameter);
|
_layoutParameterDictionary->removeAllObjects();
|
||||||
|
CC_SAFE_RELEASE(_layoutParameterDictionary);
|
||||||
CC_SAFE_RELEASE(_scheduler);
|
CC_SAFE_RELEASE(_scheduler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,12 +96,14 @@ UIWidget* UIWidget::create()
|
||||||
|
|
||||||
bool UIWidget::init()
|
bool UIWidget::init()
|
||||||
{
|
{
|
||||||
_children = Array::create();
|
_children = cocos2d::Array::create();
|
||||||
_children->retain();
|
_children->retain();
|
||||||
|
_layoutParameterDictionary = cocos2d::Dictionary::create();
|
||||||
|
CC_SAFE_RETAIN(_layoutParameterDictionary);
|
||||||
initRenderer();
|
initRenderer();
|
||||||
_renderer->retain();
|
_renderer->retain();
|
||||||
_renderer->setZOrder(_widgetZOrder);
|
_renderer->setZOrder(_widgetZOrder);
|
||||||
RGBAProtocol* renderRGBA = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* renderRGBA = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (renderRGBA)
|
if (renderRGBA)
|
||||||
{
|
{
|
||||||
renderRGBA->setCascadeColorEnabled(true);
|
renderRGBA->setCascadeColorEnabled(true);
|
||||||
|
@ -110,14 +111,13 @@ bool UIWidget::init()
|
||||||
}
|
}
|
||||||
setBright(true);
|
setBright(true);
|
||||||
ignoreContentAdaptWithSize(true);
|
ignoreContentAdaptWithSize(true);
|
||||||
_scheduler = Director::getInstance()->getScheduler();
|
_scheduler = cocos2d::Director::getInstance()->getScheduler();
|
||||||
CC_SAFE_RETAIN(_scheduler);
|
CC_SAFE_RETAIN(_scheduler);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::releaseResoures()
|
void UIWidget::releaseResoures()
|
||||||
{
|
{
|
||||||
setUpdateEnabled(false);
|
|
||||||
removeAllChildren();
|
removeAllChildren();
|
||||||
_children->release();
|
_children->release();
|
||||||
_renderer->removeAllChildrenWithCleanup(true);
|
_renderer->removeAllChildrenWithCleanup(true);
|
||||||
|
@ -157,7 +157,7 @@ bool UIWidget::addChild(UIWidget *child)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool seekSucceed = false;
|
bool seekSucceed = false;
|
||||||
ccArray* arrayChildren = _children->data;
|
cocos2d::ccArray* arrayChildren = _children->data;
|
||||||
for (int i=childrenCount-1; i>=0; --i)
|
for (int i=childrenCount-1; i>=0; --i)
|
||||||
{
|
{
|
||||||
UIWidget* widget = (UIWidget*)(arrayChildren->arr[i]);
|
UIWidget* widget = (UIWidget*)(arrayChildren->arr[i]);
|
||||||
|
@ -203,7 +203,7 @@ bool UIWidget::removeChild(UIWidget *child)
|
||||||
{
|
{
|
||||||
child->onExit();
|
child->onExit();
|
||||||
}
|
}
|
||||||
child->disableUpdate();
|
child->setUpdateEnabled(false);
|
||||||
child->setParent(NULL);
|
child->setParent(NULL);
|
||||||
_renderer->removeChild(child->getRenderer());
|
_renderer->removeChild(child->getRenderer());
|
||||||
_children->removeObject(child);
|
_children->removeObject(child);
|
||||||
|
@ -246,7 +246,7 @@ void UIWidget::reorderChild(UIWidget* child)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool seekSucceed = false;
|
bool seekSucceed = false;
|
||||||
ccArray* arrayChildren = _children->data;
|
cocos2d::ccArray* arrayChildren = _children->data;
|
||||||
for (int i=childrenCount-1; i>=0; --i)
|
for (int i=childrenCount-1; i>=0; --i)
|
||||||
{
|
{
|
||||||
UIWidget* widget = (UIWidget*)(arrayChildren->arr[i]);
|
UIWidget* widget = (UIWidget*)(arrayChildren->arr[i]);
|
||||||
|
@ -274,21 +274,6 @@ void UIWidget::reorderChild(UIWidget* child)
|
||||||
CC_SAFE_RELEASE(child);
|
CC_SAFE_RELEASE(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::disableUpdate()
|
|
||||||
{
|
|
||||||
if (_scheduler)
|
|
||||||
{
|
|
||||||
_scheduler->unscheduleUpdateForTarget(this);
|
|
||||||
}
|
|
||||||
int childrenCount = _children->data->num;
|
|
||||||
ccArray* arrayChildren = _children->data;
|
|
||||||
for (int i=0; i<childrenCount; i++)
|
|
||||||
{
|
|
||||||
UIWidget* child = (UIWidget*)(arrayChildren->arr[i]);
|
|
||||||
child->disableUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIWidget::setEnabled(bool enabled)
|
void UIWidget::setEnabled(bool enabled)
|
||||||
{
|
{
|
||||||
_enabled = enabled;
|
_enabled = enabled;
|
||||||
|
@ -299,9 +284,9 @@ void UIWidget::setEnabled(bool enabled)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamic_cast<RectClippingNode*>(_renderer)->setEnabled(enabled);
|
dynamic_cast<UIRectClippingNode*>(_renderer)->setEnabled(enabled);
|
||||||
}
|
}
|
||||||
ccArray* arrayChildren = _children->data;
|
cocos2d::ccArray* arrayChildren = _children->data;
|
||||||
int childrenCount = arrayChildren->num;
|
int childrenCount = arrayChildren->num;
|
||||||
for (int i = 0; i < childrenCount; i++)
|
for (int i = 0; i < childrenCount; i++)
|
||||||
{
|
{
|
||||||
|
@ -312,15 +297,15 @@ void UIWidget::setEnabled(bool enabled)
|
||||||
|
|
||||||
UIWidget* UIWidget::getChildByName(const char *name)
|
UIWidget* UIWidget::getChildByName(const char *name)
|
||||||
{
|
{
|
||||||
return CCUIHELPER->seekWidgetByName(this, name);
|
return UIHelper::seekWidgetByName(this, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
UIWidget* UIWidget::getChildByTag(int tag)
|
UIWidget* UIWidget::getChildByTag(int tag)
|
||||||
{
|
{
|
||||||
return CCUIHELPER->seekWidgetByTag(this, tag);
|
return UIHelper::seekWidgetByTag(this, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
Array* UIWidget::getChildren()
|
cocos2d::Array* UIWidget::getChildren()
|
||||||
{
|
{
|
||||||
return _children;
|
return _children;
|
||||||
}
|
}
|
||||||
|
@ -330,7 +315,7 @@ void UIWidget::initRenderer()
|
||||||
_renderer = GUIRenderer::create();
|
_renderer = GUIRenderer::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setSize(const Size &size)
|
void UIWidget::setSize(const cocos2d::Size &size)
|
||||||
{
|
{
|
||||||
_customSize = size;
|
_customSize = size;
|
||||||
if (_ignoreSize)
|
if (_ignoreSize)
|
||||||
|
@ -343,19 +328,19 @@ void UIWidget::setSize(const Size &size)
|
||||||
}
|
}
|
||||||
if (_isRunning)
|
if (_isRunning)
|
||||||
{
|
{
|
||||||
_sizePercent = (_widgetParent == NULL) ? Point::ZERO : Point(_customSize.width / _widgetParent->getSize().width, _customSize.height / _widgetParent->getSize().height);
|
_sizePercent = (_widgetParent == NULL) ? cocos2d::Point::ZERO : cocos2d::Point(_customSize.width / _widgetParent->getSize().width, _customSize.height / _widgetParent->getSize().height);
|
||||||
}
|
}
|
||||||
onSizeChanged();
|
onSizeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setSizePercent(const Point &percent)
|
void UIWidget::setSizePercent(const cocos2d::Point &percent)
|
||||||
{
|
{
|
||||||
_sizePercent = percent;
|
_sizePercent = percent;
|
||||||
if (!_isRunning)
|
if (!_isRunning)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Size cSize = (_widgetParent == NULL) ? Size::ZERO : Size(_widgetParent->getSize().width * percent.x , _widgetParent->getSize().height * percent.y);
|
cocos2d::Size cSize = (_widgetParent == NULL) ? cocos2d::Size::ZERO : cocos2d::Size(_widgetParent->getSize().width * percent.x , _widgetParent->getSize().height * percent.y);
|
||||||
if (_ignoreSize)
|
if (_ignoreSize)
|
||||||
{
|
{
|
||||||
_size = getContentSize();
|
_size = getContentSize();
|
||||||
|
@ -381,11 +366,11 @@ void UIWidget::updateSizeAndPosition()
|
||||||
{
|
{
|
||||||
_size = _customSize;
|
_size = _customSize;
|
||||||
}
|
}
|
||||||
_sizePercent = (_widgetParent == NULL) ? Point::ZERO : Point(_customSize.width / _widgetParent->getSize().width, _customSize.height / _widgetParent->getSize().height);
|
_sizePercent = (_widgetParent == NULL) ? cocos2d::Point::ZERO : cocos2d::Point(_customSize.width / _widgetParent->getSize().width, _customSize.height / _widgetParent->getSize().height);
|
||||||
break;
|
break;
|
||||||
case SIZE_PERCENT:
|
case SIZE_PERCENT:
|
||||||
{
|
{
|
||||||
Size cSize = (_widgetParent == NULL) ? Size::ZERO : Size(_widgetParent->getSize().width * _sizePercent.x , _widgetParent->getSize().height * _sizePercent.y);
|
cocos2d::Size cSize = (_widgetParent == NULL) ? cocos2d::Size::ZERO : cocos2d::Size(_widgetParent->getSize().width * _sizePercent.x , _widgetParent->getSize().height * _sizePercent.y);
|
||||||
if (_ignoreSize)
|
if (_ignoreSize)
|
||||||
{
|
{
|
||||||
_size = getContentSize();
|
_size = getContentSize();
|
||||||
|
@ -401,16 +386,16 @@ void UIWidget::updateSizeAndPosition()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
onSizeChanged();
|
onSizeChanged();
|
||||||
Point absPos = getPosition();
|
cocos2d::Point absPos = getPosition();
|
||||||
switch (_positionType)
|
switch (_positionType)
|
||||||
{
|
{
|
||||||
case POSITION_ABSOLUTE:
|
case POSITION_ABSOLUTE:
|
||||||
_positionPercent = (_widgetParent == NULL) ? Point::ZERO : Point(absPos.x / _widgetParent->getSize().width, absPos.y / _widgetParent->getSize().height);
|
_positionPercent = (_widgetParent == NULL) ? cocos2d::Point::ZERO : cocos2d::Point(absPos.x / _widgetParent->getSize().width, absPos.y / _widgetParent->getSize().height);
|
||||||
break;
|
break;
|
||||||
case POSITION_PERCENT:
|
case POSITION_PERCENT:
|
||||||
{
|
{
|
||||||
Size parentSize = _widgetParent->getSize();
|
cocos2d::Size parentSize = _widgetParent->getSize();
|
||||||
absPos = Point(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y);
|
absPos = cocos2d::Point(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -434,7 +419,7 @@ void UIWidget::ignoreContentAdaptWithSize(bool ignore)
|
||||||
_ignoreSize = ignore;
|
_ignoreSize = ignore;
|
||||||
if (_ignoreSize)
|
if (_ignoreSize)
|
||||||
{
|
{
|
||||||
Size s = getContentSize();
|
cocos2d::Size s = getContentSize();
|
||||||
_size = s;
|
_size = s;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -449,27 +434,27 @@ bool UIWidget::isIgnoreContentAdaptWithSize() const
|
||||||
return _ignoreSize;
|
return _ignoreSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UIWidget::getSize() const
|
const cocos2d::Size& UIWidget::getSize() const
|
||||||
{
|
{
|
||||||
return _size;
|
return _size;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getSizePercent() const
|
const cocos2d::Point& UIWidget::getSizePercent() const
|
||||||
{
|
{
|
||||||
return _sizePercent;
|
return _sizePercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point UIWidget::getWorldPosition()
|
cocos2d::Point UIWidget::getWorldPosition()
|
||||||
{
|
{
|
||||||
return _renderer->convertToWorldSpace(Point::ZERO);
|
return _renderer->convertToWorldSpace(cocos2d::Point::ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
Point UIWidget::convertToWorldSpace(const Point& pt)
|
cocos2d::Point UIWidget::convertToWorldSpace(const cocos2d::Point& pt)
|
||||||
{
|
{
|
||||||
return _renderer->convertToWorldSpace(pt);
|
return _renderer->convertToWorldSpace(pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UIWidget::getVirtualRenderer()
|
cocos2d::Node* UIWidget::getVirtualRenderer()
|
||||||
{
|
{
|
||||||
return _renderer;
|
return _renderer;
|
||||||
}
|
}
|
||||||
|
@ -479,7 +464,7 @@ void UIWidget::onSizeChanged()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Size& UIWidget::getContentSize() const
|
const cocos2d::Size& UIWidget::getContentSize() const
|
||||||
{
|
{
|
||||||
return _size;
|
return _size;
|
||||||
}
|
}
|
||||||
|
@ -511,6 +496,10 @@ bool UIWidget::isTouchEnabled() const
|
||||||
|
|
||||||
void UIWidget::setUpdateEnabled(bool enable)
|
void UIWidget::setUpdateEnabled(bool enable)
|
||||||
{
|
{
|
||||||
|
if (enable == _updateEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
_updateEnabled = enable;
|
_updateEnabled = enable;
|
||||||
if (enable)
|
if (enable)
|
||||||
{
|
{
|
||||||
|
@ -616,7 +605,7 @@ void UIWidget::didNotSelectSelf()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIWidget::onTouchBegan(const Point &touchPoint)
|
bool UIWidget::onTouchBegan(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
setFocused(true);
|
setFocused(true);
|
||||||
_touchStartPos.x = touchPoint.x;
|
_touchStartPos.x = touchPoint.x;
|
||||||
|
@ -629,7 +618,7 @@ bool UIWidget::onTouchBegan(const Point &touchPoint)
|
||||||
return _touchPassedEnabled;
|
return _touchPassedEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::onTouchMoved(const Point &touchPoint)
|
void UIWidget::onTouchMoved(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
_touchMovePos.x = touchPoint.x;
|
_touchMovePos.x = touchPoint.x;
|
||||||
_touchMovePos.y = touchPoint.y;
|
_touchMovePos.y = touchPoint.y;
|
||||||
|
@ -641,7 +630,7 @@ void UIWidget::onTouchMoved(const Point &touchPoint)
|
||||||
moveEvent();
|
moveEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::onTouchEnded(const Point &touchPoint)
|
void UIWidget::onTouchEnded(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
_touchEndPos.x = touchPoint.x;
|
_touchEndPos.x = touchPoint.x;
|
||||||
_touchEndPos.y = touchPoint.y;
|
_touchEndPos.y = touchPoint.y;
|
||||||
|
@ -661,13 +650,13 @@ void UIWidget::onTouchEnded(const Point &touchPoint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::onTouchCancelled(const Point &touchPoint)
|
void UIWidget::onTouchCancelled(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
setFocused(false);
|
setFocused(false);
|
||||||
cancelUpEvent();
|
cancelUpEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::onTouchLongClicked(const Point &touchPoint)
|
void UIWidget::onTouchLongClicked(const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
longClickEvent();
|
longClickEvent();
|
||||||
}
|
}
|
||||||
|
@ -709,31 +698,31 @@ void UIWidget::longClickEvent()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::addTouchEventListener(Object *target, SEL_TouchEvent selector)
|
void UIWidget::addTouchEventListener(cocos2d::Object *target, SEL_TouchEvent selector)
|
||||||
{
|
{
|
||||||
_touchEventListener = target;
|
_touchEventListener = target;
|
||||||
_touchEventSelector = selector;
|
_touchEventSelector = selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* UIWidget::getRenderer()
|
cocos2d::Node* UIWidget::getRenderer()
|
||||||
{
|
{
|
||||||
return _renderer;
|
return _renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::addRenderer(Node* renderer, int zOrder)
|
void UIWidget::addRenderer(cocos2d::Node* renderer, int zOrder)
|
||||||
{
|
{
|
||||||
_renderer->addChild(renderer, zOrder);
|
_renderer->addChild(renderer, zOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::removeRenderer(Node* renderer, bool cleanup)
|
void UIWidget::removeRenderer(cocos2d::Node* renderer, bool cleanup)
|
||||||
{
|
{
|
||||||
_renderer->removeChild(renderer,cleanup);
|
_renderer->removeChild(renderer,cleanup);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIWidget::hitTest(const Point &pt)
|
bool UIWidget::hitTest(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
Point nsp = _renderer->convertToNodeSpace(pt);
|
cocos2d::Point nsp = _renderer->convertToNodeSpace(pt);
|
||||||
Rect bb = Rect(-_size.width * _anchorPoint.x, -_size.height * _anchorPoint.y, _size.width, _size.height);
|
cocos2d::Rect bb = cocos2d::Rect(-_size.width * _anchorPoint.x, -_size.height * _anchorPoint.y, _size.width, _size.height);
|
||||||
if (nsp.x >= bb.origin.x && nsp.x <= bb.origin.x + bb.size.width && nsp.y >= bb.origin.y && nsp.y <= bb.origin.y + bb.size.height)
|
if (nsp.x >= bb.origin.x && nsp.x <= bb.origin.x + bb.size.width && nsp.y >= bb.origin.y && nsp.y <= bb.origin.y + bb.size.height)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -741,14 +730,14 @@ bool UIWidget::hitTest(const Point &pt)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UIWidget::clippingParentAreaContainPoint(const Point &pt)
|
bool UIWidget::clippingParentAreaContainPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
_affectByClipping = false;
|
_affectByClipping = false;
|
||||||
UIWidget* parent = getParent();
|
UIWidget* parent = getParent();
|
||||||
UIWidget* clippingParent = NULL;
|
UIWidget* clippingParent = NULL;
|
||||||
while (parent)
|
while (parent)
|
||||||
{
|
{
|
||||||
Layout* layoutParent = dynamic_cast<Layout*>(parent);
|
UILayout* layoutParent = dynamic_cast<UILayout*>(parent);
|
||||||
if (layoutParent)
|
if (layoutParent)
|
||||||
{
|
{
|
||||||
if (layoutParent->isClippingEnabled())
|
if (layoutParent->isClippingEnabled())
|
||||||
|
@ -783,7 +772,7 @@ bool UIWidget::clippingParentAreaContainPoint(const Point &pt)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::checkChildInfo(int handleState, UIWidget *sender, const Point &touchPoint)
|
void UIWidget::checkChildInfo(int handleState, UIWidget *sender, const cocos2d::Point &touchPoint)
|
||||||
{
|
{
|
||||||
if (_widgetParent)
|
if (_widgetParent)
|
||||||
{
|
{
|
||||||
|
@ -791,27 +780,27 @@ void UIWidget::checkChildInfo(int handleState, UIWidget *sender, const Point &to
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setPosition(const Point &pos)
|
void UIWidget::setPosition(const cocos2d::Point &pos)
|
||||||
{
|
{
|
||||||
if (_isRunning)
|
if (_isRunning)
|
||||||
{
|
{
|
||||||
_positionPercent = (_widgetParent == NULL) ? Point::ZERO : Point(pos.x / _widgetParent->getSize().width, pos.y / _widgetParent->getSize().height);
|
_positionPercent = (_widgetParent == NULL) ? cocos2d::Point::ZERO : cocos2d::Point(pos.x / _widgetParent->getSize().width, pos.y / _widgetParent->getSize().height);
|
||||||
}
|
}
|
||||||
_renderer->setPosition(pos);
|
_renderer->setPosition(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setPositionPercent(const Point &percent)
|
void UIWidget::setPositionPercent(const cocos2d::Point &percent)
|
||||||
{
|
{
|
||||||
_positionPercent = percent;
|
_positionPercent = percent;
|
||||||
if (_isRunning)
|
if (_isRunning)
|
||||||
{
|
{
|
||||||
Size parentSize = _widgetParent->getSize();
|
cocos2d::Size parentSize = _widgetParent->getSize();
|
||||||
Point absPos = Point(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y);
|
cocos2d::Point absPos = cocos2d::Point(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y);
|
||||||
_renderer->setPosition(absPos);
|
_renderer->setPosition(absPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setAnchorPoint(const Point &pt)
|
void UIWidget::setAnchorPoint(const cocos2d::Point &pt)
|
||||||
{
|
{
|
||||||
_anchorPoint = pt;
|
_anchorPoint = pt;
|
||||||
_renderer->setAnchorPoint(pt);
|
_renderer->setAnchorPoint(pt);
|
||||||
|
@ -822,12 +811,12 @@ void UIWidget::updateAnchorPoint()
|
||||||
setAnchorPoint(_anchorPoint);
|
setAnchorPoint(_anchorPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getPosition()
|
const cocos2d::Point& UIWidget::getPosition()
|
||||||
{
|
{
|
||||||
return _renderer->getPosition();
|
return _renderer->getPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getPositionPercent()
|
const cocos2d::Point& UIWidget::getPositionPercent()
|
||||||
{
|
{
|
||||||
return _positionPercent;
|
return _positionPercent;
|
||||||
}
|
}
|
||||||
|
@ -842,7 +831,7 @@ PositionType UIWidget::getPositionType() const
|
||||||
return _positionType;
|
return _positionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getAnchorPoint()
|
const cocos2d::Point& UIWidget::getAnchorPoint()
|
||||||
{
|
{
|
||||||
return _anchorPoint;
|
return _anchorPoint;
|
||||||
}
|
}
|
||||||
|
@ -930,36 +919,12 @@ bool UIWidget::isEnabled() const
|
||||||
|
|
||||||
float UIWidget::getLeftInParent()
|
float UIWidget::getLeftInParent()
|
||||||
{
|
{
|
||||||
float leftPos = 0.0f;
|
return getPosition().x - getAnchorPoint().x * _size.width;;
|
||||||
switch (_widgetType)
|
|
||||||
{
|
|
||||||
case WidgetTypeWidget:
|
|
||||||
leftPos = getPosition().x - getAnchorPoint().x * _size.width;
|
|
||||||
break;
|
|
||||||
case WidgetTypeContainer:
|
|
||||||
leftPos = getPosition().x;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return leftPos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float UIWidget::getBottomInParent()
|
float UIWidget::getBottomInParent()
|
||||||
{
|
{
|
||||||
float bottomPos = 0.0f;
|
return getPosition().y - getAnchorPoint().y * _size.height;;
|
||||||
switch (_widgetType)
|
|
||||||
{
|
|
||||||
case WidgetTypeWidget:
|
|
||||||
bottomPos = getPosition().y - getAnchorPoint().y * _size.height;
|
|
||||||
break;
|
|
||||||
case WidgetTypeContainer:
|
|
||||||
bottomPos = getPosition().y;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return bottomPos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float UIWidget::getRightInParent()
|
float UIWidget::getRightInParent()
|
||||||
|
@ -982,17 +947,17 @@ void UIWidget::setParent(UIWidget* parent)
|
||||||
_widgetParent = parent;
|
_widgetParent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
Action* UIWidget::runAction(Action *action)
|
cocos2d::Action* UIWidget::runAction(cocos2d::Action *action)
|
||||||
{
|
{
|
||||||
return _renderer->runAction(action);
|
return _renderer->runAction(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setActionManager(ActionManager *actionManager)
|
void UIWidget::setActionManager(cocos2d::ActionManager *actionManager)
|
||||||
{
|
{
|
||||||
_renderer->setActionManager(actionManager);
|
_renderer->setActionManager(actionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionManager* UIWidget::getActionManager()
|
cocos2d::ActionManager* UIWidget::getActionManager()
|
||||||
{
|
{
|
||||||
return _renderer->getActionManager();
|
return _renderer->getActionManager();
|
||||||
}
|
}
|
||||||
|
@ -1002,7 +967,7 @@ void UIWidget::stopAllActions()
|
||||||
_renderer->stopAllActions();
|
_renderer->stopAllActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::stopAction(Action *action)
|
void UIWidget::stopAction(cocos2d::Action *action)
|
||||||
{
|
{
|
||||||
_renderer->stopAction(action);
|
_renderer->stopAction(action);
|
||||||
}
|
}
|
||||||
|
@ -1012,33 +977,33 @@ void UIWidget::stopActionByTag(int tag)
|
||||||
_renderer->stopActionByTag(tag);
|
_renderer->stopActionByTag(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
Action* UIWidget::getActionByTag(int tag)
|
cocos2d::Action* UIWidget::getActionByTag(int tag)
|
||||||
{
|
{
|
||||||
return _renderer->getActionByTag(tag);
|
return _renderer->getActionByTag(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setColor(const Color3B &color)
|
void UIWidget::setColor(const cocos2d::Color3B &color)
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
rgbap->setColor(color);
|
rgbap->setColor(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Color3B& UIWidget::getColor()
|
const cocos2d::Color3B& UIWidget::getColor()
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
return rgbap->getColor();
|
return rgbap->getColor();
|
||||||
}
|
}
|
||||||
return Color3B::WHITE;
|
return cocos2d::Color3B::WHITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setOpacity(int opacity)
|
void UIWidget::setOpacity(int opacity)
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
rgbap->setOpacity(opacity);
|
rgbap->setOpacity(opacity);
|
||||||
|
@ -1047,7 +1012,7 @@ void UIWidget::setOpacity(int opacity)
|
||||||
|
|
||||||
int UIWidget::getOpacity()
|
int UIWidget::getOpacity()
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
return rgbap->getOpacity();
|
return rgbap->getOpacity();
|
||||||
|
@ -1057,7 +1022,7 @@ int UIWidget::getOpacity()
|
||||||
|
|
||||||
bool UIWidget::isCascadeOpacityEnabled()
|
bool UIWidget::isCascadeOpacityEnabled()
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
return rgbap->isCascadeOpacityEnabled();
|
return rgbap->isCascadeOpacityEnabled();
|
||||||
|
@ -1067,7 +1032,7 @@ bool UIWidget::isCascadeOpacityEnabled()
|
||||||
|
|
||||||
void UIWidget::setCascadeOpacityEnabled(bool cascadeOpacityEnabled)
|
void UIWidget::setCascadeOpacityEnabled(bool cascadeOpacityEnabled)
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
rgbap->setCascadeOpacityEnabled(cascadeOpacityEnabled);
|
rgbap->setCascadeOpacityEnabled(cascadeOpacityEnabled);
|
||||||
|
@ -1076,7 +1041,7 @@ void UIWidget::setCascadeOpacityEnabled(bool cascadeOpacityEnabled)
|
||||||
|
|
||||||
bool UIWidget::isCascadeColorEnabled()
|
bool UIWidget::isCascadeColorEnabled()
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
return rgbap->isCascadeColorEnabled();
|
return rgbap->isCascadeColorEnabled();
|
||||||
|
@ -1086,33 +1051,33 @@ bool UIWidget::isCascadeColorEnabled()
|
||||||
|
|
||||||
void UIWidget::setCascadeColorEnabled(bool cascadeColorEnabled)
|
void UIWidget::setCascadeColorEnabled(bool cascadeColorEnabled)
|
||||||
{
|
{
|
||||||
RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
cocos2d::RGBAProtocol* rgbap = DYNAMIC_CAST_CCRGBAPROTOCOL;
|
||||||
if (rgbap)
|
if (rgbap)
|
||||||
{
|
{
|
||||||
rgbap->setCascadeColorEnabled(cascadeColorEnabled);
|
rgbap->setCascadeColorEnabled(cascadeColorEnabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setBlendFunc(BlendFunc blendFunc)
|
void UIWidget::setBlendFunc(cocos2d::BlendFunc blendFunc)
|
||||||
{
|
{
|
||||||
BlendProtocol * blendNode = DYNAMIC_CAST_CCBLENDPROTOCOL;
|
cocos2d::BlendProtocol * blendNode = DYNAMIC_CAST_CCBLENDPROTOCOL;
|
||||||
if (blendNode)
|
if (blendNode)
|
||||||
{
|
{
|
||||||
blendNode->setBlendFunc(blendFunc);
|
blendNode->setBlendFunc(blendFunc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getTouchStartPos()
|
const cocos2d::Point& UIWidget::getTouchStartPos()
|
||||||
{
|
{
|
||||||
return _touchStartPos;
|
return _touchStartPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getTouchMovePos()
|
const cocos2d::Point& UIWidget::getTouchMovePos()
|
||||||
{
|
{
|
||||||
return _touchMovePos;
|
return _touchMovePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point& UIWidget::getTouchEndPos()
|
const cocos2d::Point& UIWidget::getTouchEndPos()
|
||||||
{
|
{
|
||||||
return _touchEndPos;
|
return _touchEndPos;
|
||||||
}
|
}
|
||||||
|
@ -1142,19 +1107,14 @@ WidgetType UIWidget::getWidgetType() const
|
||||||
return _widgetType;
|
return _widgetType;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIWidget::setLayoutParameter(LayoutParameter *parameter)
|
void UIWidget::setLayoutParameter(UILayoutParameter *parameter)
|
||||||
{
|
{
|
||||||
if (_layoutParameter)
|
_layoutParameterDictionary->setObject(parameter, parameter->getLayoutType());
|
||||||
{
|
|
||||||
CC_SAFE_RELEASE_NULL(_layoutParameter);
|
|
||||||
}
|
|
||||||
_layoutParameter = parameter;
|
|
||||||
CC_SAFE_RETAIN(_layoutParameter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LayoutParameter* UIWidget::getLayoutParameter()
|
UILayoutParameter* UIWidget::getLayoutParameter(LayoutParameterType type)
|
||||||
{
|
{
|
||||||
return _layoutParameter;
|
return dynamic_cast<UILayoutParameter*>(_layoutParameterDictionary->objectForKey(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* UIWidget::getDescription() const
|
const char* UIWidget::getDescription() const
|
||||||
|
@ -1162,6 +1122,71 @@ const char* UIWidget::getDescription() const
|
||||||
return "Widget";
|
return "Widget";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWidget* UIWidget::clone()
|
||||||
|
{
|
||||||
|
UIWidget* clonedWidget = createCloneInstance();
|
||||||
|
clonedWidget->copyProperties(this);
|
||||||
|
clonedWidget->copyClonedWidgetChildren(this);
|
||||||
|
return clonedWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWidget* UIWidget::createCloneInstance()
|
||||||
|
{
|
||||||
|
return UIWidget::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWidget::copyClonedWidgetChildren(UIWidget* model)
|
||||||
|
{
|
||||||
|
cocos2d::ccArray* arrayWidgetChildren = model->getChildren()->data;
|
||||||
|
int length = arrayWidgetChildren->num;
|
||||||
|
for (int i=0; i<length; i++)
|
||||||
|
{
|
||||||
|
UIWidget* child = (UIWidget*)(arrayWidgetChildren->arr[i]);
|
||||||
|
addChild(child->clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWidget::copySpecialProperties(UIWidget* model)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWidget::copyProperties(UIWidget *widget)
|
||||||
|
{
|
||||||
|
setEnabled(widget->isEnabled());
|
||||||
|
setVisible(widget->isVisible());
|
||||||
|
setBright(widget->isBright());
|
||||||
|
setTouchEnabled(widget->isTouchEnabled());
|
||||||
|
_touchPassedEnabled = false;
|
||||||
|
setZOrder(widget->getZOrder());
|
||||||
|
setUpdateEnabled(widget->isUpdateEnabled());
|
||||||
|
setTag(widget->getTag());
|
||||||
|
setName(widget->getName());
|
||||||
|
setActionTag(widget->getActionTag());
|
||||||
|
_ignoreSize = widget->_ignoreSize;
|
||||||
|
_size = widget->_size;
|
||||||
|
_customSize = widget->_customSize;
|
||||||
|
copySpecialProperties(widget);
|
||||||
|
_sizeType = widget->getSizeType();
|
||||||
|
_sizePercent = widget->_sizePercent;
|
||||||
|
_positionType = widget->_positionType;
|
||||||
|
_positionPercent = widget->_positionPercent;
|
||||||
|
setPosition(widget->getPosition());
|
||||||
|
setAnchorPoint(widget->getAnchorPoint());
|
||||||
|
setScaleX(widget->getScaleX());
|
||||||
|
setScaleY(widget->getScaleY());
|
||||||
|
setRotation(widget->getRotation());
|
||||||
|
setRotationX(widget->getRotationX());
|
||||||
|
setRotationY(widget->getRotationY());
|
||||||
|
setFlipX(widget->isFlipX());
|
||||||
|
setFlipY(widget->isFlipY());
|
||||||
|
setColor(widget->getColor());
|
||||||
|
setOpacity(widget->getOpacity());
|
||||||
|
setCascadeOpacityEnabled(widget->isCascadeOpacityEnabled());
|
||||||
|
setCascadeColorEnabled(widget->isCascadeColorEnabled());
|
||||||
|
onSizeChanged();
|
||||||
|
}
|
||||||
|
|
||||||
/*temp action*/
|
/*temp action*/
|
||||||
void UIWidget::setActionTag(int tag)
|
void UIWidget::setActionTag(int tag)
|
||||||
{
|
{
|
||||||
|
@ -1214,7 +1239,7 @@ void GUIRenderer::visit()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NodeRGBA::visit();
|
cocos2d::NodeRGBA::visit();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
|
|
||||||
#include "cocos2d.h"
|
#include "cocos2d.h"
|
||||||
#include "gui/UILayoutDefine.h"
|
#include "gui/UILayoutDefine.h"
|
||||||
#include "gui/LayoutParameter.h"
|
#include "gui/UILayoutParameter.h"
|
||||||
namespace gui {
|
|
||||||
|
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -72,11 +72,10 @@ typedef enum
|
||||||
|
|
||||||
typedef void (cocos2d::Object::*SEL_TouchEvent)(cocos2d::Object*,TouchEventType);
|
typedef void (cocos2d::Object::*SEL_TouchEvent)(cocos2d::Object*,TouchEventType);
|
||||||
#define toucheventselector(_SELECTOR) (SEL_TouchEvent)(&_SELECTOR)
|
#define toucheventselector(_SELECTOR) (SEL_TouchEvent)(&_SELECTOR)
|
||||||
|
/**
|
||||||
//class UILayer;
|
* @js NA
|
||||||
/*temp action*/
|
* @lua NA
|
||||||
class UIActionNode;
|
*/
|
||||||
|
|
||||||
class UIWidget : public cocos2d::Object
|
class UIWidget : public cocos2d::Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -261,11 +260,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void removeAllChildren();
|
virtual void removeAllChildren();
|
||||||
|
|
||||||
/**
|
|
||||||
* Unschedules the "update" method.
|
|
||||||
*/
|
|
||||||
void disableUpdate();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reorders a child according to a new z value.
|
* Reorders a child according to a new z value.
|
||||||
*
|
*
|
||||||
|
@ -304,27 +298,27 @@ public:
|
||||||
/**
|
/**
|
||||||
* Gets the renderer of widget
|
* Gets the renderer of widget
|
||||||
*
|
*
|
||||||
* renderer is a CCNode, it's for drawing
|
* renderer is a Node, it's for drawing
|
||||||
*
|
*
|
||||||
* @return a CCNode object
|
* @return a Node object
|
||||||
*/
|
*/
|
||||||
cocos2d::Node* getRenderer();
|
cocos2d::Node* getRenderer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a CCNode for rendering.
|
* Add a Node for rendering.
|
||||||
*
|
*
|
||||||
* renderer is a CCNode, it's for drawing
|
* renderer is a Node, it's for drawing
|
||||||
*
|
*
|
||||||
* @param renderer A render node
|
* @param renderer A render node
|
||||||
*
|
*
|
||||||
* @param zOrder Z order for drawing priority. Please refer to CCNode::setZOrder(int)
|
* @param zOrder Z order for drawing priority. Please refer to Node::setZOrder(int)
|
||||||
*/
|
*/
|
||||||
void addRenderer(cocos2d::Node* renderer, int zOrder);
|
void addRenderer(cocos2d::Node* renderer, int zOrder);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a CCNode from widget.
|
* Remove a Node from widget.
|
||||||
*
|
*
|
||||||
* renderer is a CCNode, it's for drawing
|
* renderer is a Node, it's for drawing
|
||||||
*
|
*
|
||||||
* @param renderer A render node which needs to be removed
|
* @param renderer A render node which needs to be removed
|
||||||
*
|
*
|
||||||
|
@ -359,7 +353,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Changes the position (x,y) of the widget in OpenGL coordinates
|
* Changes the position (x,y) of the widget in OpenGL coordinates
|
||||||
*
|
*
|
||||||
* Usually we use ccp(x,y) to compose Point object.
|
* Usually we use p(x,y) to compose Point object.
|
||||||
* The original point (0,0) is at the left-bottom corner of screen.
|
* The original point (0,0) is at the left-bottom corner of screen.
|
||||||
*
|
*
|
||||||
* @param position The position (x,y) of the widget in OpenGL coordinates
|
* @param position The position (x,y) of the widget in OpenGL coordinates
|
||||||
|
@ -369,7 +363,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Changes the position (x,y) of the widget in OpenGL coordinates
|
* Changes the position (x,y) of the widget in OpenGL coordinates
|
||||||
*
|
*
|
||||||
* Usually we use ccp(x,y) to compose Point object.
|
* Usually we use p(x,y) to compose Point object.
|
||||||
* The original point (0,0) is at the left-bottom corner of screen.
|
* The original point (0,0) is at the left-bottom corner of screen.
|
||||||
*
|
*
|
||||||
* @param percent The percent (x,y) of the widget in OpenGL coordinates
|
* @param percent The percent (x,y) of the widget in OpenGL coordinates
|
||||||
|
@ -809,15 +803,21 @@ public:
|
||||||
* @see LayoutParameter
|
* @see LayoutParameter
|
||||||
*
|
*
|
||||||
* @param LayoutParameter pointer
|
* @param LayoutParameter pointer
|
||||||
|
*
|
||||||
|
* @param type Relative or Linear
|
||||||
*/
|
*/
|
||||||
void setLayoutParameter(LayoutParameter* parameter);
|
void setLayoutParameter(UILayoutParameter* parameter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets LayoutParameter of widget.
|
* Gets LayoutParameter of widget.
|
||||||
*
|
*
|
||||||
* @see LayoutParameter
|
* @see LayoutParameter
|
||||||
|
*
|
||||||
|
* @param type Relative or Linear
|
||||||
|
*
|
||||||
|
* @return LayoutParameter
|
||||||
*/
|
*/
|
||||||
LayoutParameter* getLayoutParameter();
|
UILayoutParameter* getLayoutParameter(LayoutParameterType type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ignore the widget size
|
* Ignore the widget size
|
||||||
|
@ -850,7 +850,7 @@ public:
|
||||||
*
|
*
|
||||||
* For example, a button's Virtual Renderer is it's texture renderer.
|
* For example, a button's Virtual Renderer is it's texture renderer.
|
||||||
*
|
*
|
||||||
* @return CCNode pointer.
|
* @return Node pointer.
|
||||||
*/
|
*/
|
||||||
virtual cocos2d::Node* getVirtualRenderer();
|
virtual cocos2d::Node* getVirtualRenderer();
|
||||||
|
|
||||||
|
@ -871,14 +871,15 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual const cocos2d::Size& getContentSize() const;
|
virtual const cocos2d::Size& getContentSize() const;
|
||||||
|
|
||||||
virtual void onEnter();
|
|
||||||
virtual void onExit();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the "class name" of widget.
|
* Returns the "class name" of widget.
|
||||||
*/
|
*/
|
||||||
virtual const char* getDescription() const;
|
virtual const char* getDescription() const;
|
||||||
|
|
||||||
|
UIWidget* clone();
|
||||||
|
|
||||||
|
virtual void onEnter();
|
||||||
|
virtual void onExit();
|
||||||
/*temp action*/
|
/*temp action*/
|
||||||
void setActionTag(int tag);
|
void setActionTag(int tag);
|
||||||
int getActionTag();
|
int getActionTag();
|
||||||
|
@ -913,6 +914,10 @@ protected:
|
||||||
*/
|
*/
|
||||||
virtual void releaseResoures();
|
virtual void releaseResoures();
|
||||||
void updateSizeAndPosition();
|
void updateSizeAndPosition();
|
||||||
|
void copyProperties(UIWidget* model);
|
||||||
|
virtual UIWidget* createCloneInstance();
|
||||||
|
virtual void copySpecialProperties(UIWidget* model);
|
||||||
|
virtual void copyClonedWidgetChildren(UIWidget* model);
|
||||||
protected:
|
protected:
|
||||||
bool _enabled; ///< Highest control of widget
|
bool _enabled; ///< Highest control of widget
|
||||||
bool _visible; ///< is this widget visible
|
bool _visible; ///< is this widget visible
|
||||||
|
@ -930,7 +935,7 @@ protected:
|
||||||
cocos2d::Point _touchMovePos; ///< touch moved point
|
cocos2d::Point _touchMovePos; ///< touch moved point
|
||||||
cocos2d::Point _touchEndPos; ///< touch ended point
|
cocos2d::Point _touchEndPos; ///< touch ended point
|
||||||
|
|
||||||
cocos2d::Object* _touchEventListener;
|
Object* _touchEventListener;
|
||||||
SEL_TouchEvent _touchEventSelector;
|
SEL_TouchEvent _touchEventSelector;
|
||||||
|
|
||||||
|
|
||||||
|
@ -941,7 +946,7 @@ protected:
|
||||||
int _actionTag;
|
int _actionTag;
|
||||||
cocos2d::Size _size;
|
cocos2d::Size _size;
|
||||||
cocos2d::Size _customSize;
|
cocos2d::Size _customSize;
|
||||||
LayoutParameter* _layoutParameter;
|
cocos2d::Dictionary* _layoutParameterDictionary;
|
||||||
bool _ignoreSize;
|
bool _ignoreSize;
|
||||||
cocos2d::Array* _children;
|
cocos2d::Array* _children;
|
||||||
bool _affectByClipping;
|
bool _affectByClipping;
|
||||||
|
@ -954,7 +959,10 @@ protected:
|
||||||
cocos2d::Point _positionPercent;
|
cocos2d::Point _positionPercent;
|
||||||
bool _isRunning;
|
bool _isRunning;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
class GUIRenderer : public cocos2d::NodeRGBA
|
class GUIRenderer : public cocos2d::NodeRGBA
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -969,5 +977,4 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* defined(__UIWidget__) */
|
#endif /* defined(__UIWidget__) */
|
||||||
|
|
|
@ -19,7 +19,6 @@ CocosGUITestScene::~CocosGUITestScene()
|
||||||
{
|
{
|
||||||
cocostudio::SceneReader::getInstance()->purgeSceneReader();
|
cocostudio::SceneReader::getInstance()->purgeSceneReader();
|
||||||
cocostudio::ActionManagerEx::purgeActionManager();
|
cocostudio::ActionManagerEx::purgeActionManager();
|
||||||
gui::UIHelper::purgeUIHelper();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CocosGUITestScene::runThisTest()
|
void CocosGUITestScene::runThisTest()
|
||||||
|
|
|
@ -44,78 +44,25 @@ bool UIDragPanelTest::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UIScrollView* sc = UIScrollView::create();
|
||||||
|
sc->setBackGroundColor(Color3B::GREEN);
|
||||||
// Create the dragpanel
|
sc->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
UIDragPanel* dragPanel = UIDragPanel::create();
|
sc->setDirection(SCROLLVIEW_DIR_BOTH);
|
||||||
dragPanel->setTouchEnabled(true);
|
sc->setInnerContainerSize(Size(480, 320));
|
||||||
dragPanel->setBackGroundImageScale9Enabled(true);
|
sc->setSize(Size(100,100));
|
||||||
dragPanel->setBackGroundImage("cocosgui/scrollviewbg.png");
|
sc->setPosition(Point(100,100));
|
||||||
dragPanel->setSize(Size(210, 122.5));
|
sc->scrollToPercentBothDirection(Point(50, 50), 1, true);
|
||||||
Size backgroundSize = background->getContentSize();
|
UIImageView* iv = UIImageView::create();
|
||||||
dragPanel->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
iv->loadTexture("cocosgui/Hello.png");
|
||||||
(backgroundSize.width - dragPanel->getSize().width) / 2,
|
iv->setPosition(Point(240, 160));
|
||||||
(widgetSize.height - backgroundSize.height) / 2 +
|
sc->addChild(iv);
|
||||||
(backgroundSize.height - dragPanel->getSize().height) / 2));
|
m_pUiLayer->addWidget(sc);
|
||||||
dragPanel->addEventListener(this, dragpaneleventselector(UIDragPanelTest::dragPanelEvent));
|
|
||||||
|
|
||||||
UIImageView* imageView = UIImageView::create();
|
|
||||||
imageView->setTouchEnabled(true);
|
|
||||||
imageView->loadTexture("cocosgui/b11.png");
|
|
||||||
dragPanel->addChild(imageView);
|
|
||||||
|
|
||||||
dragPanel->setInnerContainerSize(imageView->getContentSize());
|
|
||||||
Size innerSize = dragPanel->getInnerContainerSize();
|
|
||||||
imageView->setPosition(Point(innerSize.width / 2, innerSize.height / 2));
|
|
||||||
|
|
||||||
m_pUiLayer->addWidget(dragPanel);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIDragPanelTest::dragPanelEvent(Object *pSender, DragPanelEventType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case DRAGPANEL_EVENT_BERTH_LEFTBOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Left Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_LFETTOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Left Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_RIGHTBOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Right Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_RIGHTTOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Right Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_LEFT:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Left")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_TOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_RIGHT:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Right")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BERTH_BOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Berth To Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UIDragPanelTest_Bounce
|
// UIDragPanelTest_Bounce
|
||||||
UIDragPanelTest_Bounce::UIDragPanelTest_Bounce()
|
UIDragPanelTest_Bounce::UIDragPanelTest_Bounce()
|
||||||
: m_pDisplayValueLabel(NULL)
|
: m_pDisplayValueLabel(NULL)
|
||||||
|
@ -151,76 +98,23 @@ bool UIDragPanelTest_Bounce::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UIScrollView* sc = UIScrollView::create();
|
||||||
|
sc->setBackGroundColor(Color3B::GREEN);
|
||||||
// Create the dragpanel
|
sc->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
UIDragPanel* dragPanel = UIDragPanel::create();
|
sc->setBounceEnabled(true);
|
||||||
dragPanel->setTouchEnabled(true);
|
sc->setDirection(SCROLLVIEW_DIR_BOTH);
|
||||||
dragPanel->setBounceEnable(true);
|
sc->setInnerContainerSize(Size(480, 320));
|
||||||
dragPanel->setBackGroundImageScale9Enabled(true);
|
sc->setSize(Size(100,100));
|
||||||
dragPanel->setBackGroundImage("cocosgui/green_edit.png");
|
sc->setPosition(Point(100,100));
|
||||||
dragPanel->setSize(Size(210, 122.5));
|
sc->scrollToPercentBothDirection(Point(50, 50), 1, true);
|
||||||
Size backgroundSize = background->getContentSize();
|
UIImageView* iv = UIImageView::create();
|
||||||
dragPanel->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
iv->loadTexture("cocosgui/Hello.png");
|
||||||
(backgroundSize.width - dragPanel->getSize().width) / 2,
|
iv->setPosition(Point(240, 160));
|
||||||
(widgetSize.height - backgroundSize.height) / 2 +
|
sc->addChild(iv);
|
||||||
(backgroundSize.height - dragPanel->getSize().height) / 2));
|
m_pUiLayer->addWidget(sc);
|
||||||
dragPanel->addEventListener(this, dragpaneleventselector(UIDragPanelTest_Bounce::dragPanelEvent));
|
|
||||||
|
|
||||||
UIImageView* imageView = UIImageView::create();
|
|
||||||
imageView->setTouchEnabled(true);
|
|
||||||
imageView->loadTexture("cocosgui/b11.png");
|
|
||||||
dragPanel->addChild(imageView);
|
|
||||||
|
|
||||||
dragPanel->setInnerContainerSize(imageView->getContentSize());
|
|
||||||
Size innerSize = dragPanel->getInnerContainerSize();
|
|
||||||
imageView->setPosition(Point(innerSize.width / 2, innerSize.height / 2));
|
|
||||||
|
|
||||||
m_pUiLayer->addWidget(dragPanel);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIDragPanelTest_Bounce::dragPanelEvent(Object *pSender, DragPanelEventType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_LEFTBOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Left Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_LEFTTOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Left Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_RIGHTBOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Right Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_RIGHTTOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Right Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_LEFT:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Left")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_TOP:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Top")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_RIGHT:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Right")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAGPANEL_EVENT_BOUNCE_BOTTOM:
|
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("Bounce To Bottom")->getCString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,7 +33,6 @@ public:
|
||||||
UIDragPanelTest();
|
UIDragPanelTest();
|
||||||
~UIDragPanelTest();
|
~UIDragPanelTest();
|
||||||
bool init();
|
bool init();
|
||||||
void dragPanelEvent(Object* pSender, DragPanelEventType type);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UI_SCENE_CREATE_FUNC(UIDragPanelTest)
|
UI_SCENE_CREATE_FUNC(UIDragPanelTest)
|
||||||
|
@ -46,7 +45,6 @@ public:
|
||||||
UIDragPanelTest_Bounce();
|
UIDragPanelTest_Bounce();
|
||||||
~UIDragPanelTest_Bounce();
|
~UIDragPanelTest_Bounce();
|
||||||
bool init();
|
bool init();
|
||||||
void dragPanelEvent(Object* pSender, DragPanelEventType type);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UI_SCENE_CREATE_FUNC(UIDragPanelTest_Bounce)
|
UI_SCENE_CREATE_FUNC(UIDragPanelTest_Bounce)
|
||||||
|
|
|
@ -45,54 +45,23 @@ bool UIListViewTest_Vertical::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
|
||||||
|
|
||||||
// Create the list view
|
UIListView* lv = UIListView::create();
|
||||||
m_nCount = 0;
|
UIButton* model = UIButton::create();
|
||||||
m_array = CCArray::create();
|
model->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
||||||
m_array->retain();
|
lv->setItemModel(model);
|
||||||
for (int i = 0; i < 20; ++i)
|
|
||||||
|
for (int i=0; i<20; i++)
|
||||||
{
|
{
|
||||||
String* ccstr = String::createWithFormat("object_%d", i);
|
lv->pushBackDefaultItem();
|
||||||
m_array->addObject(ccstr);
|
|
||||||
}
|
}
|
||||||
|
lv->setItemsMargin(10);
|
||||||
UIListView *listView = UIListView::create();
|
lv->setGravity(LISTVIEW_GRAVITY_CENTER_HORIZONTAL);
|
||||||
listView->setTouchEnabled(true);
|
lv->setSize(Size(100, 100));
|
||||||
listView->setBackGroundImageScale9Enabled(true);
|
lv->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
listView->setBackGroundImage("cocosgui/green_edit.png");
|
lv->setBackGroundColor(Color3B::GREEN);
|
||||||
listView->setSize(Size(240, 130));
|
lv->setPosition(Point(100, 100));
|
||||||
Size backgroundSize = background->getContentSize();
|
m_pUiLayer->addWidget(lv);
|
||||||
listView->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
|
||||||
(backgroundSize.width - listView->getSize().width) / 2,
|
|
||||||
(widgetSize.height - backgroundSize.height) / 2 +
|
|
||||||
(backgroundSize.height - listView->getSize().height) / 2));
|
|
||||||
|
|
||||||
float listWidth = listView->getSize().width;
|
|
||||||
float listHeight = listView->getSize().height;
|
|
||||||
|
|
||||||
for (int i = 0; i < 5; ++i)
|
|
||||||
{
|
|
||||||
UIButton* textButton = UIButton::create();
|
|
||||||
textButton->setName("TextButton");
|
|
||||||
textButton->setTouchEnabled(true);
|
|
||||||
textButton->loadTextures("cocosgui/backtotoppressed.png", "cocosgui/backtotopnormal.png", "");
|
|
||||||
|
|
||||||
Layout *layout = Layout::create();
|
|
||||||
layout->setName(String::createWithFormat("panel_%i", i)->getCString());
|
|
||||||
layout->setSize(Size(textButton->getSize().width, textButton->getSize().height));
|
|
||||||
textButton->setPosition(Point(layout->getSize().width / 2, layout->getSize().height / 2));
|
|
||||||
layout->addChild(textButton);
|
|
||||||
|
|
||||||
Size panel_size = layout->getSize();
|
|
||||||
layout->setPosition(Point((listWidth - panel_size.width) / 2,
|
|
||||||
(listHeight - (panel_size.height + panel_size.height * 0.25)) - i * (panel_size.height + panel_size.height * 0.25)));
|
|
||||||
|
|
||||||
listView->addChild(layout);
|
|
||||||
}
|
|
||||||
listView->addEventListenter(this, listvieweventselector(UIListViewTest_Vertical::listViewEvent));
|
|
||||||
listView->initChildWithDataLength(m_array->count());
|
|
||||||
m_pUiLayer->addWidget(listView);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -100,46 +69,6 @@ bool UIListViewTest_Vertical::init()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIListViewTest_Vertical::listViewEvent(Object *pSender, ListViewEventType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case LISTVIEW_EVENT_INIT_CHILD:
|
|
||||||
{
|
|
||||||
String* ccstr = static_cast<String*>(m_array->getObjectAtIndex(m_nCount));
|
|
||||||
UIListView* list = dynamic_cast<UIListView*>(pSender);
|
|
||||||
|
|
||||||
Layout* layout = dynamic_cast<Layout*>(list->getUpdateChild());
|
|
||||||
UIButton* textButton = dynamic_cast<UIButton*>(layout->getChildByName("TextButton"));
|
|
||||||
textButton->setTitleText(ccstr->getCString());
|
|
||||||
|
|
||||||
m_nCount++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LISTVIEW_EVENT_UPDATE_CHILD:
|
|
||||||
{
|
|
||||||
UIListView* list = dynamic_cast<UIListView*>(pSender);
|
|
||||||
int index = list->getUpdateDataIndex();
|
|
||||||
|
|
||||||
if (index < 0 || index >= list->getDataLength())
|
|
||||||
{
|
|
||||||
list->setUpdateSuccess(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
String* ccstr = static_cast<String*>(m_array->getObjectAtIndex(index));
|
|
||||||
Layout* layout = dynamic_cast<Layout*>(list->getUpdateChild());
|
|
||||||
UIButton* textButton = dynamic_cast<UIButton*>(layout->getChildByName("TextButton"));
|
|
||||||
textButton->setTitleText(ccstr->getCString());
|
|
||||||
list->setUpdateSuccess(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UIListViewTest_Horizontal
|
// UIListViewTest_Horizontal
|
||||||
|
|
||||||
UIListViewTest_Horizontal::UIListViewTest_Horizontal()
|
UIListViewTest_Horizontal::UIListViewTest_Horizontal()
|
||||||
|
@ -176,97 +105,26 @@ bool UIListViewTest_Horizontal::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
|
||||||
|
|
||||||
// Create the list view
|
UIListView* lv = UIListView::create();
|
||||||
m_nCount = 0;
|
lv->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
|
||||||
m_array = CCArray::create();
|
UIButton* model = UIButton::create();
|
||||||
m_array->retain();
|
model->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
||||||
for (int i = 0; i < 20; ++i)
|
lv->setItemModel(model);
|
||||||
|
|
||||||
|
for (int i=0; i<20; i++)
|
||||||
{
|
{
|
||||||
String* ccstr = String::createWithFormat("object_%d", i);
|
lv->pushBackDefaultItem();
|
||||||
m_array->addObject(ccstr);
|
|
||||||
}
|
}
|
||||||
|
lv->setItemsMargin(10);
|
||||||
UIListView *listView = UIListView::create();
|
lv->setGravity(LISTVIEW_GRAVITY_CENTER_VERTICAL);
|
||||||
listView->setDirection(LISTVIEW_DIR_HORIZONTAL);
|
lv->setSize(Size(100, 100));
|
||||||
listView->setTouchEnabled(true);
|
lv->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
listView->setBackGroundImageScale9Enabled(true);
|
lv->setBackGroundColor(Color3B::GREEN);
|
||||||
listView->setBackGroundImage("cocosgui/green_edit.png");
|
lv->setPosition(Point(100, 100));
|
||||||
listView->setSize(Size(240, 130));
|
m_pUiLayer->addWidget(lv);
|
||||||
Size backgroundSize = background->getContentSize();
|
|
||||||
listView->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
|
||||||
(backgroundSize.width - listView->getSize().width) / 2,
|
|
||||||
(widgetSize.height - backgroundSize.height) / 2 +
|
|
||||||
(backgroundSize.height - listView->getSize().height) / 2));
|
|
||||||
|
|
||||||
float listHeight = listView->getSize().height;
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; ++i)
|
|
||||||
{
|
|
||||||
UIButton* textButton = UIButton::create();
|
|
||||||
textButton->setName("TextButton");
|
|
||||||
textButton->setTouchEnabled(true);
|
|
||||||
textButton->loadTextures("cocosgui/backtotoppressed.png", "cocosgui/backtotopnormal.png", "");
|
|
||||||
|
|
||||||
Layout *layout = Layout::create();
|
|
||||||
layout->setName(String::createWithFormat("panel_%i", i)->getCString());
|
|
||||||
layout->setSize(Size(textButton->getSize().width, textButton->getSize().height));
|
|
||||||
textButton->setPosition(Point(layout->getSize().width / 2, layout->getSize().height / 2));
|
|
||||||
layout->addChild(textButton);
|
|
||||||
|
|
||||||
Size layout_size = layout->getSize();
|
|
||||||
layout->setPosition(Point(0 + (layout_size.width * 0.2) + i * (layout_size.width + layout_size.width * 0.2),
|
|
||||||
(listHeight - layout_size.height) / 2));
|
|
||||||
|
|
||||||
listView->addChild(layout);
|
|
||||||
}
|
|
||||||
listView->addEventListenter(this, listvieweventselector(UIListViewTest_Horizontal::listViewEvent));
|
|
||||||
listView->initChildWithDataLength(m_array->count());
|
|
||||||
m_pUiLayer->addWidget(listView);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIListViewTest_Horizontal::listViewEvent(Object *pSender, ListViewEventType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case LISTVIEW_EVENT_INIT_CHILD:
|
|
||||||
{
|
|
||||||
String* ccstr = static_cast<String*>(m_array->getObjectAtIndex(m_nCount));
|
|
||||||
UIListView* list = dynamic_cast<UIListView*>(pSender);
|
|
||||||
|
|
||||||
Layout* layout = dynamic_cast<Layout*>(list->getUpdateChild());
|
|
||||||
UIButton* textButton = dynamic_cast<UIButton*>(layout->getChildByName("TextButton"));
|
|
||||||
textButton->setTitleText(ccstr->getCString());
|
|
||||||
|
|
||||||
m_nCount++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LISTVIEW_EVENT_UPDATE_CHILD:
|
|
||||||
{
|
|
||||||
UIListView* list = dynamic_cast<UIListView*>(pSender);
|
|
||||||
int index = list->getUpdateDataIndex();
|
|
||||||
|
|
||||||
if (index < 0 || index >= list->getDataLength())
|
|
||||||
{
|
|
||||||
list->setUpdateSuccess(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
String* ccstr = static_cast<String*>(m_array->getObjectAtIndex(index));
|
|
||||||
Layout* layout = dynamic_cast<Layout*>(list->getUpdateChild());
|
|
||||||
UIButton* textButton = dynamic_cast<UIButton*>(layout->getChildByName("TextButton"));
|
|
||||||
textButton->setTitleText(ccstr->getCString());
|
|
||||||
list->setUpdateSuccess(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,7 +33,6 @@ public:
|
||||||
UIListViewTest_Vertical();
|
UIListViewTest_Vertical();
|
||||||
~UIListViewTest_Vertical();
|
~UIListViewTest_Vertical();
|
||||||
bool init();
|
bool init();
|
||||||
void listViewEvent(Object* pSender, ListViewEventType type);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UI_SCENE_CREATE_FUNC(UIListViewTest_Vertical)
|
UI_SCENE_CREATE_FUNC(UIListViewTest_Vertical)
|
||||||
|
@ -49,7 +48,6 @@ public:
|
||||||
UIListViewTest_Horizontal();
|
UIListViewTest_Horizontal();
|
||||||
~UIListViewTest_Horizontal();
|
~UIListViewTest_Horizontal();
|
||||||
bool init();
|
bool init();
|
||||||
void listViewEvent(Object* pSender, ListViewEventType type);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UI_SCENE_CREATE_FUNC(UIListViewTest_Horizontal)
|
UI_SCENE_CREATE_FUNC(UIListViewTest_Horizontal)
|
||||||
|
|
|
@ -44,7 +44,7 @@ bool UIPageViewTest::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the page view
|
// Create the page view
|
||||||
UIPageView* pageView = UIPageView::create();
|
UIPageView* pageView = UIPageView::create();
|
||||||
|
@ -58,7 +58,7 @@ bool UIPageViewTest::init()
|
||||||
|
|
||||||
for (int i = 0; i < 3; ++i)
|
for (int i = 0; i < 3; ++i)
|
||||||
{
|
{
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setSize(Size(240, 130));
|
layout->setSize(Size(240, 130));
|
||||||
|
|
||||||
UIImageView* imageView = UIImageView::create();
|
UIImageView* imageView = UIImageView::create();
|
||||||
|
|
|
@ -34,10 +34,10 @@ bool UIPanelTest::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout
|
// Create the layout
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
Size backgroundSize = background->getSize();
|
Size backgroundSize = background->getSize();
|
||||||
layout->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
layout->setPosition(Point((widgetSize.width - backgroundSize.width) / 2 +
|
||||||
|
@ -98,10 +98,10 @@ bool UIPanelTest_Color::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout with color render
|
// Create the layout with color render
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
layout->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
layout->setBackGroundColor(Color3B(128, 128, 128));
|
layout->setBackGroundColor(Color3B(128, 128, 128));
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
|
@ -163,10 +163,10 @@ bool UIPanelTest_Gradient::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout with gradient render
|
// Create the layout with gradient render
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setBackGroundColorType(LAYOUT_COLOR_GRADIENT);
|
layout->setBackGroundColorType(LAYOUT_COLOR_GRADIENT);
|
||||||
layout->setBackGroundColor(Color3B(64, 64, 64), Color3B(192, 192, 192));
|
layout->setBackGroundColor(Color3B(64, 64, 64), Color3B(192, 192, 192));
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
|
@ -228,10 +228,10 @@ bool UIPanelTest_BackGroundImage::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout with background image
|
// Create the layout with background image
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setClippingEnabled(true);
|
layout->setClippingEnabled(true);
|
||||||
layout->setBackGroundImage("cocosgui/Hello.png");
|
layout->setBackGroundImage("cocosgui/Hello.png");
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
|
@ -293,10 +293,10 @@ bool UIPanelTest_BackGroundImage_Scale9::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout with background image
|
// Create the layout with background image
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setBackGroundImageScale9Enabled(true);
|
layout->setBackGroundImageScale9Enabled(true);
|
||||||
layout->setBackGroundImage("cocosgui/green_edit.png");
|
layout->setBackGroundImage("cocosgui/green_edit.png");
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
|
@ -358,10 +358,10 @@ bool UIPanelTest_Layout_Linear_Vertical::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout
|
// Create the layout
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setLayoutType(LAYOUT_LINEAR_VERTICAL);
|
layout->setLayoutType(LAYOUT_LINEAR_VERTICAL);
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
Size backgroundSize = background->getSize();
|
Size backgroundSize = background->getSize();
|
||||||
|
@ -377,7 +377,7 @@ bool UIPanelTest_Layout_Linear_Vertical::init()
|
||||||
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
||||||
layout->addChild(button);
|
layout->addChild(button);
|
||||||
|
|
||||||
LinearLayoutParameter* lp1 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp1 = UILinearLayoutParameter::create();
|
||||||
button->setLayoutParameter(lp1);
|
button->setLayoutParameter(lp1);
|
||||||
lp1->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
lp1->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
||||||
lp1->setMargin(UIMargin(0, 5, 0, 10));
|
lp1->setMargin(UIMargin(0, 5, 0, 10));
|
||||||
|
@ -389,7 +389,7 @@ bool UIPanelTest_Layout_Linear_Vertical::init()
|
||||||
textButton->setTitleText("Text Button");
|
textButton->setTitleText("Text Button");
|
||||||
layout->addChild(textButton);
|
layout->addChild(textButton);
|
||||||
|
|
||||||
LinearLayoutParameter* lp2 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp2 = UILinearLayoutParameter::create();
|
||||||
textButton->setLayoutParameter(lp2);
|
textButton->setLayoutParameter(lp2);
|
||||||
lp2->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
lp2->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
||||||
lp2->setMargin(UIMargin(0, 10, 0, 10));
|
lp2->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
@ -402,7 +402,7 @@ bool UIPanelTest_Layout_Linear_Vertical::init()
|
||||||
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
||||||
layout->addChild(button_scale9);
|
layout->addChild(button_scale9);
|
||||||
|
|
||||||
LinearLayoutParameter* lp3 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp3 = UILinearLayoutParameter::create();
|
||||||
button_scale9->setLayoutParameter(lp3);
|
button_scale9->setLayoutParameter(lp3);
|
||||||
lp3->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
lp3->setGravity(LINEAR_GRAVITY_CENTER_HORIZONTAL);
|
||||||
lp3->setMargin(UIMargin(0, 10, 0, 10));
|
lp3->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
@ -441,10 +441,10 @@ bool UIPanelTest_Layout_Linear_Horizontal::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout
|
// Create the layout
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setLayoutType(LAYOUT_LINEAR_HORIZONTAL);
|
layout->setLayoutType(LAYOUT_LINEAR_HORIZONTAL);
|
||||||
layout->setClippingEnabled(true);
|
layout->setClippingEnabled(true);
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
|
@ -460,7 +460,7 @@ bool UIPanelTest_Layout_Linear_Horizontal::init()
|
||||||
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
||||||
layout->addChild(button);
|
layout->addChild(button);
|
||||||
|
|
||||||
LinearLayoutParameter* lp1 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp1 = UILinearLayoutParameter::create();
|
||||||
button->setLayoutParameter(lp1);
|
button->setLayoutParameter(lp1);
|
||||||
lp1->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
lp1->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
||||||
lp1->setMargin(UIMargin(0, 10, 0, 10));
|
lp1->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
@ -472,7 +472,7 @@ bool UIPanelTest_Layout_Linear_Horizontal::init()
|
||||||
textButton->setTitleText("Text Button");
|
textButton->setTitleText("Text Button");
|
||||||
layout->addChild(textButton);
|
layout->addChild(textButton);
|
||||||
|
|
||||||
LinearLayoutParameter* lp2 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp2 = UILinearLayoutParameter::create();
|
||||||
textButton->setLayoutParameter(lp2);
|
textButton->setLayoutParameter(lp2);
|
||||||
lp2->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
lp2->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
||||||
lp2->setMargin(UIMargin(0, 10, 0, 10));
|
lp2->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
@ -485,7 +485,7 @@ bool UIPanelTest_Layout_Linear_Horizontal::init()
|
||||||
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
||||||
layout->addChild(button_scale9);
|
layout->addChild(button_scale9);
|
||||||
|
|
||||||
LinearLayoutParameter* lp3 = LinearLayoutParameter::create();
|
UILinearLayoutParameter* lp3 = UILinearLayoutParameter::create();
|
||||||
button_scale9->setLayoutParameter(lp3);
|
button_scale9->setLayoutParameter(lp3);
|
||||||
lp3->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
lp3->setGravity(LINEAR_GRAVITY_CENTER_VERTICAL);
|
||||||
lp3->setMargin(UIMargin(0, 10, 0, 10));
|
lp3->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
@ -524,10 +524,10 @@ bool UIPanelTest_Layout_Relative::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the layout
|
// Create the layout
|
||||||
Layout* layout = Layout::create();
|
UILayout* layout = UILayout::create();
|
||||||
layout->setLayoutType(LAYOUT_RELATIVE);
|
layout->setLayoutType(LAYOUT_RELATIVE);
|
||||||
layout->setSize(Size(280, 150));
|
layout->setSize(Size(280, 150));
|
||||||
layout->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
layout->setBackGroundColorType(LAYOUT_COLOR_SOLID);
|
||||||
|
@ -544,9 +544,9 @@ bool UIPanelTest_Layout_Relative::init()
|
||||||
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
button->loadTextures("cocosgui/animationbuttonnormal.png", "cocosgui/animationbuttonpressed.png", "");
|
||||||
layout->addChild(button);
|
layout->addChild(button);
|
||||||
|
|
||||||
RelativeLayoutParameter* rp1 = RelativeLayoutParameter::create();
|
UIRelativeLayoutParameter* rp1 = UIRelativeLayoutParameter::create();
|
||||||
button->setLayoutParameter(rp1);
|
button->setLayoutParameter(rp1);
|
||||||
rp1->setAlign(RELATIVE_ALIGN_PARENT_BOTTOM);
|
rp1->setAlign(RELATIVE_ALIGN_PARENT_BOTTOM_CENTER_HORIZONTAL);
|
||||||
// rp1->setMargin(UIMargin(0, 10, 0, 10));
|
// rp1->setMargin(UIMargin(0, 10, 0, 10));
|
||||||
|
|
||||||
|
|
||||||
|
@ -556,9 +556,9 @@ bool UIPanelTest_Layout_Relative::init()
|
||||||
textButton->setTitleText("Text Button");
|
textButton->setTitleText("Text Button");
|
||||||
layout->addChild(textButton);
|
layout->addChild(textButton);
|
||||||
|
|
||||||
RelativeLayoutParameter* rp2 = RelativeLayoutParameter::create();
|
UIRelativeLayoutParameter* rp2 = UIRelativeLayoutParameter::create();
|
||||||
textButton->setLayoutParameter(rp2);
|
textButton->setLayoutParameter(rp2);
|
||||||
rp2->setAlign(RELATIVE_ALIGN_PARENT_LEFT);
|
rp2->setAlign(RELATIVE_ALIGN_PARENT_LEFT_BOTTOM);
|
||||||
|
|
||||||
|
|
||||||
UIButton* button_scale9 = UIButton::create();
|
UIButton* button_scale9 = UIButton::create();
|
||||||
|
@ -568,9 +568,9 @@ bool UIPanelTest_Layout_Relative::init()
|
||||||
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
button_scale9->setSize(Size(100, button_scale9->getContentSize().height));
|
||||||
layout->addChild(button_scale9);
|
layout->addChild(button_scale9);
|
||||||
|
|
||||||
RelativeLayoutParameter* rp3 = RelativeLayoutParameter::create();
|
UIRelativeLayoutParameter* rp3 = UIRelativeLayoutParameter::create();
|
||||||
textButton->setLayoutParameter(rp3);
|
textButton->setLayoutParameter(rp3);
|
||||||
rp3->setAlign(RELATIVE_ALIGN_PARENT_RIGHT);
|
rp3->setAlign(RELATIVE_ALIGN_PARENT_RIGHT_BOTTOM);
|
||||||
|
|
||||||
|
|
||||||
layout->doLayout();
|
layout->doLayout();
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "UIScene.h"
|
#include "UIScene.h"
|
||||||
#include "UISceneManager.h"
|
#include "UISceneManager.h"
|
||||||
#include "../ExtensionsTest.h"
|
#include "../ExtensionsTest.h"
|
||||||
|
#include "editor-support/cocostudio/CCSGUIReader.h"
|
||||||
|
|
||||||
using namespace gui;
|
using namespace gui;
|
||||||
|
|
||||||
|
@ -25,7 +26,7 @@ bool UIScene::init()
|
||||||
m_pUiLayer = UILayer::create();
|
m_pUiLayer = UILayer::create();
|
||||||
addChild(m_pUiLayer);
|
addChild(m_pUiLayer);
|
||||||
|
|
||||||
m_pWidget = dynamic_cast<Layout*>(CCUIHELPER->createWidgetFromJsonFile("cocosgui/UITest/UITest.json"));
|
m_pWidget = dynamic_cast<UILayout*>(cocostudio::CCSGUIReader::shareReader()->widgetFromJsonFile("cocosgui/UITest/UITest.json"));
|
||||||
m_pUiLayer->addWidget(m_pWidget);
|
m_pUiLayer->addWidget(m_pWidget);
|
||||||
|
|
||||||
m_pSceneTitle = dynamic_cast<UILabel*>(m_pUiLayer->getWidgetByName("UItest"));
|
m_pSceneTitle = dynamic_cast<UILabel*>(m_pUiLayer->getWidgetByName("UItest"));
|
||||||
|
|
|
@ -95,7 +95,7 @@ protected:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UILayer *m_pUiLayer;
|
UILayer *m_pUiLayer;
|
||||||
Layout *m_pWidget;
|
UILayout *m_pWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* defined(__TestCpp__UIScene__) */
|
#endif /* defined(__TestCpp__UIScene__) */
|
||||||
|
|
|
@ -44,7 +44,7 @@ bool UIScrollViewTest_Vertical::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the scrollview by vertical
|
// Create the scrollview by vertical
|
||||||
UIScrollView* scrollView = UIScrollView::create();
|
UIScrollView* scrollView = UIScrollView::create();
|
||||||
|
@ -129,10 +129,11 @@ bool UIScrollViewTest_Horizontal::init()
|
||||||
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 2.925));
|
||||||
m_pUiLayer->addWidget(alert);
|
m_pUiLayer->addWidget(alert);
|
||||||
|
|
||||||
Layout *background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
UILayout *background = dynamic_cast<UILayout*>(m_pUiLayer->getWidgetByName("background_Panel"));
|
||||||
|
|
||||||
// Create the scrollview by horizontal
|
// Create the scrollview by horizontal
|
||||||
UIScrollView* scrollView = UIScrollView::create();
|
UIScrollView* scrollView = UIScrollView::create();
|
||||||
|
scrollView->setBounceEnabled(true);
|
||||||
scrollView->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
|
scrollView->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
|
||||||
scrollView->setTouchEnabled(true);
|
scrollView->setTouchEnabled(true);
|
||||||
scrollView->setSize(Size(280, 150));
|
scrollView->setSize(Size(280, 150));
|
||||||
|
|
|
@ -82,7 +82,7 @@ void UITextFieldTest::textFieldEvent(Object *pSender, TextFiledEventType type)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEXTFIELD_EVENT_INDERT_TEXT:
|
case TEXTFIELD_EVENT_INSERT_TEXT:
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words")->getCString());
|
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words")->getCString());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ bool UITextFieldTest_MaxLength::init()
|
||||||
|
|
||||||
// Create the textfield
|
// Create the textfield
|
||||||
UITextField* textField = UITextField::create();
|
UITextField* textField = UITextField::create();
|
||||||
textField->setMaxLengthEnable(true);
|
textField->setMaxLengthEnabled(true);
|
||||||
textField->setMaxLength(3);
|
textField->setMaxLength(3);
|
||||||
textField->setTouchEnabled(true);
|
textField->setTouchEnabled(true);
|
||||||
textField->setFontName(font_UITextFieldTest);
|
textField->setFontName(font_UITextFieldTest);
|
||||||
|
@ -170,7 +170,7 @@ void UITextFieldTest_MaxLength::textFieldEvent(Object *pSender, TextFiledEventTy
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEXTFIELD_EVENT_INDERT_TEXT:
|
case TEXTFIELD_EVENT_INSERT_TEXT:
|
||||||
{
|
{
|
||||||
UITextField* textField = dynamic_cast<UITextField*>(pSender);
|
UITextField* textField = dynamic_cast<UITextField*>(pSender);
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words max length %d", textField->getMaxLength())->getCString());
|
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words max length %d", textField->getMaxLength())->getCString());
|
||||||
|
@ -226,7 +226,7 @@ bool UITextFieldTest_Password::init()
|
||||||
|
|
||||||
// Create the textfield
|
// Create the textfield
|
||||||
UITextField* textField = UITextField::create();
|
UITextField* textField = UITextField::create();
|
||||||
textField->setPasswordEnable(true);
|
textField->setPasswordEnabled(true);
|
||||||
textField->setPasswordStyleText("*");
|
textField->setPasswordStyleText("*");
|
||||||
textField->setTouchEnabled(true);
|
textField->setTouchEnabled(true);
|
||||||
textField->setFontName(font_UITextFieldTest);
|
textField->setFontName(font_UITextFieldTest);
|
||||||
|
@ -264,7 +264,7 @@ void UITextFieldTest_Password::textFieldEvent(Object *pSender, TextFiledEventTyp
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEXTFIELD_EVENT_INDERT_TEXT:
|
case TEXTFIELD_EVENT_INSERT_TEXT:
|
||||||
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words password")->getCString());
|
m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words password")->getCString());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ SceneEditorTestLayer::~SceneEditorTestLayer()
|
||||||
ArmatureDataManager::getInstance()->destoryInstance();
|
ArmatureDataManager::getInstance()->destoryInstance();
|
||||||
SceneReader::getInstance()->purgeSceneReader();
|
SceneReader::getInstance()->purgeSceneReader();
|
||||||
ActionManagerEx::shareManager()->purgeActionManager();
|
ActionManagerEx::shareManager()->purgeActionManager();
|
||||||
UIHelper::instance()->purgeUIHelper();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneEditorTestLayer::SceneEditorTestLayer()
|
SceneEditorTestLayer::SceneEditorTestLayer()
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
3275ac270645139eb273b2a47c215f39bcb0e0d5
|
|
Loading…
Reference in New Issue