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;
}
| << 前へ |