0
我正在使用cocos2d-x 3.7.1Cocos2d-x觸摸事件座標系
我在我的場景中有一個節點,我向該節點添加了子節點。 (HexField是節點的子類)
int rhombusSizeX = 1;
int rhombusSizeY = 2;
for (int y = 0; y < rhombusSizeY; ++y){
for (int x = 0; x < rhombusSizeX; ++x){
HexField* field = HexField::create();
field->setPosition(Vec2(x*30 + y*15, y*30));
field->setName("HexField " + to_string(x) + "," + to_string(y));
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(HexField::onTouchBegan, field);
listener->onTouchMoved = CC_CALLBACK_2(HexField::onTouchMoved, field);
listener->onTouchEnded = CC_CALLBACK_2(HexField::onTouchEnded, field);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, field);
this->addChild(field, 1);
}
}
如果只有一個HexField添加
int rhombusSizeX = 1;
int rhombusSizeY = 1;
在HexField::onTouchBegan
的touch->getLocation()
像預期的那樣世界座標報道。
如果有一個以上的HexField添加
int rhombusSizeX = 5;
int rhombusSizeY = 5;
touch->getLocation()
返回座標相對於「最後一個才補充說:」 HexField在這種情況下將HexField 3,4。
這是爲什麼?這是一個錯誤嗎?