Merge pull request #11947 from dabingnn/v3_bugForCameraVisitingScene

add test case to reproduce the bug for visiting scene by multiple camera
This commit is contained in:
minggo 2015-05-22 09:47:18 +08:00
commit 10fb660fca
3 changed files with 77 additions and 0 deletions

View File

@ -58,3 +58,66 @@ void BugChild::switchChild(Ref *sender)
CCLOG("Child attached to parent1");
}
}
bool BugCameraMask::init()
{
if (!BugsTestBase::init()) return false;
auto size = Director::getInstance()->getWinSize();
auto node = Node::create();
node->setPosition(size.width/4, size.height/3);
_sprite = Sprite::create("Images/grossini.png");
node->addChild(_sprite);
node->setCameraMask((unsigned short)CameraFlag::USER1);
auto move = MoveBy::create(2, Vec2(200,0));
node->runAction(RepeatForever::create(Sequence::createWithTwoActions(move, move->reverse())));
addChild(node);
auto camera = Camera::create();
camera->setCameraFlag(CameraFlag::USER1);
addChild(camera);
auto item1 = MenuItemFont::create("Switch Child", CC_CALLBACK_1(BugCameraMask::switchSpriteFlag, this));
auto menu = Menu::create(item1, nullptr);
menu->alignItemsVertically();
menu->setPosition(size.width/2, 100);
addChild(menu);
_spriteMaskLabel = Label::create();
_spriteMaskLabel->setPosition(size.width/2, 120);
addChild(_spriteMaskLabel);
updateSpriteMaskLabel();
auto label = Label::create();
label->setPosition(size.width/2, size.height * 0.9);
label->setString("Sprite should always run action.");
addChild(label);
return true;
}
void BugCameraMask::switchSpriteFlag(Ref *sender)
{
if((unsigned short) CameraFlag::USER1 == _sprite->getCameraMask())
{
_sprite->setCameraMask((unsigned short)CameraFlag::DEFAULT);
}
else
{
_sprite->setCameraMask((unsigned short)CameraFlag::USER1);
}
updateSpriteMaskLabel();
}
void BugCameraMask::updateSpriteMaskLabel()
{
std::stringstream stream;
stream<<"The camera Mask is "<<(_sprite->getCameraMask() == 1 ? "CamereFlag::Default" : "CameraFlag::User1")<<std::endl;
_spriteMaskLabel->setString(stream.str());
}

View File

@ -30,4 +30,17 @@ protected:
cocos2d::Menu* menu;
};
class BugCameraMask : public BugsTestBase
{
public:
CREATE_FUNC(BugCameraMask);
virtual bool init() override;
void switchSpriteFlag(cocos2d::Ref* sender);
void updateSpriteMaskLabel();
Node* _sprite;
cocos2d::Label* _spriteMaskLabel;
};
#endif /* defined(__Bug_Child__) */

View File

@ -22,4 +22,5 @@ BugsTests::BugsTests()
ADD_TEST_CASE(Bug1159Layer);
ADD_TEST_CASE(Bug1174Layer);
ADD_TEST_CASE(BugChild);
ADD_TEST_CASE(BugCameraMask);
}