Cocos2d-x特效:场景切换效果、控件动作、逐帧动画
发布时间:2020-12-14 19:41:32 所属栏目:百科 来源:网络整理
导读:第三阶段:常用功能2 1.Cocos2d-x场景切换 Size visibleSize = Director::getInstance()-getVisibleSize(); Sprite *bg = Sprite::create( "bg.jpg" ); bg-setPosition(visibleSize.width/ 2 ,visibleSize.height/ 2 ); addChild(bg); LabelTTF *label = Lab
第三阶段:常用功能2
1.Cocos2d-x场景切换
Size visibleSize = Director::getInstance()->getVisibleSize();
Sprite *bg = Sprite::create( "bg.jpg" ); bg->setPosition(visibleSize.width/ 2 ,visibleSize.height/ 2 ); addChild(bg); LabelTTF *label = LabelTTF::create( "Show Next Scene" , "Courier" , 36 ); addChild(label); label->setPosition(visibleSize.width/ 2 ); EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [label, this ](Touch* t,Event *e){ if (label->getBoundingBox().containsPoint(t->getLocation())) { Director::getInstance()->replaceScene(TransitionFadeBL::create( 1 ,ImageScene::createScene())); } return false ; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,label);
return true;
在ImageScene.h中
#include
<iostream>
#include <cocos2d.h>
USING_NS_CC;
class
ImageScene:
public
Layer {
public
:
static Scene* createScene();
virtual
bool
init();
CREATE_FUNC(ImageScene); };
在ImageScene.cpp中
"ImageScene.h"
Scene* ImageScene::createScene(){
Scene* scene = Scene::create();
ImageScene * layer = ImageScene::create();
scene->addChild(layer);
return
scene;
}
bool
ImageScene
::init(){
Size size = Director::getInstance()->getVisibleSize();
Sprite *s = Sprite::create( "HelloWorld.png" ); s->setPosition(size.width/ 2 );
addChild(s);
true
;
}
2.Cocos2d-x场景切换效果
Director::getInstance()->replaceScene(TransitionFadeBL::create(
1
,ImageScene::createScene()));
cocos2d Scene场景转换
3.Cocos2d-x动作
instant
/'?nst(?)nt/
片刻,顷刻,刹那/
立即的
Size visibleSize = Director::getInstance()->getVisibleSize();
auto label = LabelTTF::create( "jikexueyuan" ,216)">30 ); label->setPosition(visibleSize.width/ 2 ); addChild(label); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [label](Touch *t,162)">if (label->getBoundingBox().containsPoint(t->getLocation())) { // label->runAction(MoveTo::create(1,Point(100,100))); // label->runAction(MoveBy::create(1,Point(-50,-50))->reverse()); // label->runAction(Spawn::create(MoveBy::create(1,100)),RotateBy::create(1,360),NULL)); // label->runAction(Sequence::create(MoveBy::create(1,NULL)); label->runAction(Sequence::create( MoveBy::create( 100 ,216)">100 )), RotateBy::create( 360 ), CallFunc::create([](){ MessageBox( "Action complete" ,27)">"complete" ); }),162)">NULL )); } false ; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,label);
// label->runAction(Repeat::create(RotateBy::create(1,180),3));
// label->runAction(RepeatForever::create(RotateBy::create(1,180)))
true ;
4.Cocos2d-x动作反转
label->runAction(MoveBy::create(1,-50))->reverse());
5.Cocos2d-x动作重复
6.Cocos2d-x动作混合
同时执行:
8.Cocos2d-x动作侦听
RotateBy之后执行
CallFunc:
label->runAction(Sequence::create(
MoveBy::create( "complete" );
}),NULL));
9.Cocos2d-x动画
auto
cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile( "anim.plist" ); Vector<SpriteFrame*> vec; char name[ 15 ]; memset(name,216)">0 ,216)">15 ); for ( int i= 0 ; i< 20 ; i++) { sprintf(name,27)">"anim%04d" ,i); vec.pushBack(cache->getSpriteFrameByName(name));
}
//每秒十帧
Animation *animation = Animation::createWithSpriteFrames(vec,216)">0.1f
);
Animate *animate = Animate::create(animation); auto sprite = Sprite::create(); addChild(sprite); sprite->setPosition( 200 ,216)">200 );
sprite->runAction(RepeatForever::create(animate));
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在C中实现Unix shell:检查文件是否可执行
- ruby-on-rails – 使用Rails 4时,_destroy无法在Coocon gem
- iphone – 音频会话属性侦听器在UIImagePickerController中
- c# – stackoverflow搜索api
- swift – 列出一个类的所有子类
- Ajax响应中文乱码 [SpringMVC使用@ResponseBody处理Ajax请求
- postgresql – 无法在Postgres中使用交叉表
- ruby-on-rails – 如何将环境变量传递给从另一个Rake任务调
- C嵌套的命名空间定义,以::开头
- PostgreSQL数据库中 获取表字段为空值查询语句