Динамически назначить .onRelease для мувиклипа, с динамическим URL тоже AS2 - PullRequest
1 голос
/ 17 января 2011

Конечно, это будет простое исправление, и я просто не вижу дрова для деревьев. У меня есть фильм с мувиклипом scroller_mov. В нем 15 видеоклипов с именами от pic1 до pic15.

Мой код находится на одном кадре, на том же уровне, что и scroller_mov. Просто хочу динамически назначить действие клика для видеороликов pic1 - pic15! пробовал жестко закодированные ссылки и динамику, но не радость! Все остальное работает отлично. Спасибо, если вы можете помочь!

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]);
    }
};

};

1 Ответ

2 голосов
/ 17 января 2011

Вы можете сделать это так же, как вы делаете это в своем коде - но вам нужно дождаться окончания loadMovie(). Когда вы загружаете мувиклип, все его свойства стираются после успешного завершения.

Установите интервал для проверки методов MovieClip getBytesLoaded() и getBytesTotal(), затем назначьте функцию onRelease, когда клип будет полностью загружен. Вот быстрый пример, вы можете просто скопировать и использовать ту же функцию checkLoaded:

_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);

Вы можете назначить интервал для любой переменной, он не обязательно должен принадлежать _root. Убедитесь, что первый параметр setInterval - это объект, в котором содержится метод checkLoaded, а последний параметр - мувиклип, в который вы загружаете.

...