首页 > 代码库 > 精灵随手指移动起来
精灵随手指移动起来
效果图:
程序代码:
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it‘s an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , origin.y + pCloseItem->getContentSize().height/2)); // create menu, it‘s an autorelease object CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition(CCPointZero); this->addChild(pMenu, 1); setTouchEnabled(true); sp1 = CCSprite::create("cpp1.png"); sp1->setScale(0.5f); sp1->setPosition(ccp(100, 200)); this->addChild(sp1); return true;}//触摸移动void HelloWorld::ccTouchMoved(CCTouch* touch, CCEvent* event){ if (iscontrol) { CCPoint location = touch->getLocationInView(); location = CCDirector::sharedDirector()->convertToGL(location); CCLOG("ccTouchMoved...x:%f y:%f", location.x, location.y); //移动时重新设置sprite坐标 float x = location.x-deltax; float y = location.y-deltay; sp1->setPosition(ccp(x, y)); }} //触摸开始点击,计算该点坐标与sprite坐标差值bool HelloWorld::ccTouchBegan(CCTouch* touch, CCEvent* event){ CCPoint pos = sp1->getPosition(); CCPoint location = touch->getLocationInView(); location = CCDirector::sharedDirector()->convertToGL(location);//openGL CCLOG("ccTouchBegan...x:%f y:%f", location.x, location.y); if (location.x > 0 && location.x <960 && location.y >0 && location.y < 640)//触摸的矩形区域 { iscontrol = true; //计算触摸点与sprite的坐标差值 deltax = location.x-pos.x; deltay = location.y-pos.y; } return true;}//触摸结束void HelloWorld::ccTouchEnded(CCTouch* touch, CCEvent* event){ CCLOG("ccTouchEnded..."); //iscontrol = false;}//注册触摸事件void HelloWorld::onEnter(){ CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true); CCLayer::onEnter();}void HelloWorld::onExit(){ CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->removeDelegate(this); CCLayer::onExit();}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。