Вход

Просмотр полной версии : AS + XML + Loader


DeT
10.09.2007, 23:34
проблема с получением ссылки на созданный объект класса Loader

Вот код:
var matx = 5;
//Кол-во фотографий по вертикали
var maty = 5;
//Ширина превью
var prew = 75;
//Высота превью
var preh = 75;

var g_xml = new XML();
g_xml.ignoreWhite=true;
System.useCodepage = true;

g_xml.onLoad = onLoadXML;
g_xml.load('items.xml');

function onLoadXML(success:Boolean):Void
{
if(success){

/*
Итак, тут будут распологаться описания тегов и их аттрибутов(+ предназначение).
--- <foto name='' href=''> - Главный тег, отвечающий за фотографию.
name - уникальное имя, href - ссылка
*/
var firstN:XMLNode = g_xml.firstChild;
var nCount:Number = firstN.childNodes.length;
var mcArray:Array = [];

for(var i=0;i<nCount and i<(matx*maty);i++)
{
if(firstN.childNodes[i].nodeName=='foto'){
_root.createClassObject(mx.controls.Loader, "l"+i, i+1000);
mcArray.push(_root["l"+i]);
trace(mcArray[i]);
//mcArray[i].loadMovie(mcArray[i].loadMovie(firstN.childNodes[i].attributes.href,firstN.childNodes[i].attributes.name) );
}//if
} // for

}
}

Единственный глюк в том что нельзя обратится к созданному объекту. помогите кто может

udaaff
10.09.2007, 23:47
А где вы пытаетесь к нему обратится?

DeT
10.09.2007, 23:54
mcArray.push(_root["l"+i]);
это интуитивная запись,т.к. не знаю как получить ссылку на сзданный объект,ибо ф-ия не возращает ничего

udaaff
11.09.2007, 00:08
Попробуйте эту строчку mcArray.push(_root["l"+i]); заменить на эту mcArray[i] = _root["l"+i].

CorC
11.09.2007, 10:51
mcArray.push(_root["l"+i]);
это интуитивная запись,т.к. не знаю как получить ссылку на сзданный объект,ибо ф-ия не возращает ничего
Help:
Returns
A UIObject object that is an instance of the specified class.

c push тоже верно.
Еще меня _root смущает спереди у create

udaaff
11.09.2007, 12:16
CorC, push у него идет в условном операторе, поэтому мувик, теоретически, не всегда будет добавляться в массив, поэтому дальше при обращении mcArray[i], если к примеру хотя-бы в одной итерации, не было добавлено мувика в массив, будет возвращаться undefined.

DeT
11.09.2007, 14:26
2udaff, Кажется нет, вроде как(я не могу в AS утверждать ничего на 100%) пушится в первый незаполненный жэлемент,т.е. в верх.
=> если вы пропускаем то ничего не теряется, а обращение через mcArray[i] = _root["l"+i] Наоборот даст пустые элементы.


HELP:
Usage:
componentInstance.createClassObject(className, instanceName, depth, initObject)

как видите return'a нету.

udaaff
11.09.2007, 15:50
В этой стоке trace(mcArray[i]) вы обращаетесь к элементу по номеру i, и если, допустим, в массив добавлено лишь 3 элемента (при помощи метода push), а у вас идет пятая итерация, т.е. i == 4, получается, что вы обращаетесь к пятому элементу массива, а их только три.

PS: usage - это использование, а не return, про возвращаемый результат, написано далее, собственно, то, что и написал CorC:
Returns
A UIObject object that is an instance of the specified class.

DeT
11.09.2007, 16:20
я по прежнему не понимаю кое-чего :(
если все вышенаписанное мной верно(кропе trace'a , но это тоже верно, ибо проверка пока-что всегда выполняется) то мне нужно редактировать св-ва созданного лодера, а конкретно X Y WIDTH и HEIGHT.
не подскажете. ?
trace(_root["l"+i]); не помогает, там выводит андефайнд.

Kikasso
11.09.2007, 16:43
А этот Loader в библиотеке-то есть? Попробуйте:
mcArray.push(_root.createClassObject(mx.controls.Loader, "l"+i, i+1000));
А потом, вне цикла, потрейсить весь массив.
..или вообще так:trace(_root.createClassObject(mx.controls.Loader, "l"+i, i+1000));

И да, useCodePage уберите, а xml сохраните как utf-8

DeT
11.09.2007, 23:26
xml грузится оплностью.
что делает useCodePage ?
трейс выводит андефайнд.

Не могли бы вы сделать пример, с подгружением картинок(скажем 4) и изменением высоты ширина на скажем 100

Kikasso
12.09.2007, 00:45
В библиотеке компонент есть?

CorC
12.09.2007, 10:30
что делает useCodePage ?
Используйте в ХМЛ utf-8 и не морочтесь с CodePage...
Не могли бы вы сделать пример, с подгружением картинок
Ищите по поиску галлереи, там добрая половина это делает, и не только...

DeT
12.09.2007, 14:43
Угумс. проблему мб по другому решу. Всем спасибо