coco2dx---onTouchBegan

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Scene::init() )
{
return false;
}

auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->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
auto closeItem = MenuItemImage::create(
                                       "CloseNormal.png",
                                       "CloseSelected.png",
                                       CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                            origin.y + closeItem->getContentSize().height/2));

// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1);

/////////////////////////////
// 3. add your codes below...

// add a label shows "Hello World"
// create and initialize a label

auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
// position the label on the center of the screen
label->setPosition(Vec2(origin.x + visibleSize.width/2,
                        origin.y + visibleSize.height - label->getContentSize().height));

// add the label as a child to this layer
this->addChild(label, 1);

// add "HelloWorld" splash screen"
auto sprite = Sprite::create("HelloWorld.png");

// position the sprite on the center of the screen
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

// add the sprite as a child to this layer
this->addChild(sprite, 0);

auto button = cocos2d::ui::Button::create("HelloWorld.png");
button->setPosition(Vec2(origin.x + visibleSize.width/4,
                         origin.y + visibleSize.height - label->getContentSize().height));
button->addClickEventListener(CC_CALLBACK_1(HelloWorld::pp, this));
this->addChild(button);

schedule(schedule_selector(HelloWorld::handUpdate), 1.f, 10, 5);

auto redLayer = LayerColor::create(cocos2d::Color4B(100, 200, 300, 255), visibleSize.width/2, visibleSize.height/2);
redLayer->setTag(200);
redLayer->setIgnoreAnchorPointForPosition(false);
redLayer->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f));
redLayer->setPosition(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2);
redLayer->setPositionZ(-80.f);
this->addChild(redLayer, 0);
redLayer->setLocalZOrder(1);
redLayer->setGlobalZOrder(1);

auto greenLayer = LayerColor::create(cocos2d::Color4B(200, 200, 255, 255), visibleSize.width/4, visibleSize.height/4);
greenLayer->setTag(100);
greenLayer->setIgnoreAnchorPointForPosition(false);
greenLayer->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f));
greenLayer->setPosition(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2-50);
greenLayer->setPositionZ(0);
this->addChild(greenLayer, 1);
greenLayer->setLocalZOrder(0);
greenLayer->setGlobalZOrder(0);

auto listener1 = EventListenerTouchOneByOne::create();
listener1->onTouchBegan = [](Touch* touch, Event* event)
{
    // 獲取事件所綁定的 target
    auto target = static_cast<Node*>(event->getCurrentTarget());
    
    // 獲取當(dāng)前點(diǎn)擊點(diǎn)所在相對(duì)按鈕的位置坐標(biāo)
    Point pt = touch->getLocation();
    Point locationInNode = target->convertToNodeSpace(pt);
    Size s = target->getContentSize();
    Rect rect = Rect(0, 0, s.width, s.height);
    
    // 點(diǎn)擊范圍判斷檢測(cè)
    if (rect.containsPoint(locationInNode))
    {
        log("sprite1 began... x = %f, y = %f", locationInNode.x, locationInNode.y);
        target->setOpacity(180);
        return true;
    }
    
    log("next pass1");
    return false;
};
listener1->setSwallowTouches(false);

auto listener2 = EventListenerTouchOneByOne::create();
listener2->onTouchBegan = [](Touch* touch, Event* event)
{
    // 獲取事件所綁定的 target
    auto target = static_cast<Node*>(event->getCurrentTarget());
    
    // 獲取當(dāng)前點(diǎn)擊點(diǎn)所在相對(duì)按鈕的位置坐標(biāo)
    Point pt = touch->getLocation();
    Point locationInNode = target->convertToNodeSpace(pt);
    Size s = target->getContentSize();
    Rect rect = Rect(0, 0, s.width, s.height);
    
    // 點(diǎn)擊范圍判斷檢測(cè)
    if (rect.containsPoint(locationInNode))
    {
        log("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y);
        target->setOpacity(180);
        return true;
    }
    
    log("next pass");
    return false;
};
listener2->setSwallowTouches(true);

this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, redLayer);
this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener2, greenLayer);

return true;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蓝牲,更是在濱河造成了極大的恐慌,老刑警劉巖司志,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異降宅,居然都是意外死亡骂远,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)腰根,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)激才,“玉大人,你說(shuō)我怎么就攤上這事额嘿∪衬眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵册养,是天一觀的道長(zhǎng)东帅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)球拦,這世上最難降的妖魔是什么靠闭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮坎炼,結(jié)果婚禮上愧膀,老公的妹妹穿的比我還像新娘。我一直安慰自己谣光,他們只是感情好檩淋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著萄金,像睡著了一般狼钮。 火紅的嫁衣襯著肌膚如雪碳柱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天熬芜,我揣著相機(jī)與錄音,去河邊找鬼福稳。 笑死涎拉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的的圆。 我是一名探鬼主播鼓拧,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼越妈!你這毒婦竟也來(lái)了季俩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梅掠,失蹤者是張志新(化名)和其女友劉穎酌住,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阎抒,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酪我,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了且叁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片都哭。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逞带,靈堂內(nèi)的尸體忽然破棺而出欺矫,到底是詐尸還是另有隱情,我是刑警寧澤展氓,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布穆趴,位于F島的核電站,受9級(jí)特大地震影響带饱,放射性物質(zhì)發(fā)生泄漏毡代。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一勺疼、第九天 我趴在偏房一處隱蔽的房頂上張望教寂。 院中可真熱鬧,春花似錦执庐、人聲如沸酪耕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迂烁。三九已至看尼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盟步,已是汗流浹背藏斩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留却盘,地道東北人狰域。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像黄橘,于是被迫代替她去往敵國(guó)和親兆览。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)塞关。 張土汪:刷leetcod...
    土汪閱讀 12,724評(píng)論 0 33
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,399評(píng)論 0 23
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理抬探,服務(wù)發(fā)現(xiàn),斷路器帆赢,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 問(wèn)題:follow() 調(diào)用本類(lèi)的另一個(gè) 函數(shù) addFollow();不成功小压,提示未定義函數(shù):Call to ...
    abs1004閱讀 658評(píng)論 0 0
  • 昨晚作業(yè): ?填寫(xiě)表格(可以每天填寫(xiě)) ?定一個(gè)目標(biāo)體重,然后抽人像卡表示對(duì)這個(gè)體制的真實(shí)看法 109斤-定的高了...
    徐小婷寶貝閱讀 257評(píng)論 0 1