#ifndef SHOP_H
#define SHOP_H #include "XWidget.h"
#include "GameConfig.h" class CXStatic;
class CXImage;
class CXButton;
class CXTimer;
class CXCommon; #define SHOP_NOCHECKED_INIT_ID 1060
#define SHOP_CHECKED_INIT_ID 1050
#define SHOP_GOODS_NUM 6
#define SHOP_GOODS_BTN_INIT_ID 1070
#define SHOP_PRICE_FRAME 1033
#define SHOP_STA_PRICE 1040
#define SHOP_TIME 0.3
#define SHOP_STATIC_NUM 8
#define SHOP_INTRODUCTION "shop_" class CShopDialog : public CXWidget
{
public:
enum ShopDialogId
{
_IDD_ShopDialog = ,
_IDC_BtnBuy = ,
_IDC_BtnBack = ,
_IDC_ImgBoss = ,
_IDC_ImgStore = ,
_IDC_Decoration1 = ,
_IDC_Decoration2 = ,
_IDC_ImgSparFrame = ,
_IDC_ImgSectExp = ,
_IDC_StaIntroduction = ,
};
public:
CShopDialog(void);
~CShopDialog(void);
bool init();
void btnMsgCallback(CCObject* pSender);
virtual void setVisible(bool visible);
void refreshDlg();
void onTimerEnd(CCObject* obj);
private:
CXImage* m_pImgBoss;
CXImage* m_pImgStore;
CXImage* m_pImgDecoration1;
CXImage* m_pImgDecoration2;
CXImage* m_pImgChecked[SHOP_GOODS_NUM];
CXButton* m_pBtnBuy;
CXButton* m_pBtnBack;
CXStatic* m_pStaIntroduction;
CXTimer* m_pTimer;
CCNode* m_pStorePad;
int m_nCheckedIndex;
}; #endif
#include "ShopDialog.h"
#include "WidgetMgr.h"
#include "XButton.h"
#include "XImage.h"
#include "XStatic.h"
#include "XCommon.h"
#include "EncyclopediaDialog.h"
#include "GameConfig.h"
#include "GameLogic.h"
#include "hero.h"
#include "Config.h"
#include "WorldmapDialog.h"
#include "XTimer.h"
#include "XCommon.h" CShopDialog::CShopDialog(void)
{
m_pImgBoss = NULL;
m_pImgStore = NULL;
m_pBtnBuy = NULL;
m_pBtnBack = NULL;
m_pImgDecoration1 = NULL;
m_pImgDecoration2 = NULL;
m_pStorePad = NULL;
m_pTimer = NULL;
m_pStaIntroduction = NULL;
m_nCheckedIndex = ; for (int i = ; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i] = NULL;
}
} CShopDialog::~CShopDialog(void)
{
} bool CShopDialog::init()
{
CWidgetMgr::getInstance()->loadWidget(this, _IDD_ShopDialog);
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(CShopDialog::btnMsgCallback));
}
} m_pStorePad = CCNode::create();
this->addChild(m_pStorePad);
m_pStorePad->setPosition(,); CXWindow* pWnd = NULL; pWnd = this->getCtrl(_IDC_ImgSparFrame);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); pWnd = this->getCtrl(_IDC_ImgSectExp);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); pWnd = this->getCtrl(_IDC_ImgStore);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); for (int i = ; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i] = (CXImage*)this->getCtrl(SHOP_CHECKED_INIT_ID + i);
ASSERT(m_pImgChecked[i]);
m_pImgChecked[i]->setVisible(false); pWnd = this->getCtrl(SHOP_NOCHECKED_INIT_ID + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); pWnd = this->getCtrl(SHOP_CHECKED_INIT_ID + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); pWnd = this->getCtrl(SHOP_PRICE_FRAME + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); } for (int i = ; i < SHOP_STATIC_NUM; i++)
{
pWnd = this->getCtrl(SHOP_STA_PRICE + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
} pWnd = this->getCtrl(_IDC_StaIntroduction);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd); m_pStaIntroduction = (CXStatic*)this->getCtrl(_IDC_StaIntroduction);
ASSERT(m_pStaIntroduction);
m_pStaIntroduction->reorderChild(m_pStaIntroduction,); m_pImgBoss = (CXImage*)this->getCtrl(_IDC_ImgBoss);
ASSERT(m_pImgBoss);
m_pImgBoss->setVisible(false);
this->reorderChild(m_pImgBoss, ); m_pImgStore = (CXImage*)this->getCtrl(_IDC_ImgStore);
ASSERT(m_pImgStore);
m_pImgStore->setVisible(false); m_pBtnBuy = (CXButton*)this->getCtrl(_IDC_BtnBuy);
ASSERT(m_pBtnBuy);
m_pBtnBuy->setVisible(false);
this->reorderChild(m_pBtnBuy, ); m_pBtnBack = (CXButton*)this->getCtrl(_IDC_BtnBack);
ASSERT(m_pBtnBack);
m_pBtnBack->setVisible(false); m_pImgDecoration1 = (CXImage*)this->getCtrl(_IDC_Decoration1);
ASSERT(m_pImgDecoration1);
m_pImgDecoration1->setVisible(false);
this->reorderChild(m_pImgDecoration1, ); m_pImgDecoration2 = (CXImage*)this->getCtrl(_IDC_Decoration2);
ASSERT(m_pImgDecoration2);
m_pImgDecoration2->setVisible(false);
this->reorderChild(m_pImgDecoration2, ); m_pTimer = new CXTimer();
m_pTimer->init(, 0.2f);
m_pTimer->autorelease();
this->addChild(m_pTimer);
m_pTimer->setTimerEndListener(this, callfuncO_selector(CShopDialog::onTimerEnd)); this->setVisible(false);
return true;
} void CShopDialog::onTimerEnd(CCObject* obj)
{
m_pStorePad->setPosition(m_pStorePad->getPosition().x,m_pStorePad->getPosition().y - );
m_pImgBoss->setPosition(m_pImgBoss->getPosition().x + ,m_pImgBoss->getPosition().y);
m_pBtnBuy->setPosition(m_pBtnBuy->getPosition().x,m_pBtnBuy->getPosition().y + );
m_pBtnBack->setPosition(m_pBtnBack->getPosition().x,m_pBtnBack->getPosition().y - );
m_pImgDecoration1->setPosition(m_pImgDecoration1->getPosition().x,m_pImgDecoration1->getPosition().y + );
m_pImgDecoration2->setPosition(m_pImgDecoration2->getPosition().x,m_pImgDecoration2->getPosition().y + );
this->setVisible(false);
m_pStorePad->stopAllActions();
m_pImgBoss->stopAllActions();
m_pBtnBuy->stopAllActions();
m_pBtnBack->stopAllActions();
m_pImgDecoration1->stopAllActions();
m_pImgDecoration2->stopAllActions(); ((CWorldmapDialog*)CWidgetMgr::getInstance()->getWnd(CWorldmapDialog::_IDD_ChooseMenuDialog))->entrance();
} void CShopDialog::btnMsgCallback(CCObject* pSender)
{
CXButton* pButton = (CXButton*)pSender; switch(pButton->getId())
{
case _IDC_BtnBack:
{
//这里写退出特效
m_pStorePad->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pStorePad->getPosition().x,m_pStorePad->getPosition().y + )));
m_pImgBoss->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgBoss->getPosition().x - ,m_pImgBoss->getPosition().y)));
m_pBtnBuy->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pBtnBuy->getPosition().x,m_pBtnBuy->getPosition().y - )));
m_pBtnBack->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pBtnBack->getPosition().x,m_pBtnBack->getPosition().y + )));
m_pImgDecoration1->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgDecoration1->getPosition().x,m_pImgDecoration1->getPosition().y - )));
m_pImgDecoration2->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgDecoration2->getPosition().x,m_pImgDecoration2->getPosition().y - )));
if (m_pTimer)
{
m_pTimer->setCount();
m_pTimer->start();
}
}
break;
default:
break;
} if (pButton->getId() >= SHOP_GOODS_BTN_INIT_ID && pButton->getId() < SHOP_GOODS_BTN_INIT_ID + SHOP_GOODS_NUM)
{
m_nCheckedIndex = pButton->getId() - SHOP_GOODS_BTN_INIT_ID;
} if (this->isVisible())
{
this->refreshDlg();
}
} void CShopDialog::setVisible(bool visible)
{
CXWidget::setVisible(visible);
if (visible)
{
//这里做效果
CCPoint tPos = m_pStorePad->getPosition();
m_pStorePad->setPosition(m_pStorePad->getPosition().x ,m_pStorePad->getPosition().y + CConfig::getInstance()->getNumberByKey("shop_store_startpos_y"));
m_pImgStore->setVisible(true);
m_pStorePad->runAction(CCSequence::create(
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss01_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss02_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss03_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss04_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y)),NULL)); tPos = m_pImgBoss->getPosition();
m_pImgBoss->setPosition(m_pImgBoss->getPosition().x - CConfig::getInstance()->getNumberByKey("shop_screen_width"), m_pImgBoss->getPosition().y);
m_pImgBoss->setVisible(true);
m_pImgBoss->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_boss_movetime"),tPos)); CCActionInterval* pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_boss_floattime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_boss_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_boss_moveby_y")));
CCActionInterval* pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgBoss->runAction(pReFloat); tPos = m_pBtnBuy->getPosition();
m_pBtnBuy->setPosition(m_pBtnBuy->getPosition().x,
m_pBtnBuy->getPosition().y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pBtnBuy->setVisible(true);
m_pBtnBuy->runAction(CCMoveTo::create(
CConfig::getInstance()->getNumberByKey("shop_btnbuy_time"),tPos)); tPos = m_pBtnBack->getPosition();
m_pBtnBack->setPosition(m_pBtnBack->getPosition().x , m_pBtnBack->getPosition().y + );
m_pBtnBack->setVisible(true);
m_pBtnBack->runAction(CCMoveTo::create(
CConfig::getInstance()->getNumberByKey("shop_btnback_time"),tPos)); pFloatUp = CCMoveBy::create(
CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_time"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pBtnBack->runAction(pReFloat); tPos = m_pImgDecoration1->getPosition();
m_pImgDecoration1->setPosition(tPos.x,tPos.y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pImgDecoration1->setVisible(true);
m_pImgDecoration1->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_decoration1_movetime"),tPos));
pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_decoration1_floatime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_decoration1_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_decoration1_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgDecoration1->runAction(pReFloat); tPos = m_pImgDecoration2->getPosition();
m_pImgDecoration2->setPosition(tPos.x,tPos.y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pImgDecoration2->setVisible(true);
m_pImgDecoration2->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_decoration2_movetime"),tPos));
m_pImgDecoration2->setVisible(true);
pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_decoration2_floatime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_decoration2_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_decoration2_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgDecoration2->runAction(pReFloat); m_nCheckedIndex = ;
this->refreshDlg();
}
} void CShopDialog::refreshDlg()
{
for (int i = ; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i]->setVisible(false);
}
m_pImgChecked[m_nCheckedIndex]->setVisible(true);
m_pStaIntroduction->setText(CConfig::getInstance()->getWordBykey((string(SHOP_INTRODUCTION) + CXCommon::toString(m_nCheckedIndex)).c_str()).c_str());
}

CShopDialog类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  9. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

随机推荐

  1. C#编程兵书

    <C#编程兵书> 基本信息 作者: 张志强 胡君 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207402 上架时间:2013-8-26 出版日期:2013 年 ...

  2. 视频运行库AVICAP32.DLL说明收藏

    视频运行库AVICAP32.DLL说明收藏2008-09-28 09:04 // ----------------------------------------------------------- ...

  3. 数学图形(2.19) 利萨茹3D曲线

    在前面的章节数学图形(1.13) 利萨茹曲线中,写的是二维的利萨茹曲线,这一节,将其变为3D图形. #http://www.mathcurve.com/courbes3d/lissajous3d/li ...

  4. json 数组操作

    用js有很久了,但都没有深究过js的数组形式.这段时间做的一个项目,用到数组的地方很多,自以为js还可以的自己居然无从下手,一下狠心,我学!呵呵. 1.数组的创建 var arrayObj = new ...

  5. JAVA反射使用手记

    本篇文章为在工作中使用JAVA反射的经验总结,也可以说是一些小技巧,以后学会新的小技巧,会不断更新.本文不准备讨论JAVA反射的机制,网上有很多,大家随便google一下就可以了. 在开始之前,我先定 ...

  6. Linux 查看当前时间和修改系统时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令: date -R 2. 修改设置Linux服务器时区 方法 A 命令 : tzselect 方法 B 仅限于RedHat Linux 和 Ce ...

  7. windows10 phantomjs 安装和使用

    1.下载phantomjs和 Casper phantomjs下载地址:http://phantomjs.org/download.html Casper下载地址:http://casperjs.or ...

  8. RHEL7.0 配置网络IP的三种方法

    导读 RHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式. en代表的是enthernet (以太网),o 代表的是onboard (内置),那一串数字是主板的某种索引编 ...

  9. SSH免密码登陆以及穿越跳板机

    1. 免密码直连  [user@hostA ~] $ssh hostB STEP1. 在hostA上生成RSA公钥私钥(在~/.ssh/下生成RSA私钥id_rsa,公钥id_rsa.pub) [us ...

  10. (转)AS3 中,Function.apply、call中第一个参数的作用;与什么时候用

    http://blog.csdn.net/linjf520/article/details/8746064 大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值 ...