Я использую следующий код для загрузки некоторых баннеров: «баннер» - это изображение в формате PNG, на которое можно нажимать.Я получаю URL, на который он должен указывать, через параметр класса AdLoader.
package
{
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.navigateToURL;
import flash.filters.DropShadowFilter;
import flash.filters.BitmapFilterQuality;
//
public class AdLoader extends MovieClip
{
var mcs = [];
var loader:Loader;
var URLs:Array;
var flt:DropShadowFilter;
var h:uint = 0;
//
public function AdLoader(ads:Object)
{
initFilters();
//
var adsLen = ads.u.length;
URLs = ads.u;
// here I create movieClips based on how many images I must load
buildContainers(adsLen);
//
for (var i:uint=0; i<adsLen; i++)
{
//
loader = new Loader();
var request:URLRequest = new URLRequest(ads.s[i]);
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __onLoadComplete);
mcs[i].addChild(loader);
}
}
//
public function __onLoadComplete(e:Event)
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, __onLoadComplete);
//;
var n = this.numChildren;
//trace(n);
//
for (var j:uint=0; j<n; j++)
{
trace(j);
h += this.getChildAt(j).height;
this.getChildAt(j).y = j == 0 ? 0:h + 10;
}
}
//
public function gotoURL(e:MouseEvent)
{
var n = Number(e.target.parent.name.split("_")[1]);
var request:URLRequest = new URLRequest(URLs[n]);
navigateToURL(request,"_blank");
}
//
public function buildContainers(n)
{
for (var i:uint=0; i<n; i++)
{
var mcLoader = new MovieClip();
mcLoader.name = "loader_" + i;
mcLoader.addEventListener(MouseEvent.MOUSE_DOWN, gotoURL);
mcLoader.mouseEnabled = true;
mcLoader.buttonMode = true;
mcLoader.filters = new Array(flt);
mcs.push(mcLoader);
addChild(mcLoader);
}
}
//
public function initFilters()
{
//...removed
}
}
}
На практике я создаю несколько контейнеров MovieClip (loader_1, loader_2 и т. Д.) И в каждом контейнере, который я хочузагрузить одно изображение .
Что происходит: когда изображения загружены, я хочу расположить каждое изображение на пикселе y + 10 предыдущего, поэтому , если первое находится в точке y: 0, а его высота равна 140, я хочувторое изображение у: 150 (и т. д.) .Я не могу понять, что это происходит, но иногда код работает, хотя в большинстве случаев это не так.
Все желающие могут скачать все файлы здесь (в верхнем левом меню выберите «Файл», затем «скачать оригинал»).