CSectsInfomation.cpp文件
#include "SectsInfomation.h"
#include "WidgetMgr.h"
#include "XButton.h"
#include "XSroll.h"
#include "Config.h"
#include "XCommon.h"
#include "XStatic.h"
#include "XImage.h" #if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "GameCenter.h"
#include "AppExtra.h"
#endif
/*******************************
*函数名称:CSectsInfomation
*函数功能:构造函数
*函数参数:void
*函数返回值:void
*备注:
*******************************/
CSectsInfomation::CSectsInfomation(void)
{
m_pBtnExit = NULL;
m_pSta = NULL;
m_PageNum = ;
m_FirstId = ;
m_PageTotal = ;
CCLabelTTF *pLabel = NULL;
memset(acPage,,);
} CSectsInfomation::~CSectsInfomation(void)
{
}
/*******************************
*函数名称:init
*函数功能:初始化函数
*函数参数:void
*函数返回值:true--初始化成功;false--初始化失败
*备注:
*******************************/
bool CSectsInfomation::init()
{
bool bRet = false; CWidgetMgr::getInstance()->loadWidget(this, _IDD_CSectsInfomation);
CWidgetMgr::getInstance()->addWnd(this); for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
//给按钮添加响应函数
if (UI_BUTTON == (*it)->getUIType())
{
(*it)->setClickListener(this, callfuncO_selector(CSectsInfomation::btnMsgCallback));
}
//通过id中的第三位映射到相应的图片,每个按钮的id都加上200就是对应要显示的图片
int iNum = (*it)->getId();
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
m_vecImage.push_back(*it);
}
//显示第一页
iNum = (*it)->getId();
iNum = (*it)->getId() / ;
if (iNum != )
{
(*it)->setVisible(false);
}
//保存最大页码
if (iNum > m_PageTotal)
{
m_PageTotal = iNum;
}
//第一张任务图片要显示
if ((*it)->getId() == )
{
(*it)->setVisible(true);
}
}
//显示页码
m_pSta = (CXStatic*)(this->getCtrl());
char acTemp[] = {};
strcpy(acPage,"1/");
itoa(m_PageTotal,acTemp,);
strcat(acPage,acTemp);
pLabel = CCLabelTTF::create(acPage,"Gautami",);
m_pSta->setLabel(pLabel);
m_pSta->setPosition(,);
m_pSta->setVisible(true);
//选中框的图片
m_pImg = (CXImage*)(this->getCtrl());
this->setVisible(false);
return true;
} /*******************************
*函数名称:btnMsgCallback
*函数功能:按钮的响应函数
*函数参数:CCObject* pSender--这里传进来的是this指针
*函数返回值:void
*备注:这里处理四种情况:
1.上一页
2.下一页
3.返回
4.点击任务列表中某项的响应
这里不做页面循环,当到最后一页时取消下一页按钮的响应
当到了第一页时取消上一页按钮的响应
*******************************/
void CSectsInfomation::btnMsgCallback(CCObject* pSender)
{
int iAddNum = ;
CXImage *pImage = NULL;
CXButton *pButton = (CXButton*)pSender;
if (pButton->getId() == )
{
this->setVisible(false);
}
else if (pButton->getId() == )
{
m_PageNum = m_PageNum - ; if ( > m_PageNum)
{
m_PageNum = ;
}
else
{
//上一页
for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
int iNum = ;
iNum = (*it)->getId() / ;
if (iNum != m_PageNum)
{
(*it)->setVisible(true);
}
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
}
if ((*it)->getId() == m_PageNum * + )
{ CCPoint point = (*it)->getPosition();
m_pImg->setPosition(point.x ,point.y);
}
int num = m_PageNum * + + ;
if ((*it)->getId() == num)
{
(*it)->setVisible(true);
}
}
memset(acPage,,);
char acTotal[] = {};
char acTemp[] = {};
itoa(m_PageNum,acTemp,);
itoa(m_PageTotal,acTotal,);
strcpy(acPage,acTemp);
strcat(acPage,"/");
strcat(acPage,acTotal);
pLabel->setString(acPage);
} }
else if (pButton->getId() == )
{
m_PageNum = m_PageNum + ; if (m_PageTotal < m_PageNum)
{
m_PageNum = m_PageTotal;
}
else
{
//下一页
for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
int iNum = ;
iNum = (*it)->getId() / ;
if (iNum != m_PageNum)
{
(*it)->setVisible(true);
}
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
}
if ((*it)->getId() == m_PageNum * + )
{
CCPoint point = (*it)->getPosition();
m_pImg->setPosition(point.x ,point.y);
}
int num = m_PageNum * + + ;
if ((*it)->getId() == num)
{
(*it)->setVisible(true);
}
}
memset(acPage,,);
char acTotal[] = {};
char acTemp[] = {};
itoa(m_PageNum,acTemp,);
itoa(m_PageTotal,acTotal,);
strcpy(acPage,acTemp);
strcat(acPage,"/");
strcat(acPage,acTotal);
pLabel->setString(acPage);
} }
else
{
//获取当前选中按钮所在的坐标,然后通过这个坐标,边框显示在相应位置
CCPoint point = pButton->getPosition();
m_pImg->setPosition(point.x ,point.y); SectsNotVisible(); //通过id获取图片控件的指针
pImage = (CXImage*)(this->getCtrl(pButton->getId() + ));
pImage->setVisible(true);
}
} void CSectsInfomation::btnMsgSrollCallback(CCObject* pSender)
{ }
/*******************************
*函数名称:SectsNotVisible
*函数功能:屏蔽所有任务图片控件
*函数参数:void
*函数返回值:void
*备注:
*******************************/
void CSectsInfomation::SectsNotVisible()
{
for (deque<CXWindow*>::const_iterator it = m_vecImage.begin(); it != m_vecImage.end(); it++)
{
(*it)->setVisible(false);
}
}
CSectsInfomation.cpp文件的更多相关文章
- atom 调用g++编译cpp文件
atom 有script插件可以直接调用很多编译器,试了很多次一直出问题找不到文件,查了文档之后发现script只支持OSX和linux. 所以,还是使用gpp-compiler比较靠谱 gpp-co ...
- C++链接两个cpp 文件
我们在编程中,有没有想过,分别写代码,然后把两个cpp,文件合并,两个自身本不能运行的文件,在一起却可以运行(主要牵扯函数调用,一个有声明和调用,另一个定义).那么具体如何实现呢? 跟着我的步骤: 1 ...
- ios工程中加入.c/.cpp文件
如果你在工程里拉入.c/.cpp文件就会导致工程报错, 现在有两种解决方式 1. 把.c文件的后缀全部改成.m的后缀 把.cpp文件的后缀改成.mm的后缀 2. 使用 工程名-Prefix.pch 并 ...
- C中头文件在cpp文件中引用和.h文件引用
1.编译器会单独编译每个cpp文件.头文件会复制到cpp文件中. 2.有时会遇到这样的一个问题a.cpp要调用b.cpp中的函数,而b.cpp又要调用a.cpp中的函数.这就牵扯到相互调用.这时如果我 ...
- [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...
- C++学了这么多年,你也许不知道为什么类定义要放在.h文件,类实现放在cpp文件。它们如何关联?
原文 http://blog.csdn.net/ithzhang/article/details/8119286 主题 C++ C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类 ...
- QT-- MainWindow外的cpp文件调用ui
这几天在学习QT,想写一个类似VIM的小软件,刚开始不注重代码结构,全部实现都写在MainWindow文件中,导致MianWindow文件十分的长而且很难去阅读,就想着把函数按照功能分到不同的cpp文 ...
- WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测
近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. ...
- 一个简单的makefile,一次性编译本文件夹下所有的cpp文件
代码: CXX := g++ CFLAGS := -g TARGET := xxx.exe SRCS := $(wildcard *.cpp) OBJS := $(patsubst %cpp,%o,$ ...
随机推荐
- linux有用技巧:使用ntfs-3g挂载ntfs设备
1.几种文件系统的比較 (1)在linux系统中支持一下文件系统: Ext2 第二扩展文件系统(简称 ext2 或者 ext2) 非常多年前就已经成为 GN ...
- iOS:沙盒、偏好设置、归档、解归档
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...
- C#中 父类与子类相互强制转换之实验
MSDN是很好,不过,有时需要自己动手实践一下,才能更好的理解和记住一些东西. 我看过很多技术文章,结果到用时,仍然是下不了手.似是而非的. 像上次写的“四舍六入五成双/四舍六入五留双/四舍六入五单双 ...
- 转:RSA算法原理说明
转:http://www.joenchen.com/archives/979 RSA算法可以说在我们使用计算机的每一方面都在发挥着作用, EXE文件的签名算法用的是SHA1 + RSA. 我们每天登陆 ...
- Trie树统计单词前缀
输入 输入的第一行为一个正整数n.表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦).单词由不超过10个的小写英文字母组成,可能存在同样的单词.此时应将其视作不同的单 ...
- CLS(公共语言规范)的CLSCompliant(跨语言调用)
.net的一个很重要的特性就是跨语言的编程,用C#写的dll可以在VB.net里调用,例如:用C#写的一个类,编译到dll中,然后在VB.net中调用: using System;namespace ...
- 使用Loader实时查询本地数据库用法
在看Android的文档时,看到了这么一个东西: Loader 究竟是什么东西呢? Introduced in Android 3.0, loaders make it easy to asynchr ...
- 时间记录APP———Time Meter
关注过时间管理的人可能都听过大名鼎鼎的柳比歇夫的时间记录法,在几年前,大多人都推荐纸笔的记录方法,但是纸笔总是会忘,越来越智能的手机可是总不会忘得,所以我始终在寻找一款手机端好用的APP. 不管是时间 ...
- synchronized探究
synchronized的加锁方式 synchronized的本质是给对象上锁,对象包括实例对象,也包括类对象.常见的加锁方式有下面几种写法:(1)在非static方法上加synchronized,例 ...
- Android Studio优秀插件汇总