2011-01-17 12 views
1

Sicher wird dies eine einfache Lösung sein, und ich sehe nur nicht das Holz für die Bäume. Ich habe einen Film mit einem Filmclip namens scroller_mov. Darin befinden sich 15 Filmclips mit dem Namen pic1 bis pic15.Dynamisch zuweisen .onRelease zu MovieClip, mit dynamischen URL zu AS2

Mein Code ist auf einem Frame, auf der gleichen Ebene wie scroller_mov. Ich möchte nur eine Klick-Aktion dynamisch dem pic1 zuweisen - pic15 movieclips! habe hartcodierte Links und dynamische versucht, aber keine Freude! Alles andere funktioniert gut. Danke, wenn du helfen kannst!

stop(); 

lv_obj = new LoadVars(); 

lv_obj.load("flash_carou_data2.php"); 

lv_obj.onLoad = function(success):Void{ 
product_mod.product_model = this.product_models; 

var products_data:Array = product_mod.product_model.split(","); 
scroller_mov.prodmod1 = products_data[0]; 

for (i=0;i<15;i++){ 
    products_data[i] = products_data[i].split("&"); 
    scroller_mov["prodmod" + (i+1)] = products_data[i][0]; 
    scroller_mov["prodprice" + (i+1)] = products_data[i][3]; 
    scroller_mov["pic" + (i+1)].loadMovie(products_data[i][2]); 

    scroller_mov["pic" + (i+1)].onRelease = function () { 
     getURL("http://www.mysite.com"); 
     //getURL(products_data[i][1]); 
    } 
}; 

};

Antwort

2

Sie können es so tun, wie Sie es in Ihrem Code tun - aber Sie müssen warten, bis die loadMovie() fertig ist. Wenn Sie einen MovieClip laden, werden alle seine Eigenschaften nach dem erfolgreichen Abschluss gelöscht.

ein Intervall Set für Ihre MovieClip- der getBytesLoaded() und getBytesTotal() Methoden zu überprüfen, dann die onRelease Funktion zuweisen, wenn der Clip vollständig geladen ist. Hier ist ein kurzes Beispiel, können Sie einfach kopieren und verwenden die gleiche checkLoaded Funktion:

_root.test = _root.createEmptyMovieClip ("test01", _root.getNextHighestDepth()); 
_root.test.loadMovie ("test.swf"); 

_root.checkLoaded = function (clip) { 

    var bytesLoaded = clip.getBytesLoaded(); 
    var bytesTotal = clip.getBytesTotal(); 
    if (bytesLoaded > 0 && bytesLoaded == bytesTotal) trace ("loaded"); 
    else return; 
    clearInterval (_root.interv); 

    clip.onRelease = function() { 
     trace ("release"); 
     getURL("http://www.google.com"); 
    } 
} 

_root.interv = setInterval(_root, "checkLoaded", 100, _root.test); 

Sie können das Intervall auf jede Variable zuweisen, es muss nicht _root gehören. Stellen Sie sicher, dass der erste Parameter setInterval das Objekt ist, in dem die Methode checkLoaded enthalten ist, und der letzte Parameter der MovieClip ist, in den Sie laden.

+1

Danke, das ist großartig! –

+1

@brain Und ich liebe Kommentare von neuen Benutzern, die bestätigen, wie sehr sie die Antwort genossen haben. Also danke, das ist auch toll! Lässt uns glauben, dass Sie die Antwort aus einem sehr guten Grund akzeptiert haben und es tatsächlich geholfen hat, Ihr Problem zu lösen. :) – cregox

Verwandte Themen