cocos2dx 3.2 裁剪节点 ClippingNode
来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:03 点击:次
效果1:
效果2:
代码:
// //[1].背景图片 Sprite* bg = Sprite::create("HelloWorld.png"); bg->setPosition(visibleSize / 2); this->addChild(bg, -1); //[2].创建主题文字 : gameTitle Sprite* gameTitle = Sprite::create("game_title.png"); //获取尺寸大小 Size clipSize = gameTitle->getContentSize(); //[3].创建底板的发光图片 : spark Sprite* spark = Sprite::create("spark.png"); spark->setPosition(-clipSize.width, 0); //[4].创建裁剪节点 : clippingNode ClippingNode* clippingNode = ClippingNode::create(); clippingNode->setPosition(visibleSize / 2); this->addChild(clippingNode); clippingNode->setAlphaThreshold(0.05f); //设置alpha闸值 clippingNode->setContentSize(clipSize); //设置尺寸大小 clippingNode->setStencil(gameTitle); //设置模板stencil clippingNode->addChild(gameTitle, 1); //先添加标题,会完全显示出来,因为跟模板一样大小 clippingNode->addChild(spark,2); //会被裁减 //[5].左右移动spark MoveTo* moveAction = MoveTo::create(2.0f, Vec2(clipSize.width, 0)); MoveTo* moveBackAction = MoveTo::create(2.0f, Vec2(-clipSize.width, 0)); spark->runAction(RepeatForever::create(Sequence::create(moveAction, moveBackAction, NULL)));
效果3:
1.1、素材
1.2、在HelloWorld.h中添加如下变量与函数
// ClippingNode* holesClipper; //裁剪节点 Node* holesStencil; //模板节点 Node* holes; //底板节点 //触摸回调 void onTouchesBegan(const std::vector& touches, Event *unused_event); //添加小洞 void pokeHoleAtPoint(Vec2 point); //
1.3、在HelloWorld.cpp中的init()中创建裁剪节点ClippingNode
// //[1].背景图片(Layer层中) Sprite* bg = Sprite::create("HelloWorld.png"); bg->setPosition(visibleSize / 2); this->addChild(bg); //[2].创建裁剪节点 : holesClipper holesClipper = ClippingNode::create(); holesClipper->setPosition(visibleSize / 2); this->addChild(holesClipper); //属性设置 holesClipper->setInverted(true); //倒置显示,未被裁剪下来的剩余部分 holesClipper->setAlphaThreshold(0.5f); //设置alpha透明度闸值 holesClipper->runAction(RepeatForever::create(RotateBy::create(1, 45))); //旋转动作 //[3].创建模板 : holesStencil holesStencil = Node::create(); holesClipper->setStencil(holesStencil); //设置模板节点 //添加一个模板遮罩 ball holesStencil->addChild(Sprite::create("ball.png"), -1); //[4].创建底板 : holes holes = Node::create(); holesClipper->addChild(holes); //设置底板 //添加另一个底板内容 blocks Sprite* content = Sprite::create("blocks.png"); holesClipper->addChild(content, -1, "content"); //[5].触摸事件 auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); //
相关新闻>>
- cocos2dx之抽奖界面与获奖概率的设计(一)
- cocos2dx背景透明处理
- cocos2dx 3.x判断node点击区域是否透明
- cocos2d-x 3.2 之 别踩白块(第一篇)
- cocos2dx的runAction: 重复执行,多个动作连接执行,多个动作同时
- 关于cocos2dx lua中的clone函数的源码解读
- cocos2dx V3.2 mac os Xcode6.1 环境配置
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
- Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>
您可能感兴趣的文章
- Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编
- symbian UI开发小结(一)
- quick-cocos2d-x教程12:实现文本和密码输入界面
- UIViewController的retainCount(Object C)
- cocos2d-x-3.0 alpha1与C++11练习三:飞镖忍者,如何移动精灵及
- 五 手游开发神器 cocos2d-x editor 之贴图(TexturePacker)
- cocos2dx V3.2 mac os Xcode6.1 环境配置
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之
- cocos2d-x在mac下配置安卓开发环境
- Cocos2d-x3.0 文件处理