CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); //第一个参数是颜色ccc4(r,g,b,a) a取值(0~255),越大越不透明 下面两个参数为宽高,不传默认为屏幕大小 CCLayerColor* pLayer=CCLayerColor::create(ccc4(0,0,0,200),visibleSize.width,visibleSize.height); //CCLayerColor* pLayer=CCLayerColor::create(ccc4(0,0,0,200)); addChild(pLayer,100);
//创建cliper对象 CCClippingNode* pClip=CCClippingNode::create(); addChild(pClip); //加入灰色的底板 CCLayerColor* pColor=CCLayerColor::create(ccc4(0,0,0,200)); pClip->addChild(pColor);
//创建drawnode对象
CCDrawNode *m_pAA=CCDrawNode::create();
static ccColor4F green = {0, 1, 0, 1};
static CCPoint rect[4]={ccp(-50,50),ccp(50,50),ccp(50,-50),ccp(-50,-50)};
//用上面的数据保存一个100x100的矩形
m_pAA->drawPolygon(rect, 4, green, 0, green);
//设置到屏幕的中心
m_pAA->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//设置为pclip的模板
pClip->setStencil(m_pAA);
//是否反向? pClip->setInverted(true);
//创建cliper
CCClippingNode* pClip=CCClippingNode::create();
pClip->setInverted(true);
addChild(pClip);
//添加底板
CCLayerColor* pColor=CCLayerColor::create(ccc4(0,0,0,200));
pClip->addChild(pColor);
//绘制圆形区域
static ccColor4F green = {0, 1, 0, 1};//顶点颜色,这里我们没有实质上没有绘制,所以看不出颜色
float fRadius=55.0f;//圆的半径
const int nCount=100;//圆形其实可以看做正多边形,我们这里用正100边型来模拟园
const float coef = 2.0f * (float)M_PI/nCount;//计算每两个相邻顶点与中心的夹角
static CCPoint circle[nCount];//顶点数组
for(unsigned int i = 0;i <nCount; i++) {
float rads = i*coef;//弧度
circle[i].x = fRadius * cosf(rads);//对应顶点的x
circle[i].y = fRadius * sinf(rads);//对应顶点的y
}
CCDrawNode *pStencil=CCDrawNode::create();
pStencil->drawPolygon(circle, nCount, green, 0, green);//绘制这个多边形!
//动起来
pStencil->runAction(CCRepeatForever::create(CCSequence::createWithTwoActions(CCScaleBy::create(0.05f, 0.95f),
CCScaleTo::create(0.125f, 1))));
pStencil->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//设这模板
pClip->setStencil(pStencil);
//添加圆和手的图片
CCSprite*pCircle=CCSprite::create("circle.png");
pCircle->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
pCircle->runAction(CCRepeatForever::create(CCSequence::createWithTwoActions(CCScaleBy::create(0.05f, 0.95f),
CCScaleTo::create(0.125f, 1))));
addChild(pCircle);
CCSprite* pHand=CCSprite::create("hand.png");
pHand->setAnchorPoint(ccp(0.0f,1.0f));
pHand->setPosition(ccp(pCircle->getContentSize().width/2,pCircle->getContentSize().height/2));
pCircle->addChild(pHand);
bool CTeachLayer::init()
{
if (!CCLayer::init())
{
return false;
}
setTouchEnabled(true);
return true;
}
void CTeachLayer::registerWithTouchDispatcher()
{
//使用-128和CCMenu优先级相同,并且吞掉事件true//
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -128, true);
CCLayer::registerWithTouchDispatcher();
}
bool CTeachLayer::ccTouchBegan( CCTouch* pTouch, CCEvent* pEvent )
{
//得到触摸位置
CCPoint touchPoint = pTouch->getLocation();
//声明一个右下角100x50的矩形
CCRect m_obRect=CCRectMake(
CCDirector::sharedDirector()->getVisibleSize().width-100,
CCDirector::sharedDirector()->getVisibleSize().height-50,
100,
50);
//判断点是否在矩形中
if (m_obRect.containsPoint(touchPoint))
{
return false;
}
return true;
}
bool CTeachLayer::ccTouchBegan( CCTouch* pTouch, CCEvent* pEvent )
{
CCPoint touchPoint = pTouch->getLocation();
if (!CGlobal::s_bTeach)
{
return false;
}
//假设按钮在(300,200)的位置,那么蓝色矩形如下:
CCRect m_obRect=CCRectMake(
250,
150,
100,
100);
if (m_obRect.containsPoint(touchPoint))
{
//得到蓝色矩形的中心点(300,200)
CCPoint pos=ccp(m_obRect.getMidX(),m_obRect.getMidY());
//这里要转化为UI坐标系(左上角为0,0点)
pos=CCDirector::sharedDirector()->convertToUI(pos);
//设置触摸信息
pTouch->setTouchInfo(pTouch->getID(),pos.x,pos.y);
return false;
}
return true;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有