cocos2d0基础知识三个音符
2015-09-22 09:29
459 查看
1.触摸屏事件:
bool HelloWorld::init()
{
//省略的代码的最后位
this->schedule(schedule_selector(HelloWorld::usecreatesprite),2);//定时器
this->setTouchEnabled(true);/CCLayer是能够对应点击对象的,默认情况是没开启的,我们通过this->setTouchEnabled(true)来设置是否接受触摸事件。
return true;
}
void HelloWorld::ccTouchesEnded(CCSet*pTouches,CCEvent*pEvent){ //点击事件所响应的函数
CCSize visiblesize=CCDirector::sharedDirector()->getVisibleSize();
CCTouch*touch=(CCTouch*)pTouches->anyObject(); //因为响应函数传过来时一个集合,我们要从中先取出一个点
CCPoint locatpoint=touch->getLocationInView(); //获取单机坐标基于2D,是以左上角为原点。
CCPoint loc=CCDirector::sharedDirector()->convertToGL(locatpoint); //获取单机坐标,基础Cocos2d
//计算发射目标的终于坐标算法(利用精灵坐标(20,visiblesize.height/2),点击坐标(loc.x,loc.y),和发射精灵可经过的最大路程也就是窗体的对角线长度D,然后用相似三角形原理求出发射精灵的终于坐标(endx,endy))
double x=loc.x-20;
double y=loc.y-visiblesize.height/2;
double d=sqrt(x*x+y*y);
double D=sqrt(visiblesize.width*visiblesize.width+visiblesize.height*visiblesize.height);
double ratio=d/D;
double endx=x/ratio+20;
double endy=y/ratio+visiblesize.height/2;
//创建发射精灵
CCSprite* fire=CCSprite::create("1.png");
fire->setPosition(ccp(20,visiblesize.height/2));
this->addChild(fire);
//创建发射精灵动作
CCMoveTo*move=CCMoveTo::create(1.0f,ccp(endx,endy));
CCCallFuncN*disappear=CCCallFuncN::create(this,callfuncN_selector(HelloWorld::selfdefine));
CCSequence*action=CCSequence::create(move,disappear,NULL);
fire->runAction(action)
}
效果图:
bool HelloWorld::init()
{
//省略的代码的最后位
this->schedule(schedule_selector(HelloWorld::usecreatesprite),2);//定时器
this->setTouchEnabled(true);/CCLayer是能够对应点击对象的,默认情况是没开启的,我们通过this->setTouchEnabled(true)来设置是否接受触摸事件。
return true;
}
void HelloWorld::ccTouchesEnded(CCSet*pTouches,CCEvent*pEvent){ //点击事件所响应的函数
CCSize visiblesize=CCDirector::sharedDirector()->getVisibleSize();
CCTouch*touch=(CCTouch*)pTouches->anyObject(); //因为响应函数传过来时一个集合,我们要从中先取出一个点
CCPoint locatpoint=touch->getLocationInView(); //获取单机坐标基于2D,是以左上角为原点。
CCPoint loc=CCDirector::sharedDirector()->convertToGL(locatpoint); //获取单机坐标,基础Cocos2d
//计算发射目标的终于坐标算法(利用精灵坐标(20,visiblesize.height/2),点击坐标(loc.x,loc.y),和发射精灵可经过的最大路程也就是窗体的对角线长度D,然后用相似三角形原理求出发射精灵的终于坐标(endx,endy))
double x=loc.x-20;
double y=loc.y-visiblesize.height/2;
double d=sqrt(x*x+y*y);
double D=sqrt(visiblesize.width*visiblesize.width+visiblesize.height*visiblesize.height);
double ratio=d/D;
double endx=x/ratio+20;
double endy=y/ratio+visiblesize.height/2;
//创建发射精灵
CCSprite* fire=CCSprite::create("1.png");
fire->setPosition(ccp(20,visiblesize.height/2));
this->addChild(fire);
//创建发射精灵动作
CCMoveTo*move=CCMoveTo::create(1.0f,ccp(endx,endy));
CCCallFuncN*disappear=CCCallFuncN::create(this,callfuncN_selector(HelloWorld::selfdefine));
CCSequence*action=CCSequence::create(move,disappear,NULL);
fire->runAction(action)
}
效果图:
相关文章推荐
- cocos动画
- Quick-cocos2d-x3.3 Study (二十)--------- 音乐音效
- Quick-cocos2d-x3.3 Study (十六)--------- 碰撞检测,事件监听,设置掩码
- cocos2d-x在Android.mk中自动添加Cpp
- [寒江孤叶丶的Cocos2d-x之旅_39]Cocos骨骼动画功能解密
- cocos2d-x 3.2 2048——第六部分(最后一章)
- Cocos3.8创建新工程,添加库工程
- cocos2dx 2.2 之触摸事件
- cocos2d-x3.0 windows 环境配置
- [cocos2dx注意事项009]试用quick-cocos2dx-2.2.4
- Cocos Studio study ---------- 使用CocosStudio1.6制作 界面,并结合代码制作游戏
- cocos2d-x 把资源文件保存到本地手机上,调用JNI接口,ANdroid的
- Cocos2d-x3.0 DrawNode吸取
- Cocos2d-x 2.2.3 Android配置
- cocos2d-js 自定义事件监听派发
- Cocos2d-x从入门到精通第18节课《 Cocos Studio编辑序列帧及序列帧的使用 》
- Cocos工作两周感受
- 决定放弃 Cocos Studio
- [cocos2d-x 3.6]如何实现“侦听触摸事件和侦听按键事件”,触摸回调函数分别在什么情况下执行
- cocos2d-x Scale9Sprite的使用方法 lua篇