Forum Discussion
IS vs. IS NOT Trigger Bug?
For those who may read this thread later, I would like to point out that this statement:
Programmatically, the two trigger statements (When the state of all rectangles is not Normal / When the state of all rectangles is Activated) are equivalent logical operators
is not always necessarily true. While it is true in the case of the slide you attached, if the rectangles have other states, they could be in a selected state, which is neither Normal, nor Activated.
Your question: "Is this a IS vs IS NOT bug?" isn't broad enough in scope to encompass the true problem, nor the answer. The problem is the way Articulate has designed and executed "When state of XXX is ..." Most of us recognize that "when state is" is not an action, and shouldn't be capable of initiating a trigger. So we assume that what it really means is "when state becomes", and write our triggers accordingly. But SL didn't implement it that way. It doesn't have a true listener, that is listening for states to change. Rather, it seems to sporadically check and see what the states are, and use the states as conditions. My experience is that the internal trigger really works like "Take action when checker checks states if all the rectangles are Activated." So "when state of" works sometimes, and not others. It has traditionally worked only for a maximum of 4 or 5 objects at a time. Further complicating things is the fact that the quasi-listener at best listens for objects arriving in states, but not leaving a state (as you found out.) That is why the "is Activated" works, while "is not Normal" doesn't.
Another potential problem that you don't have, but a potential reader might, is that all the built-in states are overlays of Normal, and thus all report themselves as normal. So IS NOT Normal doesn't work for any of them.
So I know; "When all of XXX are state YYY" is really glamorous and easy to write, but I try to resist. If it absolutely must work every time, I will write "Change state of Next to Normal when slide 1 changes if state of rectangles 2, 3, and 4 are activated". The listeners for variables are always listening and aren't limited in numbers.