廢話少說,請看下圖:
現在我想點擊英雄頭像,下面的十字控制檯讓它往左邊消失,再次點擊,它又復原,這麼個小功能,如何做到的呢?
我將十字控制檯,放在一個叫做
m_controller裏面,這樣便於操作
在英雄頭像添加事件監聽
m_playerHead =CustomSprite::createWithPath("HearoHead.png");
auto pos = Vec2(m_playerHead->getContentSize().width /2, visibleSize.height -m_playerHead->getContentSize().height /2);
m_playerHead->setPosition(pos);
m_playerHead->onTouchEnded =CC_CALLBACK_2(MainScene::moveControl,this);
addChild(m_playerHead);
在事件監聽回調函數MainScene::moveControl,裏面添加移動十字控制檯代碼如下:
void MainScene::moveControl(Touch *touch,Event *event)
{
if(!m_isEnable)
return;
m_isEnable = false;
Vec2 pos;
CallFunc *f = nullptr;
if(m_dirType ==KControllDirection::KNormalDirection)
{
pos = Vec2(0,0);
f = CallFunc::create([this](){
m_dirType =KControllDirection::kPlayerControllDirection;
m_isEnable = true;
});
}
else
{
pos = Vec2(-185,0);
f = CallFunc::create([this](){
m_dirType = KControllDirection::KNormalDirection;
m_isEnable = true;
});
}
auto action = MoveTo::create(1.0f, pos);
auto seq = Sequence::create(action, f, NULL);
m_controller->runAction(seq);
}
注意下:m_isEnable,是標誌,其作用是確保兩個移動動作不會同時發生,如果沒有它,比如在英雄頭像瘋狂點擊
會出現意想不到動情況。在構造函數初始值爲true,表示可以執行移動動作。
哈哈就這樣實現了。
下面給出該遊戲的apk和源碼下載鏈接
https://github.com/aiwobiezoukainnn/MMGame.git