我在 Windows 8 64 位上使用 Visual Studio 2012。我有这两种方法:
void Node::setState(States state, bool value) {
if (value) {
states_ |= 1 << state;
}
else {
states_ &= ~(1 << state);
}
}
bool Node::getState(States state) {
return (states_ & (1 << state)) != 0;
}
状态枚举:
enum States {
UPDATABLE = 0x01, // Node data update.
RENDERABLE = 0x02, // Node rendering on screen.
TRANSFORMABLE = 0x04, // Position, rotation and scaling update.
POSITION = 0x08, // Position update.
ROTATION = 0x10, // Rotation update.
SCALING = 0x20 // Scaling update.
};
状态整数初始化:
states_(TRANSFORMABLE | RENDERABLE |
UPDATABLE | POSITION | ROTATION | SCALING)
现在问题出在这部分代码中:
LOGI("SETTING SCALING FOR NODE: %s", node->getName().c_str());
node->setState(Node::SCALING, true);
if (node->getState(Node::SCALING)) {
LOGI("NODE WILL BE UPDATED.");
}
else {
LOGI("NODE WILL NOT BE UPDATED.");
}
在调试模式下,我得到“节点将被更新”,在发布时 - “节点将不会被更新”。这是什么原因造成的?