1 // 2 // MainScene.cpp 3 // helloworld 4 // 5 // Created by apple on 16/9/19. 6 // 7 // 8 9 #include "MainScene.hpp" 10 Scene * MainScene::createScene() 11 { 12 auto scene = Scene::create(); 13 //創建層 14 MainScene *layer = MainScene::create(); 15 scene->addChild(layer); 16 return scene; 17 } 18 bool MainScene::init(){ 19 if (!Layer::init()) { 20 return false; 21 } 22 23 24 sprite = Sprite::create("hu.png"); 25 sprite ->setPosition(50, 50); 26 sprite->setAnchorPoint(Vec2(0.5, 0.5)); 27 this->addChild(sprite);// 添加到層 28 29 30 31 //聲明 32 auto listener1 = EventListenerTouchOneByOne::create(); 33 listener1->setSwallowTouches(true); 34 35 //通過 lambda 表達式 直接實現觸摸事件的回掉方法 36 listener1->onTouchBegan = [](Touch* touch, Event* event){ 37 auto target = static_cast<Sprite*>(event->getCurrentTarget()); 38 39 Point locationInNode = target->convertToNodeSpace(touch->getLocation()); 40 Size s = target->getContentSize(); 41 Rect rect = Rect(0, 0, s.width, s.height); 42 43 if (rect.containsPoint(locationInNode)) 44 { 45 log("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y); 46 target->setOpacity(180);//點擊的時候精靈顏色變暗,255為最大值,0最小 47 return true; 48 } 49 return false; 50 }; 51 52 53 54 listener1->onTouchMoved = [](Touch* touch, Event* event){ 55 auto target = static_cast<Sprite*>(event->getCurrentTarget()); 56 target->setPosition(target->getPosition() + touch->getDelta()); 57 }; 58 59 listener1->onTouchEnded = [=](Touch* touch, Event* event){ 60 auto target = static_cast<Sprite*>(event->getCurrentTarget()); 61 log("sprite onTouchesEnded.. "); 62 target->setOpacity(255);//手勢松開時使精靈恢復原來的顏色 63 }; 64 65 66 //將觸摸事件綁定到精靈身上 67 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, sprite); 68 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite); 69 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite); 70 71 return true; 72 }
