Código :
numero=Number(0);
if (numero=="1"){
_root.p1._x= pos1._x;
_root.p1._y= pos1._y;
}
if (numero=="20"){
_root.p1._x= pos20._x;
_root.p1._y= pos20._y;
}
¿Eso es en un frame?
Supongo ¿vuelves a él? Si no vuelves, entonces el código en él sólo se aplicará 1 vez. Además, no entiendo ese Number(0) pero si estás diciendo que la variable es 0, e inmediatamente pones if para cuando la variable sea 1 o 20, entonces, mijo, nunca va a serlo, si acabás de definir que es 0 y no hay algo más entre eso y los ifs ... Además si el "Number" es para definirla como número, no entiendo para qué pones entre comillas los "números" de los ifs. Si haces eso lo toma como texto, ya no es 1, número, sino "1", texto. Puede que en lo que dije no se vea la diferencia pero la hay, cuando sumas 1+1 te da 2, pero cuando sumas "1"+1 te da 11, aunque eso capáz que depende del AS que sea, en algunos lenguajes de programación creo que da error porque no suman un número y un texto.
Tampoco tiene sentido poner _root. si estás en la película raíz. Pero esto no es importante.
Lo del salto no lo entendí ¿quieres que se mueva lento, digamos, en vez de que instantáneamente aparezca en el nuevo casillero? Si te sirve un movimiento en diagonal y de velocidad dependiente de la distancia -o sea, la duración siempre sería la misma, pero la velocidad y distancia no-, puedes medir la distancia x y la y, y dividir cada una por el tiempo que quieres que tarde, entonces haces un if o lo que sea, una etapa en la que el personaje se mueva Dx y Dy -resultados de las divisiones-, hasta superar la posición que buscas, momento en el que -con un if- lo colocas en la posición y pones fin a la etapa.
Si quieres que la velocidad sea siempre la misma -entonces el tiempo que tarde no lo será- creo que vas a tener que hacer un cálculo de porcentajes o algo así, es un poco complicado. Cuenta más de tu problema, en realidad acabo de darme cuenta que desde cierto punto lo confundí con otro.