Eccoci
Scusa per il ritardo.. pensavo fosse più semplice.. ma per avere un effetto funzionale e valido ho dovuto provare e riprovare..
Non vorrei vantarmi ma credo sia anche meglio di quello del link che hai indicato
Se comunque avevi già risolto, tanto meglio per te..
Ad ogni modo posto lo scriptino che ho sviluppato, potrebbe sempre tornare utile a qualcuno.
Copia è incolla sul primo frame.
Nell'ultima riga, al posto di "clip" dovrai indicare la tua istanza a cui vuoi assegnare la funzione di zoom.
Per funzionare in modo corretto, il contenuto del tuo clip dovrà essere disposto in modo che il punto di riferimento risulti esattamente in alto a sinistra.
Potrai inoltre impostare i 3 parametri all'inizio dello script.
La funzione zoom agirà sul clip creando un'animazione durante lo zoom e permettendo uno scorrimento se sborda oltre l'area visibile.. nel caso in cui il clip ingrandito rimanga comunque più piccolo dell'area visibile, questo sarà sempre posizionato al centro dello stage, evitando scorrimenti inconsueti.
Il calcolo del posizionamento per lo scorrimento è ottenuto in base all'effettiva area visibile, ovvero tiene conto dell'eventuale ridimensionamento del flashplayer..
Tutto il codice è commentato.
Se comunque incontri problemi fammi sapere.

Codice PHP:
// wbdZoom by KillerWorm
// ------------------- PARAMETRI PER LO ZOOM -------------------
// fattore massimo di zoom
var maxzoom = 5;
// velocità animazione (da 0 a 100)
var vel = 10;
// margine dai limiti dello stage, per il clip al massimo zoom
var mrg = 20;
// -------------------------------------------------------------
//
// dimensioni iniziali dello stage
var osw = Stage.width;
var osh = Stage.height;
//
function zoom() {
// puntatore del clip su cui agisce la funzione zoom
var mc = this;
// imposto i riferimenti alle proprietà iniziali del clip se non sono ancora impostati
(!mc.ox) && (mc.ox=mc._x);
(!mc.oy) && (mc.oy=mc._y);
(!mc.ow) && (mc.ow=mc._width);
(!mc.oh) && (mc.oh=mc._height);
(!mc.xs) && (mc.xs=mc._xscale);
(!mc.ys) && (mc.ys=mc._yscale);
// valore iniziale di incremento animazione zoom
(!mc.inc) && (mc.inc=0);
// posizione che il clip deve raggiungere al massimo zoom
var endx = mc.zoomed ? mc.xs : kzoom*mc.xs;
var endy = mc.zoomed ? mc.ys : kzoom*mc.ys;
// stato di zoom del clip
mc.zoomed = !mc.zoomed;
// elimino intervallo per animazione zoom
clearInterval(mc.z);
delete mc.onMouseMove;
// direzione dell'animazione
var dir = Number(mc.zoomed)*2-1;
// funzione per l'animazione zoom, richiamata dall'intervallo
var zooming = function () {
// aggiorno valore di incremento rispetto ai valori vel e dir, e limitandolo tra 0 e 100
mc.inc = Math.max(0, Math.min(mc.inc+vel*dir, 100));
// valore sinusoidale relativo al valore inc (serve a dare un andamento più morbido all'animazione)
var k = (1+Math.sin((-90+mc.inc*1.8)*Math.PI/180))/2;
// aggiorno la dimensione del clip
mc._xscale = mc.xs+k*(mc.xs*(maxzoom-1));
mc._yscale = mc.ys+k*(mc.ys*(maxzoom-1));
if (mc.inc>0 && mc.inc<100) {
// aggiorno la posizione del clip durante l'animazione zoom
moving(k);
} else {
// altrimenti elimino intervallo per animazione zoom
clearInterval(mc.z);
moving(k);
// se il clip è al massimo zoom
(mc.inc == 100) && (mc.onMouseMove=function () {
// aggiorno la posizione del clip solo al movimento del mouse
moving(k);
updateAfterEvent();
});
}
};
// funzione per il movimento del clip ingrandito
var moving = function (k) {
// calcolo la differenza tra le dimensioni originali dello stage e le dimensioni dell'area visibile effettiva
var dx = (Stage.width-osw)/2;
var dy = (Stage.height-osh)/2;
// calcolo la posizione finale del clip al massimo zoom, posiziona al centro se è più piccolo dell'area visibile
var zx = (maxzoom*mc.ow+mrg*2>Stage.width) ? (mrg-dx+(_root._xmouse+dx)/Stage.width*(Stage.width-maxzoom*mc.ow-mrg*2)) : ((osw-maxzoom*mc.ow)/2);
var zy = (maxzoom*mc.oh+mrg*2>Stage.height) ? (mrg-dy+(_root._ymouse+dy)/Stage.height*(Stage.height-maxzoom*mc.oh-mrg*2)) : ((osh-maxzoom*mc.oh)/2);
// aggiorno la posizione del clip in base allo zoom corrente
mc._x = mc.ox*(1-k)+zx*k;
mc._y = mc.oy*(1-k)+zy*k;
};
// intervallo per animazione zoom
mc.z = setInterval(zooming, 30);
// prima chiamata della funzione per l'animazione zoom
zooming();
}
// richiamo la funzione zoom al click sull'istanza
clip.onRelease = zoom;