#ifndef __XSROLL_H__
#define __XSROLL_H__ #include "CocoHead.h"
#include "XWindow.h" class ENGINE_API CXSroll : public CXWindow
{
public:
enum XSrollType
{
_SrollDirectionVertical = , //垂直
_SrollDirectionHorizontal = , //水平
_SrollVerticalTable = , //垂直选项(Table类型)
_SrollHorizontalTable = , //水平选项(Table类型)
_SrollDirectionBoth = ,
}; public:
CXSroll();
virtual ~CXSroll(); static CXSroll* create(int nId, CCPoint tPos, CCRect rect, const char* psPic = NULL, CXWindow* pParentWnd = NULL); virtual bool init( int nId, CCPoint tPos, CCRect rect, const char* psPic = NULL, CXWindow* pParentWnd = NULL ); virtual UI_TYPE getUIType(); void setSrollType(CXSroll::XSrollType eSrollType);
CXSroll::XSrollType getSrollType(); void addItem(CXWindow* pWnd);
void addItem(CXWindow* pWnd, int nZOrder); void setBounds(float fBounds);
float getBounds(); CXWindow* getItemChildById(int nItemId, int nChildId);
deque<CXWindow*>* getItemDequeById(int nItemId);
map<CXWindow*, deque<CXWindow*> >& getMapItem(); void setTouchDistribute(bool bDistribute); void setItemEnabled(unsigned int wIndex,unsigned int wCount); void setDisableDrag(bool bDisable); protected: virtual void visit(); virtual bool onMouseDown(CCTouch *pTouch, CCEvent *pEvent);
virtual void onMouseUp(CCTouch *pTouch, CCEvent *pEvent);
virtual void onMouseMove(CCTouch *pTouch, CCEvent *pEvent); void setItemPos(CXWindow* pWnd); void deaccelerateScrolling(float dt); void clippingToBounds(float dt); private:
CCNode* m_pContainer;
map<CXWindow*, deque<CXWindow*> > m_mapItem; //集装箱字典
deque<CXWindow*> m_dequeItem;
vector<CXWindow*> m_vecItem;//防止m_mapItem无序 XSrollType m_eSrollType;
float m_fItemPosLenght; //总长度 bool m_bSelected;
CCPoint m_tUnitMoveDist;
CCPoint m_tOriginalPos;
CCPoint m_tEndPos; CCPoint m_tContainerDownPos;
CCPoint m_tContainerUpPos;
CCPoint m_tContainerDragDist; unsigned int m_nTableFocusIndex;
float m_fBounds;
int m_nTableDragDistFold; //
CXWindow* m_pFocusWnd;
bool m_bFocusWndClick;
bool m_bDistributeTouch; bool m_bDisableDrag; }; #endif//__XSROLL_H__

ENGINE_API CXSroll的更多相关文章

  1. ENGINE_API CXNoTouch

    /************************************************************************/ //屏蔽消息面板 //优先级默认为 TP_BOTT ...

  2. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》

    ---------------------------------------------------------------------------------------------------- ...

  3. 《InsideUE4》-10-GamePlay架构(九)GameInstance

    一人之下,万人之上 引言 上篇我们讲到了UE在World之上,继续抽象出了Player的概念,包含了本地的ULocalPlayer和网络的UNetConnection,并以此创建出了World中的Pl ...

  4. 《InsideUE4》-8-GamePlay架构(七)GameMode和GameState

    我的世界,我做主 引言 上文我们说到在Actor层次,UE用Controller来充当APawn的逻辑控制者,也有了可以接受玩家输入的PlayerController,和能自行行动的AIControl ...

  5. 《InsideUE4》-4-GamePlay架构(三)WorldContext,GameInstance,Engine

    Tags: InsideUE4 UE4深入学习QQ群: 456247757 引言 前文提到说一个World管理多个Level,并负责它们的加载释放.那么,问题来了,一个游戏里是只有一个World吗? ...

  6. ShooterGame 学习笔记1 PlayerPawn的两个Mesh的可见性

    GameMode Override 为 ShooterGame_TeamDeathMatch GameMode中设置的Default Pawn Class 为 PlayerPawn , PlayerP ...

  7. UE4里的渲染线程

    记的上次看过UniRx里的源代码,说是参考微软的响应式编程框架,响应式编程里的一些理论不细说,只单说UniRx里的事件流里的事件压入与执行,与UE4的渲染线程设计有很多相同之处,如果有了解响应式编程相 ...

  8. [UE4GamePlay架构(九)GameInstance(转)

    GameInstance这个类可以跨关卡存在,它不会因为切换关卡或者切换游戏模式而被销毁.然而,GameMode和PlayController就会再切换关卡或者游戏模式时被引擎销毁重置,这样他们里面的 ...

  9. CWidgetMgr---cpp

    #include "WidgetMgr.h" #include "XWidget.h" #include "Config.h" #inclu ...

随机推荐

  1. 2017年USNews美国大学研究生专业排名

    2017年USNEWS美国大学研究生专业排名最佳商学院排名 排名 学校 费用 注册人数 #1 Harvard University Boston, MA $61,225 per year (full- ...

  2. mongodb,redis,memcached,mysql对比

    1.性能都比较高,性能对我们来说应该都不是瓶颈总体来讲,TPS方面redis和memcache差不多,要大于mongodb 2.操作的便利性memcache数据结构单一redis丰富一些,数据操作方面 ...

  3. django单表操作 增 删 改 查

    一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...

  4. ExtJS ComboBox 录入智能提示

    ExtJS ComboBox非常复杂,有很多的属性:其中有的属性是针对某一种特定的方案而设计的,不是所有情况下都有效.我想下拉选择能支持录入,并且录入时能智能提示,弄了半天可以了,但是只能是mode= ...

  5. Node.js:模块系统、函数

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块, ...

  6. 【python】Django设置SESSION超时时间没有生效?

    按手册和网上的方法在settings.py中设置“SESSION_COOKIE_AGE” 和 “SESSION_EXPIRE_AT_BROWSER_CLOSE” 均不生效. 通过查看django的源代 ...

  7. Yii学习笔记之二(使用gii生成一个简单的样例)

    1. 数据库准备 (1) 首先我们建一数据库 yii2test 并建立一张表例如以下: DROP TABLE IF EXISTS `posts`; CREATE TABLE `posts` ( `po ...

  8. 内存映射(Linux设备驱动程序)

    第一部分:mmap系统调用直接将设备内存映射到用户进程的地址空间里. 第二部分:跨越边界直接訪问用户空间的内存页.一些相关的驱动程序须要这样的能力,(用户空间内存怎样映射到内核中的方法get_user ...

  9. C#基础视频教程4.2 如何编写简单的计算器

    用过VB6或者早期代码的人都应该能感觉到,C#目前也没看出来有什么特别之处,所谓的面向对象也没有什么体现.所以我们需要在原有基础上重写一份代码,然后比较两种做法的优缺点.我们在项目上右击添加一个Fun ...

  10. ASP.NET找不到类型或命名空间名称怎么办

    如图所示,运行之后提示找不到类型或空间名称,右击有波浪线的代码,选择解析,using XXX   随后自动补上了程序集引用