![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
2 edo:
Ок. Следующий пример. Код: var movieBaseName:String = "resources/r";
var movieExtension:String = "jpg";
var currentMovie:Number = 1;
var moviesNumber:Number = 9;
var movieContainerClipBaseName:String = "movie";
var progressTextName:String = "progress";
var left:Number = 100;
var top:Number = 100;
var movieWidth:Number = 60;
var movieHeight:Number = 60;
var progressTextWidth:Number = 40;
var progressTextHeight:Number = 20;
var progressTextFont:String = "_sans";
var progressTextColor:Number = 0xffffff;
var progressTextSize:Number = 14;
var loading:Boolean = false;
var clipsLoader:MovieClipLoader = new MovieClipLoader();
var clipsLoaderListener:Object = new Object();
clipsLoaderListener.onLoadStart = function(targetClip:MovieClip)
{
loading = true;
targetClip._parent.createTextField(progressTextName, targetClip._parent.getNextHighestDepth(), targetClip._x + (movieWidth - progressTextWidth) / 2, targetClip._y + (movieHeight - progressTextHeight) / 2, progressTextWidth, progressTextHeight);
var progressTextFormat:TextFormat = new TextFormat();
progressTextFormat.font = progressTextFont;
progressTextFormat.size = progressTextSize;
progressTextFormat.color = progressTextColor;
targetClip._parent[progressTextName].setNewTextFormat(progressTextFormat);
}
clipsLoaderListener.onLoadComplete = function(targetClip:MovieClip)
{
targetClip._parent[progressTextName].removeTextField();
var previousMovie:Number = (currentMovie == 1 ? 9 : currentMovie - 1);
var previousMovieClipName:String = movieContainerClipBaseName + previousMovie;
clipsLoader.unloadClip(targetClip._parent[previousMovieClipName]);
targetClip._parent[previousMovieClipName].removeMovieClip();
loading = false;
}
clipsLoaderListener.onLoadError = function(targetClip:MovieClip, errorCode:String)
{
targetClip.removeMovieClip();
loadNextMovie();
}
clipsLoaderListener.onLoadProgress = function(targetClip:MovieClip, loadedBytes:Number, totalBytes:Number)
{
var percent:Number = Math.ceil((loadedBytes / totalBytes) * 100);
var progressTextField:TextField = targetClip._parent[progressTextName];
progressTextField._x = targetClip._x + (movieWidth - progressTextField.textWidth) / 2;
progressTextField._y = targetClip._y + (movieHeight - progressTextField.textHeight) / 2
progressTextField.text = percent + "%";
}
function loadNewMovie(movieNumber:Number)
{
var movieName:String = movieBaseName + movieNumber + "." + movieExtension;
var movieContainerClipName:String = movieContainerClipBaseName + movieNumber;
var containerClip:MovieClip = this.createEmptyMovieClip(movieContainerClipName, this.getNextHighestDepth());
containerClip._x = left;
containerClip._y = top;
clipsLoader.loadClip(movieName, containerClip);
}
function loadNextMovie()
{
currentMovie++;
if (currentMovie > moviesNumber)
{
currentMovie = 1;
}
loadNewMovie(currentMovie);
}
function createRectangleMovieClip(newName:String, parentClip:MovieClip, parentClipDepth:Number, newX:Number, newY:Number, newWidth:Number, newHeight:Number, newColor:Number, newAlpha:Number):MovieClip
{
var newClip:MovieClip = parentClip.createEmptyMovieClip(newName, parentClipDepth);
newClip.beginFill(newColor);
newClip.moveTo(0, 0);
newClip.lineTo(newWidth, 0);
newClip.lineTo(newWidth, newHeight);
newClip.lineTo(0, newHeight);
newClip.lineTo(0, 0);
newClip.endFill();
newClip._x = newX;
newClip._y = newY;
newClip._alpha = newAlpha;
return newClip;
}
clipsLoader.addListener(clipsLoaderListener);
loadNewMovie(currentMovie);
var nextButton = createRectangleMovieClip("clip", this, this.getNextHighestDepth(), 80, 200, 100, 20, 0xaaaaaa, 100);
nextButton.createTextField("myText", nextButton.getNextHighestDepth(), (nextButton._width - 80) / 2, (nextButton._height - 20) / 2, 80, 20);
nextButton.myText.autoSize = "center";
nextButton.myText.text = "Load Next";
nextButton.myText.color = 0x000000;
nextButton.onRelease = function()
{
if (!loading)
{
loadNextMovie();
}
}
Вопросы?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
|
|||||
|
ух...ужас, это все один большой вопрос))
%) я потом спрошу, когда осознаю все целиком и перерою томик-самоучитель и хелп) |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
2 edo:
Ок, я на досуге постараюсь прокомментировать каждую строчку.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
|
|||||
|
2 Хемуль
я тебе буду очень очень благодарен! ты хороший человек! |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Вот:
// Строка, которая содержит начало пути к файлам загружаемых картинок и // начало имени каждой картинки. К этой строке потом будет прибавляться // номер картинки и расширение, таким образом составляя путь к картинке. var movieBaseName:String = "resources/r"; // Расширение загружаемых картинок. var movieExtension:String = "jpg"; // Переменная, содержащая номер текущей загруженной/загружаемой картинки. var currentMovie:Number = 1; // Общее количество картинок. var moviesNumber:Number = 9; // Имя мувиклипа-контейнера для загружаемой картинки. var movieContainerClipBaseName:String = "movie"; // Имя текстового поля для вывода процентов прогресса загрузки. var progressTextName:String = "progress"; // Абсцисса левого верхнего угла картинки. var left:Number = 100; // Ордината левого верхнего угла картинки. var top:Number = 100; // Ширина загружаемых картинок. var movieWidth:Number = 60; // Высота загружаемых картинок. var movieHeight:Number = 60; // Ширина текстового поля для вывода процентов загрузки. var progressTextWidth:Number = 40; // Высота текстового поля для вывода процентов загрузки. var progressTextHeight:Number = 20; // Цвет шрифта текстового поля для вывода процентов загрузки. var progressTextFont:String = "_sans"; // Цвет шрифта текстового поля для вывода процентов загрузки. var progressTextColor:Number = 0xffffff; // Размер шрифта текстового поля для вывода процентов загрузки. var progressTextSize:Number = 14; // Булева переменная, показывающая, идёт ли сейчас загрузка картинки. var loading:Boolean = false; // Создаём обьект MovieClipLoader для загрузки картинок. var clipsLoader:MovieClipLoader = new MovieClipLoader(); // Создаём listener для созданного обьекта MovieClipLoader. var clipsLoaderListener:Object = new Object(); // Событие, которое вызывается на начало загрузки мувиклипа. clipsLoaderListener.onLoadStart = function(targetClip:MovieClip) { // Устанавливаем значение loading в true, говоря тем самым, // что началась загрузка. loading = true; // Создаём текстовое поле для вывода прогресса загрузки. targetClip._parent.createTextField(progressTextName, targetClip._parent.getNextHighestDepth(), targetClip._x + (movieWidth - progressTextWidth) / 2, targetClip._y + (movieHeight - progressTextHeight) / 2, progressTextWidth, progressTextHeight); // Создаём обьект TextFormat для текстового поля прогресса. var progressTextFormat:TextFormat = new TextFormat(); // Устанавливаем для TextFormat шрифт. progressTextFormat.font = progressTextFont; // Устанавливаем для TextFormat размер шрифта. progressTextFormat.size = progressTextSize; // Устанавливаем для TextFormat цвет. progressTextFormat.color = progressTextColor; // Назначаем текстовому полю новое форматирование. targetClip._parent[progressTextName].setNewTextFormat(progressTextFormat); } // Событие, которое вызывается после окончания загрузки. clipsLoaderListener.onLoadComplete = function(targetClip:MovieClip) { // Удаляем из загруженного мувиклипа текстовое поле прогресса загрузки. targetClip._parent[progressTextName].removeTextField(); // Определяем номер картинки, которая была загружена перед той, // которая загрузилась сейчас. var previousMovie:Number = (currentMovie == 1 ? moviesNumber : currentMovie - 1); // Формируем имя мувиклипа картинки, которая была загружена перед той, // которая загрузилась сейчас. var previousMovieClipName:String = movieContainerClipBaseName + previousMovie; // Удаляем мувиклип картинки, которая была загружена перед той, // которая загрузилась сейчас. targetClip._parent[previousMovieClipName].removeMovieClip(); // Устанавливаем значение loading в false, показывая тем самым, // что загрузка окончена. loading = false; } // Событие, которое вызывается при ошибке загрузки картинки. clipsLoaderListener.onLoadError = function(targetClip:MovieClip, errorCode:String) { // Если возникла ошибка, удаляем пустой мувикли-контейнер, который был // создан для загрузки данной картинки. targetClip.removeMovieClip(); // Переходим к загрузке следующей картинки. loadNextMovie(); } // Событие, которое вызывается во время загрузки картинки. clipsLoaderListener.onLoadProgress = function(targetClip:MovieClip, loadedBytes:Number, totalBytes:Number) { // Определяем проценты прогресса загрузки. var percent:Number = Math.ceil((loadedBytes / totalBytes) * 100); // Получаем ссылку на текстовое поле прогресса загрузки. var progressTextField:TextField = targetClip._parent[progressTextName]; // Выравниваем текстовое поле прогресса горизонтально по центру // относительно мувиклипа-контейнера данной загружаемой картинки. progressTextField._x = targetClip._x + (movieWidth - progressTextField.textWidth) / 2; // Выравниваем текстовое поле прогресса вертикально по центру // относительно мувиклипа-контейнера данной загружаемой картинки. progressTextField._y = targetClip._y + (movieHeight - progressTextField.textHeight) / 2 // Передаём текстовому полю строку с процентами загрузки. progressTextField.text = percent + "%"; } // Функция загрузки новой картинки. // movieNumber - номер новой картинки, которую нужно загрузить. function loadNewMovie(movieNumber:Number) { // Строка с путём и именем файла загружаемой картинки. // Формируется из пути с именем, номера и расширения картинки. var movieName:String = movieBaseName + movieNumber + "." + movieExtension; // Формируем имя нового мувиклипа-контейнера для загружаемой картинки. var movieContainerClipName:String = movieContainerClipBaseName + movieNumber; // Создаём новый мувиклип-контейнер для загружаемой кратинки. var containerClip:MovieClip = this.createEmptyMovieClip(movieContainerClipName, this.getNextHighestDepth()); // Устанавливаем _x для мувиклипа-контейнера загружаемой картинки. containerClip._x = left; // Устанавливаем _y для мувиклипа-контейнера загружаемой картинки. containerClip._y = top; // Начинаем загрузку картинки в созданный мувиклип-контейнер. clipsLoader.loadClip(movieName, containerClip); } // Функция загрузки следующей картинки. function loadNextMovie() { // Инкрементируем номер загружаемой картинки. currentMovie++; // Если номер картинки больше общего количества картинок... if (currentMovie > moviesNumber) { // ...начинаем отсчёт с первой картинки. currentMovie = 1; } // Загружаем новую картинку с текущим номером currentMovie. loadNewMovie(currentMovie); } // Функция создания прямоугольного мувиклипа. Создана для примера. // В последствии используется просто для создания кнопки и к загрузке // картинок отношения не имеет. // ПАРАМЕТРЫ: // newName - имя создаваемого мувиклипа. // parentClip - ссылка на родительский мувиклип, в котором создаётся данный. // parentClipDepth - глубина создаваемого мувиклипа в родительском мувиклипе. // newX - абсцисса создаваемого мувиклипа в родительском. // newY - ордината создаваемого мувиклипа в родительском. // newWidth - ширина создаваемого мувиклипа. // newHeight - высота создаваемого мувиклипа. // newColor - цвет создаваемого мувиклипа. // newAlpha - прозрачность создаваемого мувиклипа. function createRectangleMovieClip(newName:String, parentClip:MovieClip, parentClipDepth:Number, newX:Number, newY:Number, newWidth:Number, newHeight:Number, newColor:Number, newAlpha:Number):MovieClip { // Создаём пустой мувиклип в родительском мувиклипе. var newClip:MovieClip = parentClip.createEmptyMovieClip(newName, parentClipDepth); // Начинаем закраску мувиклипа установленным цветом. newClip.beginFill(newColor); // Двигаем перо в начало координатной сетки. newClip.moveTo(0, 0); // Рисуем верхнюю границу. newClip.lineTo(newWidth, 0); // Рисуем правую границу. newClip.lineTo(newWidth, newHeight); // Рисуем нижнюю границу. newClip.lineTo(0, newHeight); // Рисуем левую границу. newClip.lineTo(0, 0); // Завершаем закраску, получив прямоугольник с установленными размерами. newClip.endFill(); // Передвигаем созданный мувиклип в заданную координату _x. newClip._x = newX; // Передвигаем созданный мувиклип в заданную координату _y. newClip._y = newY; // Задаём созданному мувиклипу установленную прозрачность. newClip._alpha = newAlpha; // Возвращаем ссылку на созданный мувиклип. return newClip; } // Назначаем listener для обьекта MovieClipLoader. clipsLoader.addListener(clipsLoaderListener); // Начинаем загрузку первой картинки, которая будет загружена в начале. loadNewMovie(currentMovie); // Создаём прямоугольный мувиклип для кнопки. var nextButton = createRectangleMovieClip("clip", this, this.getNextHighestDepth(), 80, 200, 100, 20, 0xaaaaaa, 100); // Создаём в прямоугольном мувиклипе текстовое поле. nextButton.createTextField("myText", nextButton.getNextHighestDepth(), (nextButton._width - 80) / 2, (nextButton._height - 20) / 2, 80, 20); // Задаём центрирование текста в текстовом поле. nextButton.myText.autoSize = "center"; // Устанавливаем текст для текстового поля. Это подпись на кнопке. nextButton.myText.text = "Load Next"; // Устанавливаем цвет шрифта в текстовом поле. nextButton.myText.color = 0x000000; // Назначаем для созданной кнопки событие, которое вызывается при нажатии. nextButton.onRelease = function() { // Если сейчас не идёт загрузка картинки... if (!loading) { // ...загружаем следующую картинку. loadNextMovie(); } }
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого Последний раз редактировалось Хемуль; 13.10.2006 в 02:29. |
|
|||||
|
супер! теперь не все так загадочно)))
может еще возникнут вопросики по мелочам, но надеюсь нет. еще раз огромный человеческий сенкс! |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
2 edo:
Пусть лучше возникают. Порой мелочь в последствии оказывается не такой уж мелочью...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|