cocos2d::Sprite* sprite;
Point p = touch->getLocation();
引数で渡されるTouchインスタンスの「getLocation」メソッドで、タッチした位置が取り出せます。得られる値は、Point構造体という値になります。Rect r = sprite->boundingBox();
Spriteの領域を「boundingBox」メソッドで取得します。これは、Spriteがぴったりはめ込まれる四角形の領域(位置と大きさ)を取り出すものです。値は、Rect構造体というものの値になります。if (r.containsPoint(p)) ……
後は、タッチした位置(Point)が、Spriteの領域(Rect)の中にあるかどうかを調べるだけです。これは「containsPoint」というメソッドを使います。これはRectにあるもので、引数のPointが領域内にあるかどうかをチェックします。領域内にあれば、trueを返します。sprite->setVisible(false);
Spriteにある「setVisible」は表示・非表示を切り替えるもので、これをfalseにすれば画面に表示されなくなります。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
#pragma execution_character_set("utf-8") #include "HelloWorldScene.h" USING_NS_CC; Scene* HelloWorld::createScene() { auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene; } bool HelloWorld::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Director::getInstance()->setDisplayStats(false); // stats OFF sprite = Sprite::create("character.png"); sprite->setAnchorPoint(Vec2(0.5, 0.5)); sprite->setPosition(origin.x + 100, origin.y + visibleSize.height / 2); this->addChild(sprite, 1); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [this](cocos2d::Touch* touch, cocos2d::Event* event)->bool { Point p = touch->getLocation(); Rect r = sprite->boundingBox(); if (r.containsPoint(p)) { sprite->setVisible(false); } return true; }; this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); return true; }
<< 前へ |