![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Создаю пустой MovieClip, загружаю туда картинку:
public function loadImg():Void {
this.createEmptyMovieClip("empty_mc",1);
this["empty_mc"].loadMovie(this._name+".jpg");
trace(this["empty_mc"]._width);
}
Вопрос - как узнать размер картинки? (нужно чтобы расположить её по центру родительского мувиклипа - может есть способ проще?) Вопрос 2 - если файла this._name+".jpg" не существует в Output вылетает сообщение об этом - можно ли как-то это сообщение поймать-отследить? |
|
|||||
|
ветеран форума
|
Я так понимаю это кусочек класса...
Вы пытаетесь узнать размеры клипа когда он еще не успел загрузится, поэтому и 0 выводится в трейсе. Иными словами если Вы пишете trace(...) сразу после loadMovie() это не значит что трейс выполнится после отработки этой функции... так уж устроен as (асинхронное выполнение кода). Т.е Вам нужно сначала убедится что картинка загрузилась, а потом проводить с ней какие-либо манипуляции. Сделать это можно используя класс MovieClipLoader, у него есть событие onLoadInit, которое срабатывает после загрузки контента, собственно в функции обработчике этого события и нужно узнавать ширину мувика. Вот пример использования этого класса // создаем экземпляр MovieClipLoader
var mclLoader:MovieClipLoader = new MovieClipLoader();
// слушатель загрузки картинок
var oLoadListener:Object = new Object();
// вешаем слушатель к MovieClipLoader
mclLoader.addListener(oLoadListener);
// обрабатываем ошибки возникающие при загрузке
function onLoadError(mcTarget:MovieClip, sErrorCode:String):Void
{
if (sErrorCode == "URLNotFound")
{
// если файл не найден, то о чем Вы спрашивали
trace("ERROR: File not found.");
// или можно алерт выдать какой нибудь
}
else if (sErrorCode == "LoadNeverCompleted")
{
trace("ERROR: Load failed.");
}
else {
trace("Load error: " + sErrorCode);
}
}
// это функция выполнится когда начнется загрузка изображения
oLoadListener.onLoadStart = function(mcTarget:MovieClip):Void
{
// тута код если чтото нужно делать при старте загрузки картинки
// например отобразить прелоадер или еще каку нить х...ню
trace("началась загрузка " + mcTarget);
};
// эта выполняется регулярно пока изображение не загрузится
oLoadListener.onLoadProgress = function(mcTarget:MovieClip, nBytesLoaded:Number, nBytesTotal:Number):Void
{
// тута код для прелоадера на картинку
trace(Math.round((nBytesLoaded / nBytesTotal) * 100 + " %" + mcTarget + "загружено");
};
// эта выполнится после полной загрузки картинки
oLoadListener.onLoadComplete = function(mcTarget:MovieClip):Void
{
trace("закончилась загрузка " + mcTarget);
// вот тут узнаем ширину загруженной картинки
trace("И его ширина: " + mcTarget._width);
};
// тут код загрузки картинки или swf файла
// mcHolder - клип-контейнер в котором создается пустой мувик
// и в него уже загружается что-либо
mcHolder.createEmptyMovieClip("mcImage", mcHolder.getNextHighestDepth());
// загружаем что-либо
mclLoader.loadClip("имя_фала.ршр", mcHolder.mcImage);
Есть еще вариант - создаете свое консольное окно (сами рисуете окошко с текстовым полем) в которое пишете вместо трейсов всю необходимую инфу, назначаете на сочетание клаввиш вызов этого окна, и смотрите то что сами туда выводите. Так же существует аддон FireBug под FireFox, замечательный отладочный инструмент, в его консоль тоже можно выводить отладочную инфу из флеша, причем с возможностями поболее флешевого трейса, но для Вас думаю самым приемлимымм будет первый вариант.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 13.10.2008 в 05:23. |
|
|||||
|
Вот это да! Спасибо большое - всё предельно понятно! Проблема исчерпана %))
|
|
|||||
|
Интересно, когда мы что-либо загружаем в пустой мувиклип, его размер подстраивается под размер содержимого? Похоже нет, т.к. эта фукция
oLoadListener.onLoadComplete = function(mcTarget:MovieClip):Void
{
trace("закончилась загрузка " + mcTarget);
// вот тут узнаем ширину загруженной картинки
trace("И его ширина: " + mcTarget._width);
};
А как сделать, чтобы ширина мувиклипа была такая же как ширина картинки? Или как узнать ширину картинки? |
|
|||||
|
ветеран форума
|
Размер пустого мувика подстраивается под размеры загруженного в него контента,
просто нужно узнавать ширину и вообще какие либо манипуляции с клипом в событии onLoadInit, ниже исправленный код (там и несколько грамматических/синтаксических ошибочек было) // создаем экземпляр MovieClipLoader
var mclLoader:MovieClipLoader = new MovieClipLoader();
// слушатель загрузки картинок
var oLoadListener:Object = new Object();
// вешаем слушатель к MovieClipLoader
mclLoader.addListener(oLoadListener);
// обрабатываем ошибки возникающие при загрузке
function onLoadError(mcTarget:MovieClip, sErrorCode:String):Void
{
if (sErrorCode == "URLNotFound")
{
// если файл не найден, то о чем Вы спрашивали
trace("ERROR: File not found.");
// или можно алерт выдать какой нибудь
}
else if (sErrorCode == "LoadNeverCompleted")
{
trace("ERROR: Load failed.");
}
else {
trace("Load error: " + sErrorCode);
}
}
// это функция выполнится когда начнется загрузка изображения
oLoadListener.onLoadStart = function(mcTarget:MovieClip):Void
{
// тута код если чтото нужно делать при старте загрузки картинки
// например отобразить прелоадер или еще каку нить х...ню
trace("началась загрузка " + mcTarget);
};
// эта выполняется регулярно пока изображение не загрузится
oLoadListener.onLoadProgress = function(mcTarget:MovieClip, nBytesLoaded:Number, nBytesTotal:Number):Void
{
// тута код для прелоадера на картинку
trace(Math.round(nBytesLoaded / nBytesTotal * 100) + " %" + mcTarget + "загружено");
};
// эта выполнится после полной загрузки картинки
oLoadListener.onLoadInit = function(mcTarget:MovieClip):Void
{
trace("закончилась загрузка " + mcTarget);
// вот тут узнаем ширину загруженной картинки
trace("И его ширина: " + mcTarget._width);
};
// тут код загрузки картинки или swf файла
// mcHolder - клип-контейнер в котором создается пустой мувик
// и в него уже загружается что-либо
mcHolder.createEmptyMovieClip("mcImage", mcHolder.getNextHighestDepth());
// загружаем что-либо
mclLoader.loadClip("имя_фала.ршр", mcHolder.mcImage);
Если нужно грузить сразу в пустой мувик который создаете, то нужно подправить место загрузки примерное так:
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 23.10.2008 в 15:03. |
|
|||||
|
Guest
Сообщений: n/a
|
А можно ли как-нибудь отловить событие полной загрузки мувика если используется функция attachMovie()? А то в "аттачиваемом" мувике хранятся переменные для его дальнейшей настройки, но в нужный момент времени они еще не загружены
. Если кто знает, помогите пожалуйста. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Метод attachMovie не загружает мувиклип, он берет символ из библиотеки. И до первого применения, узнать переменные внутри символа нельзя.
Можно присвоить этому символу класс, и указать данные как статические свойства класса, тогда их можно будет использовать в любой момент. |
|
|||||
|
Guest
Сообщений: n/a
|
Ух ты! отправил сообщение в полпервого ночи, и через 10 минут уже получил ответ!!! Причем очень нужный!!! Спасибо большое!
Цитата:
.Цитата:
//в одном из кадров мувика ("х") var Des = {count:7}; //указывает на то, сколько еще нужно добавить мувиков //в коде добавления мувиков CountSize = 1; // в самом начале известно что нужно добавить как минимум один мувик for (var i = 0; i<CountSize; ++i){ var newName:String = eval("obj")+i; //имя для добавляемого элемента place.attachMovie(eval("obj"), newName, i+spec_depth, eval("obj")); //вставляем элемент в указанное место if(CountSize == 1){ //если количество мувиков еще не известно, узнать его place[newName].gotoAndStop("х"); //перевод мувика на заданный кадр CountSize =i+place[newName].Des.count; // !!!!undefined!!!! } //другие операции } . Наверное потому, что в качестве "применения" выступает именно onPress, а не функции им вызываемые.Последний раз редактировалось Xero201; 07.12.2008 в 15:55. |
|
|||||
|
Guest
Сообщений: n/a
|
Что, ребята, неужели никто не знает как имитировать нажатие кнопки?-(
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 8
|
А как можно загрузить несколько изображений в цикле что бы все показывались? а то у меня получаеться что только один показывает (последний)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|