Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.10.2006, 14:08
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 1  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: 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();
	}
}
Исходник прикрепляю.
Вопросы?
Вложения
Тип файла: zip loadMoviesWithButton.zip (49.8 Кб, 73 просмотров)
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 12.10.2006, 16:21
edo вне форума Посмотреть профиль Отправить личное сообщение для edo Посетить домашнюю страницу edo Найти все сообщения от edo
  № 2  
Ответить с цитированием
edo

Регистрация: Dec 2005
Сообщений: 92
Отправить сообщение для edo с помощью ICQ
ух...ужас, это все один большой вопрос))
%)

я потом спрошу, когда осознаю все целиком и перерою томик-самоучитель и хелп)

Старый 12.10.2006, 16:34
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 3  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 edo:
Ок, я на досуге постараюсь прокомментировать каждую строчку.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 12.10.2006, 18:57
edo вне форума Посмотреть профиль Отправить личное сообщение для edo Посетить домашнюю страницу edo Найти все сообщения от edo
  № 4  
Ответить с цитированием
edo

Регистрация: Dec 2005
Сообщений: 92
Отправить сообщение для edo с помощью ICQ
2 Хемуль
я тебе буду очень очень благодарен!
ты хороший человек!

Старый 13.10.2006, 02:26
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 5  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: 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();
	}
}
Исходник прикрепляю...
Вложения
Тип файла: zip LoadMoviesWithButton(Commented).zip (51.9 Кб, 100 просмотров)
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 13.10.2006 в 02:29.
Старый 13.10.2006, 12:08
edo вне форума Посмотреть профиль Отправить личное сообщение для edo Посетить домашнюю страницу edo Найти все сообщения от edo
  № 6  
Ответить с цитированием
edo

Регистрация: Dec 2005
Сообщений: 92
Отправить сообщение для edo с помощью ICQ
супер! теперь не все так загадочно)))
может еще возникнут вопросики по мелочам, но надеюсь нет.
еще раз огромный человеческий сенкс!

Старый 13.10.2006, 12:14
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 7  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 edo:
Пусть лучше возникают. Порой мелочь в последствии оказывается не такой уж мелочью...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.