![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Квач
Регистрация: 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, время: 14:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|