别猜白块滑动效果实现
2016-07-28 11:48
204 查看
<1>成员变量。
[cpp] view
plain copy
private:
UIPanel* panel1;
UIPanel* panel2;
void update(float dt);
float getSpeed(float dt);
<2>滚动实现。
[cpp] view
plain copy
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
UILayer* _uiLayer = UILayer::create();
UIPanel* _uiPanel = dynamic_cast<UIPanel*>(GUIReader::shareReader()->widgetFromJsonFile("Scene/BieCaiBaiKuai/BieCaiBaiKuai.json"));
_uiLayer->addWidget(_uiPanel);
addChild(_uiLayer);
//
panel1 = dynamic_cast<UIPanel*>(_uiPanel->getChildByName("bgPanel"));
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
panel2 = dynamic_cast<UIPanel*>(panel1->clone());
panel2->setPosition(ccp(0.0f, winSize.height));
addChild(panel2); //别忘了添加了,panel1在加载时已经添加里面了。但是panel2不会。
//
this->scheduleUpdate();
return true;
}
void HelloWorld::update(float dt)
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
//*/
panel1->setPositionY(panel1->getPositionY() - getSpeed(dt));
panel2->setPositionY(panel1->getPositionY() + winSize.height);
if(panel1->getPositionY() < -winSize.height)
{
panel1->setPositionY(0.0f);
}
//*/
}
float HelloWorld::getSpeed(float dt)
{
static float time = 0.0f;
time += dt;
if(time <= 2.0f)
return 2.0f;
else if(time <= 4.0f)
return 10.0f;
else if(time <= 6.0f)
return 20.0f;
else if(time <= 8.0f)
return 30.0f;
else if(time <= 10.0f)
{
time = 0.0f;
return 40.0f;
}
}
<3>效果截图。
[cpp] view
plain copy
private:
UIPanel* panel1;
UIPanel* panel2;
void update(float dt);
float getSpeed(float dt);
<2>滚动实现。
[cpp] view
plain copy
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
UILayer* _uiLayer = UILayer::create();
UIPanel* _uiPanel = dynamic_cast<UIPanel*>(GUIReader::shareReader()->widgetFromJsonFile("Scene/BieCaiBaiKuai/BieCaiBaiKuai.json"));
_uiLayer->addWidget(_uiPanel);
addChild(_uiLayer);
//
panel1 = dynamic_cast<UIPanel*>(_uiPanel->getChildByName("bgPanel"));
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
panel2 = dynamic_cast<UIPanel*>(panel1->clone());
panel2->setPosition(ccp(0.0f, winSize.height));
addChild(panel2); //别忘了添加了,panel1在加载时已经添加里面了。但是panel2不会。
//
this->scheduleUpdate();
return true;
}
void HelloWorld::update(float dt)
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
//*/
panel1->setPositionY(panel1->getPositionY() - getSpeed(dt));
panel2->setPositionY(panel1->getPositionY() + winSize.height);
if(panel1->getPositionY() < -winSize.height)
{
panel1->setPositionY(0.0f);
}
//*/
}
float HelloWorld::getSpeed(float dt)
{
static float time = 0.0f;
time += dt;
if(time <= 2.0f)
return 2.0f;
else if(time <= 4.0f)
return 10.0f;
else if(time <= 6.0f)
return 20.0f;
else if(time <= 8.0f)
return 30.0f;
else if(time <= 10.0f)
{
time = 0.0f;
return 40.0f;
}
}
<3>效果截图。
相关文章推荐
- Studio中的项目接入百度地图sdk后,地图不能正常显示及出现 errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败 问题的解决方法
- 谈 UIView Animation 编程艺术
- CSS学习笔记--基础(一)
- 关于mysql的join(图)
- 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】
- APP测试要点
- 【OpenJudge】c语言_计算2的幂
- 80个Python经典资料(教程+源码+工具)汇总
- mysql 的一些基本操作
- codevs1922(二分图最大独立集)
- 我是如何在GitHub上开源一个项目的(截图说明) (VS2010可以安装git插件)
- USB有时adb shell连不上设备
- 一个很好的python学习地址
- node.js项目中的package.json
- python中函数的定义意思
- 8. String to Integer (atoi) [easy] (Python)
- 从Hadoop到Spark的架构实践
- USB有时adb shell连不上设备
- Windows 下安装 Oracle 12c 教程
- gdb调试