Просмотр полной версии : Свойства 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 и т.д. Заранее огромнейшее спасибо.
выдает ошибку.
Телепаты в отпуске. Какую ошибку выдает?
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()
LoaderInfo не является DisplayObject-ом.
Musatoff
30.09.2009, 11:17
это я понимаю, но как выйти на его родителя, то есть на тот DisplayObject, в который он грузит картинку? просто листенер, добавляется именно на него(на лоадер), а как применить функцию к его контейнеру-родителю незнаю. Все было бы просто если бы контейнер был один, но они добавляются в цикле...
У LoaderInfo есть ссылка и на content и на loader.
Musatoff
30.09.2009, 15:24
etc, Спасибо, конечно, я очень благодарен за помошь, но, есть одно но. Я понимаю что у LoaderInfo должно быть что-то, но если сделать event.targer.parent в функции ShowThumb и showProgress, то он ни в какую не хочет. Та же ошибка.
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 то как к ним доступ получить, в данный момент для меня очень актуально
Это я уже понял. но вопрос, в том как выйти на 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"?? и где он пользуется? не могу найти.
Допетрили, не прошло и суток.
Musatoff
30.09.2009, 23:25
спасибо, за добрые слова, etc...
Меня очень огорчает тот факт, что словесное описание нифига не было понятно, хотя оно прозрачно и понятно до невозможности. Это говорит о том, что никакого понимания сути происходящего у вопрошающих нет вовсе.
Musatoff
30.09.2009, 23:59
Понимаешь etc, идея в том, что я сразу понял, что лоадер этот лоадер, но то что мне ответил добрый человек, это не суть происходящего, по крайне мере для меня, может потому что я незнаю что такое "as" или незнаю основ, поэтому и спросил.
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"});
}
Не подскажите что можно сделать?
Зачем обращение к loader.parent?
Musatoff
01.10.2009, 00:32
разницы в принципе нету, можно и просто к лоадер, но ситуация повторяется.
Я не понял ситуации. И разница существенная.
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"});
}
}
Но в результате, твин срабатывает только на нескольких картинках, как я понял, которые загрузились последними.
и еще, он срабатывает с некоторыми если сделать симуляцию загрузки, а если ее не делать то одновременно со всеми а не по факту загрузки
Объясните, нахрена вы двигаете контейнер лоадера?
Musatoff
01.10.2009, 00:43
разницы нет, ситуация одинаковая даже если не писать parent, у меня он просто там остался, я его не убирал.
Значит у вас либо не происходит 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"});
}
Не подскажите что можно сделать?
что то какая то жесть, зачем так грамостко код писать, в переменную не лучше объект вынести а потом уж его вертеть,
ну так задайте условие по которой у вас будет выборочное действие ваше выполняться
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.