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(0Math.min(mc.inc+vel*dir100));
        
// valore sinusoidale relativo al valore inc (serve a dare un andamento più morbido all'animazione)
        
var = (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>&& 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.setInterval(zooming30);
    
// prima chiamata della funzione per l'animazione zoom
    
zooming();
}
// richiamo la funzione zoom al click sull'istanza
clip.onRelease zoom