动态地将.onRelease分配给movieclip,动态URL也是AS2

时间:2011-01-17 15:37:22

标签: flash actionscript-2

当然这将是一个简单的修复,我只是没有看到树木。我有一部名为scroller_mov的movieclip电影。里面有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 个答案:

答案 0 :(得分:2)

您可以按照在代码中执行此操作的方式执行此操作 - 但您必须等待loadMovie()完成。加载MovieClip时,成功完成后将删除其所有属性。

设置间隔以检查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方法的对象,最后一个参数是您要加载的MovieClip。