| MrNobody |
25.11.2008 16:36 |
Loader Listeners и не только
Код AS3:
private function loadBanner() {
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.INIT, loadInit);
if(curNews == 0){
if(bannerfirstload == 0){
bannerfirstload = 1;
}
else{
if(baner.parent != null) {
baner.parent.removeChild(baner);;
bannerfirstload = 1;
}
}
var url:String = "promo6.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
lastnews = 0;
}
if(curNews == 1){
if (baner.parent != null) {
baner.parent.removeChild(baner);;
}
var url:String = "promo5.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
lastnews = 1;
//loadBanner()
}
if(curNews == 2){
if (baner.parent != null) {
baner.parent.removeChild(baner);;
}
var url:String = "promo3.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
lastnews = 2;
}
else{
if (baner.parent != null) {
baner.parent.removeChild(baner);;
}
var url:String = "promo2.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
}
lastnews = 5;
}
if(curNews == 6){
trace(lastnews);
if(lastnews == 3 || lastnews == 4 || lastnews == 5 || lastnews == 6){
}
else{
if (baner.parent != null) {
baner.parent.removeChild(baner);;
}
var url:String = "promo2.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
}
lastnews = 6;
}
if(curNews == 7){
if (baner.parent != null) {
baner.parent.removeChild(baner);;
}
var url:String = "promo.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
var preloade_mc:MovieClip = new preloader();
preloade_mc.x = 330;
preloade_mc.y = 170;
preloade_mc.name = 'preloader';
addChild(preloade_mc);
lastnews = 7;
}
} // End of Function
Где curNews - номер текущей новости.
Код AS3:
private function loadInit(event:Event):void {
var loader:Loader = Loader(event.target.loader);
var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo);
baner = info.content as MovieClip;
this.addChild(baner);
var preloader:MovieClip = getChildByName('preloader') as MovieClip;
removeChild(preloader);
} // End of Function
В кратце:
Функция грузит муви-клип, в зависимости от номера текущей новости.
Проблема:
Мувиклипв весят по пол-метра, там всякая красота... Не успевают подгрузиться, потом накладываються друг на друга, при срабатывании loadInit, т.к. чайлд не ремувиться. И еще достаточного косяков... На первый взгляд все довольно громоздко, но
Суть вопроса:
Подскажите может что нибудь другое послушать надо?
Или киньте код, где подобная штука реализована.
Смысл всего этого:
Хочу сделать страничку, где баннер будет показываться в зависимости от текущей новости, а если он еще не подгрузился достаточно, то отображаеться предидущий. При рассмотрении вопроса прошу вас обратить внимание на размеры баннеров 500кб - 1000 кб. И принять во внимание, что их может быть и 100 и 200 и 100000000000.
Вот, пока писал эту лабуду, вроде и решение оформилось. Счас
попробую и выложу резальт если получиться. Жду ваших ответов.
:mad:
|