Mas quando dá erro, tens um movieclip chamado "erro" na root com uma frame label lá dentro chamada "erro" também, ou tens na _root duas frames distintas com os nomes "certo" e "erro"? Se for a segunda situação, eu diria que o código deveria ser algo como:
on (release) {
trace("Nome: " + _root.nome);
if (_root.nome == "") {
trace("Vou mostrar erro");
_root.gotoAndStop("erro");
} else {
trace("Vou mostrar certo");
_root.gotoAndStop("certo");
}
}
No entanto, tal como o gimbras, disse, também pode ser algum problema com a variável _root.nome. Experimenta fazer um trace do seu valor no inicio do evento do botão para tirares as dúvidas, e depois traces também em ambas as hipoteses, porque com o if else que está ali em cima, ele tem obrigatoriamente que entrar numa delas...
Quanto aos ifs, tenho só que discordar na implementação do gimbras, que até acho que não funciona no flash. Isto porque o else nunca pode ter uma condição a seguir, ou seja, ou se faz
if(condiçãoA)
{
acçãoA;
}
else if(condiçãoB)
{
acçãoB;
}
ou então
if(condiçãoA)
{
acçãoA;
}
else
{
acçãoB;
}
O que o TripleHCP colocou no post inicial, não faz tanto sentido em termos lógicos de programação, mas também funciona.
Fica bem