PDA

Просмотр полной версии : Свойства Loader


Musatoff
29.09.2009, 18:34
Добрый день всем! Вопрос в следующем:
загружаются рисунки с помощью xml, и встают в линию(как галерея), и потом при нажатии на каждый рисунок появляется этот же рисунок, только немного увеличенный. Просто сделать чтобы он появился - просто. Также там сделан прелоадер(просто проценты) для каждого рисунка. Плюс, хочу сделать отражение на каждый рисунок снизу, но я думаю при решении проблемы основной(далее), все получиться. Код:


function xmlLoaded(event:Event):void{

xml = XML(event.target.data);
xmlList = xml.children().children().children();

imageLoader = new Loader()
imageLoader.load(new URLRequest(xmlList[0].attribute("source")));

addChild(thumbContainer)
thumbContainer.addChild(imageLoader);

imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showThumb);
addChild(thumbContainer)

thumbContainer.addChild(PercentText)
}

function showProgress(event:ProgressEvent):void {
percent = Math.round((event.bytesLoaded / event.bytesTotal )*100 );
PercentText.text = "% " + percent + "";
PercentText.x = 5
PercentText.y = 5
}
function showThumb(event:Event):void {
if (percent >= 99.){
fadeTween2 = new Tween(imageLoader,"alpha",None.easeNone,0,1,.6,true);
imageLoader.x = 10
imageLoader.y = 10
}

Вот, собственно, вопрос: если сделать цикл for, то картинки добавляются но прелоадер к каждой не добавляется. и то же самое если картинка загрузилась, то на нее не получается tween. Если писать в твине event.target:
fadeTween2 = new Tween(event.target,"alpha",None.easeNone,0,1,.6,true);
выдает ошибку.
Когда из этой функции делаю трейс event.target пишет, [object LoaderInfo]. Соответственно если это лоадер то на него не отражение сделать и ни чего другого.
Уже мозг сломал, думая над тем как загрузить много картинок и к каждой сделать свой прелодер и отражение. То есть сделать все картинки в своем MovieClip и т.д. Заранее огромнейшее спасибо.

AL.exe
29.09.2009, 19:36
выдает ошибку.
Телепаты в отпуске. Какую ошибку выдает?

Musatoff
30.09.2009, 01:26
Сорри поправка, то есть проблема в том чтобы выйти из другой функции на родителя infoLoadera, то есть на thumbContainer,
#1069: Property parent not found on flash.display.LoaderInfo and there is no default value.
at MethodInfo-52()

etc
30.09.2009, 01:28
LoaderInfo не является DisplayObject-ом.

Musatoff
30.09.2009, 11:17
это я понимаю, но как выйти на его родителя, то есть на тот DisplayObject, в который он грузит картинку? просто листенер, добавляется именно на него(на лоадер), а как применить функцию к его контейнеру-родителю незнаю. Все было бы просто если бы контейнер был один, но они добавляются в цикле...

etc
30.09.2009, 14:18
У LoaderInfo есть ссылка и на content и на loader.

Musatoff
30.09.2009, 15:24
etc, Спасибо, конечно, я очень благодарен за помошь, но, есть одно но. Я понимаю что у LoaderInfo должно быть что-то, но если сделать event.targer.parent в функции ShowThumb и showProgress, то он ни в какую не хочет. Та же ошибка.

etc
30.09.2009, 15:27
event.target = LoaderInfo в этих обработчиках. У LoaderInfo нет parent.

Musatoff
30.09.2009, 17:06
Это я уже понял. но вопрос, в том как выйти на parenta Loadera, как я писал в предыдущем вопросе. Или если точнее, на клип, в который Лоадер грузит картинку.

random13
30.09.2009, 17:56
У LoaderInfo есть ссылка и на content и на loader.

хмм получается вот так:
если как вы опять же сказали e.target == LoaderInfo

и у LoaderInfo есть ссылка на сontent и loader то как к ним доступ получить, в данный момент для меня очень актуально

Dimax4d
30.09.2009, 18:49
Это я уже понял. но вопрос, в том как выйти на parenta Loadera, как я писал в предыдущем вопросе. Или если точнее, на клип, в который Лоадер грузит картинку.

Loader - это DisplayObject, и картинку он грузит в себя, т.е. сам является контейнером для Bitmap.

random13
30.09.2009, 19:00
хмм получается вот так:
если как вы опять же сказали e.target == LoaderInfo

и у LoaderInfo есть ссылка на сontent и loader то как к ним доступ получить, в данный момент для меня очень актуально

разобрался, нашел в доке все

PgeorgyV
30.09.2009, 19:02
(e.target as LoaderInfo).content
(e.target as LoaderInfo).loader
В случае если грузите swf содержимое as1 или as2, то получаем AVM1Movie, это содержимое незя перемещать в списке отображения, поэтому в этом случае используем (e.target as LoaderInfo).loader
ЗЫ. Надеюсь о том говорю то, тему толком не прочитал

Musatoff
30.09.2009, 23:00
2PgeorgyV: СПАСИБО! СПАСИБО БОЛЬШОЕ!
А не подскажите случайно что значит этот "as"?? и где он пользуется? не могу найти.

etc
30.09.2009, 23:07
Допетрили, не прошло и суток.

Musatoff
30.09.2009, 23:25
спасибо, за добрые слова, etc...

etc
30.09.2009, 23:43
Меня очень огорчает тот факт, что словесное описание нифига не было понятно, хотя оно прозрачно и понятно до невозможности. Это говорит о том, что никакого понимания сути происходящего у вопрошающих нет вовсе.

Musatoff
30.09.2009, 23:59
Понимаешь etc, идея в том, что я сразу понял, что лоадер этот лоадер, но то что мне ответил добрый человек, это не суть происходящего, по крайне мере для меня, может потому что я незнаю что такое "as" или незнаю основ, поэтому и спросил.

etc
01.10.2009, 00:08
PgeorgyV написал ровно тоже самое, что я описал словами, но только кодом. То, что слова не были поняты, а был понят код, как раз и говорит о том, что есть проблемы в понимании основ.

Проще говоря, берем быка за рога, не научившись уворачиваться.

Musatoff
01.10.2009, 00:26
Ладно. спасибо. Ничего что я задам еще вопрос? сейчас сижу, делаю, и не могу разобраться с одной штукой. вот подгрузились картинки и нужно к каждой применить tweener. Это в функции showThumb но применяется только выборочно, а не ко всем.

function showThumb(event:Event):void {
if (percent >= 99.){
Tweener.addTween((event.target as LoaderInfo).loader.parent, {y:100, time:0.5, transition:"elastic"});
}

Не подскажите что можно сделать?

etc
01.10.2009, 00:29
Зачем обращение к loader.parent?

Musatoff
01.10.2009, 00:32
разницы в принципе нету, можно и просто к лоадер, но ситуация повторяется.

etc
01.10.2009, 00:35
Я не понял ситуации. И разница существенная.

Musatoff
01.10.2009, 00:38
сейчас попробую пояснить. есть лоадер, который загружает картинки, на нем есть листенер
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showThumb);
и вот функция:

function showThumb(event:Event):void {
if (percent >= 99.){
Tweener.addTween((event.target as LoaderInfo).loader.parent, {y:100, time:0.5, transition:"elastic"});
}
}
Но в результате, твин срабатывает только на нескольких картинках, как я понял, которые загрузились последними.

и еще, он срабатывает с некоторыми если сделать симуляцию загрузки, а если ее не делать то одновременно со всеми а не по факту загрузки

etc
01.10.2009, 00:41
Объясните, нахрена вы двигаете контейнер лоадера?

Musatoff
01.10.2009, 00:43
разницы нет, ситуация одинаковая даже если не писать parent, у меня он просто там остался, я его не убирал.

etc
01.10.2009, 00:51
Значит у вас либо не происходит COMPLETE, либо вы подписываетесь не там и не у того, что нужно.

Musatoff
01.10.2009, 00:54
хм, а не знаете, как это можно реализовать по другому? просто я думаю что COMPLETE происходит, потому что картинки появляются. У меня есть мысль что tweener просто переписывает сам себя с каждым комплитом.

random13
01.10.2009, 11:56
Ладно. спасибо. Ничего что я задам еще вопрос? сейчас сижу, делаю, и не могу разобраться с одной штукой. вот подгрузились картинки и нужно к каждой применить tweener. Это в функции showThumb но применяется только выборочно, а не ко всем.

function showThumb(event:Event):void {
if (percent >= 99.){
Tweener.addTween((event.target as LoaderInfo).loader.parent, {y:100, time:0.5, transition:"elastic"});
}

Не подскажите что можно сделать?

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

ну так задайте условие по которой у вас будет выборочное действие ваше выполняться