首先我要说明的是:这是一篇女主与小三争夺男主的故事!该故事场面规模宏大,剧情环环紧扣,堪称苦情剧中的穿越剧,
爱情公寓里的爱森公寓...
-------------------------------------
boy 和 girl 甜蜜的交往了两年,但是,由于boy是一个文理双修的优秀男儿,小三不得不跳出来了!小三设计出种种阴谋
来拆散boy和girl。最后他俩大吵了一架。在冷战期间,小三强势入内,伴随boy左右!女主发现这个情况后,意识到所有一切都是小三搞的鬼,但她又拉不下脸来去和boy道歉。而我们的故事也就是从这里开始的。
主线剧情:拖动girl移动到男主旁的红色框框内。
分线剧情:girl一进入红框,就能立马被boy文理双修的气质所吸引,飞到他..身边。
分线剧情:按照剧情安排,小三必须在女主回来的时候马上离开!
-------------------------------------------------------
实现过程:
2、创建boy,girl,girl_3
3、接收监听,touchBegan
4、拖动女主移动
5、判断女主移动的最后位置,如果在红框,则被吸引,同时小三离开。如果不在,则女主回原地,小三不动。
--------------------------------------------------------
爱情公寓里的爱森公寓...
-------------------------------------
boy 和 girl 甜蜜的交往了两年,但是,由于boy是一个文理双修的优秀男儿,小三不得不跳出来了!小三设计出种种阴谋
来拆散boy和girl。最后他俩大吵了一架。在冷战期间,小三强势入内,伴随boy左右!女主发现这个情况后,意识到所有一切都是小三搞的鬼,但她又拉不下脸来去和boy道歉。而我们的故事也就是从这里开始的。
主线剧情:拖动girl移动到男主旁的红色框框内。
分线剧情:girl一进入红框,就能立马被boy文理双修的气质所吸引,飞到他..身边。
分线剧情:按照剧情安排,小三必须在女主回来的时候马上离开!

-------------------------------------------------------
实现过程:
1、添加触摸监听事件:
1.
auto listener = EventListenerTouchOneByOne::create();
//创建一个触摸监听(单点触摸)
2.
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,
this
);
//指定触摸的回调函数
3.
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded,
this
);
4.
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,
this
);
5.
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this
);
//将listener放入事件委托中
2、创建boy,girl,girl_3
01.
boy = Sprite::create(
"boy.png"
);
//创建男主
02.
boy->setPosition(Point(
400
,
370
));
03.
this
->addChild(boy,
1
);
04.
05.
girl_1 = Sprite::create(
"girl_1.png"
);
//创建女主
06.
girl_1->setPosition(Point(
250
,
250
));
07.
this
->addChild(girl_1,
1
);
08.
09.
girl_3 = Sprite::create(
"girl_3.png"
);
//创建小三
10.
girl_3->setPosition(Point(
450
,
370
));
11.
this
->addChild(girl_3,
1
);
3、接收监听,touchBegan
1.
bool HelloWorld::onTouchBegan(Touch* touch, Event *event)
2.
{
3.
return
true
;
//返回true表示接收触摸事件
4.
}
4、拖动女主移动
01.
void
HelloWorld::onTouchMoved(Touch* touch, Event *event)
02.
{
03.
auto beginPos = touch->getLocationInView();
//获得触摸位置
04.
beginPos = Director::getInstance()->convertToGL(beginPos);
//坐标转换
05.
06.
auto girlPos = girl_1->getPosition();
//获取女主的位置
07.
auto girlSize = girl_1->getContentSize();
//获取女主的三围(大小)
08.
//针对女主的坐标和三围定制一个凶..框框
09.
auto rect = Rect(girlPos.x - girlSize.width/
2
,girlPos.y - girlSize.height/
2
,girlSize.width +
10
,girlSize.height +
10
);
10.
if
(rect.containsPoint(beginPos))
//判断触点是否在女主身上!
11.
{
12.
auto endPos = touch->getPreviousLocationInView();
//获取触摸的前一个位置
13.
endPos = Director::sharedDirector()->convertToGL(endPos);
//转换坐标
14.
15.
auto offset = Point(beginPos-endPos);
//获取offset,2.14是用ccpSub,3.0后直接用 - 号就可以
16.
auto nextPos = Point(girlPos + offset);
//获取女主的下一步计划,2.14用的是ccpAdd,
17.
girl_1->setPosition(nextPos);
18.
}
19.
}
5、判断女主移动的最后位置,如果在红框,则被吸引,同时小三离开。如果不在,则女主回原地,小三不动。
01.
void
HelloWorld::onTouchEnded(Touch* touch, Event *event)
02.
{
03.
auto lastPos = touch->getLocationInView();
04.
lastPos = Director::getInstance()->convertToGL(lastPos);
05.
06.
auto rect = Rect(
400
,
300
,
100
,
150
);
//建立一个选中区域,女主如果拖动到这个框内就可以瞬移进来,反之是小三进来
07.
08.
MoveTo* moveTo_1;
//女主的动作
09.
MoveTo* moveTo_3;
//小三的动作
10.
if
(rect.containsPoint(lastPos))
11.
{
12.
moveTo_1 = MoveTo::create(
0
.1f,Point(
450
,
370
));
13.
moveTo_3 = MoveTo::create(
0
.1f,Point(
250
,
250
));
14.
}
15.
else
16.
{
17.
moveTo_1 = MoveTo::create(
0
.1f,Point(
250
,
250
));
18.
moveTo_3 = MoveTo::create(
0
.1f,Point(
450
,
370
));
19.
}
20.
21.
girl_1->runAction(moveTo_1);
//男主争夺战~~
22.
girl_3->runAction(moveTo_3);
23.
}

--------------------------------------------------------
这个故事告诉我们,情侣之间一定要珍惜彼此的感情,我们并不是在演三国,分分合合终究是有风险的。一个疏忽,小三自然就出现了。