Впервые столкнулся с этим на as2, на 3й версии таких вещей я не наблюдал. Есть вот такое условие в событии onMouseUp:

Код AS1/AS2:
if (то-то && (то-то == undefined || то-то == null || то-то == temp))
{
trace("+");
Add(temp._name);
temp.Destroy();
temp = null;
}
else if (temp != null)
{
trace("-");
temp.base.Add(temp._name);
temp.Destroy();
temp = null;
}
Проблема заключается в том, что всегда сначала выполняется альтернативное условие и только потом главное. Причем даже когда главное условие вполне выполнимо, я всеравно получаю в окне трассера сначала "-" и только потом "+". А если вынести temp.Destroy(); и temp = null; под условие, что было бы логично для упрощения кода, то сначала выполнятся вообще эти две строчки. Тоесть все работает задом-наперед. Может просто я уже сплю и чего-то не понимаю, подскажите)