如果Node的实际类型是Layer或者其派生类,
setPosition是不是有猫腻?
std::string menuImage = "menu.png"; auto menuItem = MenuItemImage::create(menuImage,menuImage,NULL,this); auto menu = Menu::create(menuItem,NULL); auto menuItemPoint = Point(...,...); //具体按钮位置是由menuItem的setPosition调用决定。而不是Menu的setPosition. menuItem->setPosition(menuItemPoint); //貌似设置menu的anchor没作用 //menu->setAnchorPoint(Point::ZERO); //这个setPosition ....打酱油?。可又是,去掉不显示. //但又不是按menu的anchor点显示在父Layer的ZERO位置 menu->setPosition(Point::ZERO); //添加到父Layer中 addChild(menu,1);
新建一个Layer对象,调用其 getContentSize(),返回是(0,0)
auto label = LabelTTF::create( "left_bottom", "Arial", 24); label->setPosition(Point::ZERO); label->setAnchorPoint(Point::ZERO); addChild(label);
label 却会按anchor正常显示在左下角..
----------
在一个Layer的anchor放置一个精灵,将这个Layer设置到父Layer的ZERO位置,精灵却不在ZERO位置
auto layer = Layer::create(); auto layersize = layer->getContentSize(); auto layerAnchor = layer->getAnchorPoint(); auto sprite = Sprite::create(s_pathClose); auto anchorPoint = Point(layersize.width * layerAnchor.x,layersize.height * layerAnchor.y); sprite->setPosition(anchorPoint); layer->addChild(sprite); layersize = layer->getContentSize(); //Point layPoint = Point::ZERO; layer->setPosition(Point::ZERO); addChild(layer);
这篇博文 :http://blog.csdn.net/xuguangsoft/article/details/8425623
有讲Layer的anchor是左下角,一切就都对上了,但是Layer::getAnchorPoint()返回的是(0.5,0.5)..