AS3ではビット単位でのXORはできるけど(^)、論理演算でのXORは用意されていないようなので、何とかできるように工夫してみた。
普通に
if(isA ^ isB){ //XORでtrueの処理 }
という感じで書くこともできるかと思ったら、数値型でないとパブリッシュできません。というわけで、
if(int(isA) ^ int(isB)){ //XORでtrueの処理 }
のような感じにしたらできました。一応traceさせると、
trace(Boolean(int(true) ^ int(true)));//false trace(Boolean(int(true) ^ int(false)));//true trace(Boolean(int(false) ^ int(true)));//true trace(Boolean(int(false) ^ int(false)));//false
ということでXORが実現できました。まあビット単位の演算はできる以上当たり前ですし、遅くなったりしないのかという疑問も残りますが、条件文2つ書くよりはいいかなと。
計算もビット演算使った方が早い場合もあるようなので、ビット演算についてはもうちょっと使えるようにしたい。ビットシフトとか。