Windows 8 64 ビットで Visual Studio 2012 を使用しています。私はこれらの2つの方法を持っています:
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.");
}
デバッグモードでは「NODE WILL BE UPDATED」、リリース時には「NODE WILL NOT BE UPDATED」が表示されます。これは何が原因ですか?