Ok primero no hay error de sintaxis pero error en ejecución si:
1. Debes tener en cuenta que dos o mas objetos no deben tener la misma profundidad (depth), cada objeto ya sea movieclip, button, etc. debe tener una unica profundidad

, te lo digo por esto:
Código :
_root.todo["contiene"+i].attachMovie("boton","botoncete",1);
//y esto
_root.todo["contiene"+i].createTextField("vacio",0,83,posiciony,180,30);
En la primera linea el 1 y la segunda linea el 0, estas poniendo un profundidad constante y estas duplicando las profundidades para diferentes objetos
Aqui lo hiciste bien

Código :
_root.todo.createEmptyMovieClip("contiene"+i,i+6);Hazlo en las otras dos, te aconsejo al como 1+(i*10), 1000+(i*10)
algo asi, debes asegurate que las 3 formulas no retornen valores iguales.
2. Para el problema de tus botones, puedes hacer algo como esto:
Código :
with(_root.todo["contiene"+i]){
botoncete._y=vacio._y;
botoncete._x=vacio._x;
botoncete._width=vacio._width;
botoncete._height=vacio._height;
botoncete._alpha=0;
botoncete.i=i; //<--fijate aqui
botoncete.onPress=function(){
getURL ('"noticias/'+noticias[this.i]+'.rar"',"_blank"); //<-- aqui tambien
}El problema es que como formas el evento dinamicamente debes almacenar la i, porque sino toma el ultimo valor que tuvo i siempre