cocos2d-X之蒙板,局部高亮可点,CCRenderTexture

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 05:40 点击:

蒙板,局部高亮可点的用处大多是在新手引导的时候,引导玩家一步一步的走游戏的操作流程。

之前写了一个cocos2d-iphone的版本,因为设置成圆角的,比较美观,如果不用圆角,可以直接把Sprite改成layercolor,这个版本的缺点是每步都需要美术出一个资源(如果每步的点击区域大小不一样的话),现在这个版本是直接设置大小即可。


这个版本的设计思路是,用layercolor,先把高亮的区域设置好了,然后在layercolor的四个角加上一个小圆角的sprite,这样就不用每步都需要美术出资源了。可以随意的设置高亮区域的大小。本来想直接不用sprite,直接找个方法设置layercolor的圆角的,没找到合适的方法,如果大家有比较合适的更简便的方法,欢迎拍砖。

 

原理是:渲染的时候,使用异步混合渲染。ccBlendFunc


不多说,直接上代码

为了获取点击事件,所以继承了 CCTargetedTouchDelegate,把touch的权限设置为最高。

//.h  


[cpp] 
#ifndef Good_PlayGuide_h 
#define Good_PlayGuide_h 
 
#include "cocos2d.h" 
 
using namespace cocos2d; 
 
class PlayerGuide:public CCSprite , public CCTargetedTouchDelegate 

public: 
    PlayerGuide(); 
    virtual ~PlayerGuide(); 
     
    virtual bool init(); 
    virtual void onEnter(); 
    virtual void onExit(); 
     
    virtual bool ccTouchBegan(CCTouch *touch, CCEvent *event); 
    virtual void ccTouchMoved(CCTouch *touch, CCEvent *event); 
    virtual void ccTouchEnded(CCTouch *touch, CCEvent *event); 
     
    void onSetSpriteAndPosition(float width,float height,CCPoint point); 
    CCLayerColor *m_layer; // color layer 
    float m_layerWidth; //layer width  
    float m_layerHeight; // layer height  
    CCRenderTexture *m_pTarget; // render texture  
}; 
#endif 


[cpp] 
#include <iostream> 
#include "PlayerGuide.h" 
 
 
PlayerGuide::PlayerGuide() 

    m_layerWidth = 0.0f; 
    m_layerHeight = 0.0f; 

 
PlayerGuide::~PlayerGuide() 

    

 
bool PlayerGuide::init() 

    if (!CCSprite::init()) { 
        return false; 
    } 
     
    return true; 

 
void PlayerGuide::onEnter() 

    //since v2.0 
//    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -201, true); 
//当进入这个对象时,设置touch事件的响应权限,menu的响应级别是-128,我们要获取比这个要高的权限,(设置的数值越低,权限越高) 
    CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, -201, true); 
    CCSprite::onEnter(); 

 
void PlayerGuide::onExit() 

    //since v2.0 
//    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this); 
//退出时,把touch响应的事件 移除 
    CCTouchDispatcher::sharedDispatcher()->removeDelegate(this); 
    CCSprite::onExit(); 

#pragma mark  --------------------------setSpriteAndPosition---------------------------- 
 
/*******

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • cocos2d-x学习笔记(19)--label 、label atlas
      • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
      • Cocos2d-x学习(一):HelloWorld
      • cocos2dx在xcode下开发,编译到android上(2)
      • cocos2d 设置屏幕默认方向
      • Cocos2d-x 2.0 之 Actions “三板斧” 之一
      • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
      • cocos2d-x学习笔记(18)--游戏打包(windows平台)
      • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1