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

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

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

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Question onLoadProgress можно ли сделать что-то подобное

Хотел сделать прерывание одной загрузки и начало другой как-то так:
Код AS1/AS2:
mcListener.onLoadProgress = function(pic_temp, bytesLoaded:Number, bytesTotal:Number) 
{
	if(flag == false) // Если нажата кнопка - запускаем загрузку линии
	{ 
		mcLoader.unloadClip(pic_way_main,pic_temp);
		removeMovieClip(line_inter["picture_inter"+f_i+f_j]);
		flag = true;
		if(currentBtn_tri < txt_inter.length)
		{
			load_line(pictures_interior["line_inter"+currentBtn_tri],currentBtn_tri,1); 
		}
		if((currentBtn_tri >= txt_inter.length)&&(currentBtn_tri < txt_inter.length+txt_arc.length))
		{
			load_line(pictures_architecture["line_arc"+(currentBtn_tri-txt_inter.length)],(currentBtn_tri-txt_inter.length),1); 
		}
	}
}
Вопросс такой.. если сделать чтоб по энтер фрейм проверялся флаг в onLoadProgress и в нем прерывалась загрузка(без запуска функций в if) это сильно криво будет работать? Да и вообще можно ли внутри onLpadProgress анлодить клип..


Последний раз редактировалось FriOne; 26.08.2010 в 00:30.
Старый 26.08.2010, 15:26
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS1/AS2:
delete mcListener.onLoadProgress;
mcLoader.unloadClip - не причем. Он разгружает клип, тоесть удаляет ТО что БЫЛО загружено, а не то что грузится в данный момент

Старый 26.08.2010, 23:26
FriOne вне форума Посмотреть профиль Отправить личное сообщение для FriOne Найти все сообщения от FriOne
  № 3  
Ответить с цитированием
FriOne
 
Аватар для FriOne

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Спасибо! Трудно найти о MCL что-то, а это как раз то что надо.

Добавлено через 1 минуту
А можно ли как-нибудь обратиться к слушателю, если он создается внутри функции?

Старый 26.08.2010, 23:51
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
покажите пример

Старый 26.08.2010, 23:59
FriOne вне форума Посмотреть профиль Отправить личное сообщение для FriOne Найти все сообщения от FriOne
  № 5  
Ответить с цитированием
FriOne
 
Аватар для FriOne

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
ну например вот так:
Код AS1/AS2:
function loadPic(i:Number) 
{
	if(i < pics_rand_count)
	{
		preload_process += preload_line_length;
		line_progress.lineTo(preload_process,0);
		var rand:MovieClip = pictures_rand.createEmptyMovieClip("rand"+i, i);
		if(i != 0){rand._x -= 600;} 
		var pic:String = "images/random/"+rand_folder+"/"+(i+1)+".jpg";
 
		var picr:MovieClip = rand.createEmptyMovieClip("picr", 0);
		var mcLoader:MovieClipLoader = new MovieClipLoader();
		var mcListener:Object = new Object();
		mcLoader.addListener(mcListener);
		mcListener.onLoadInit = function(picr)
		{
			var bitmap_temp:BitmapData = new BitmapData(picr._width, picr._height, true, 0);
			bitmap_temp.draw(picr);
			rand.attachBitmap(bitmap_temp,0,"auto",true);
			picr.removeMovieClip();
			loadPic(i+1);
		}
		mcLoader.loadClip(pic,picr);
	}
	else
	{
		loadPic_interior(0); // Здесь можно не смотреть, запуск следующей загрузки
	}
}
А если сделать так, после приведенного выше кода без рекурсии:
Код AS1/AS2:
var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcLoader.addListener(mcListener);
(То есть если создать лоадер с таким же именем и на него повесить загрузку)
То загрузка которая шла до этого прекратится?

Старый 27.08.2010, 03:43
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
вы понимаете что new Значит НОВЫЙ. тоесть создав объекты за функцией. вы их привяжите раз и навсегда. А если вы создаете их в функции и каждый раз ВЫЗЫВАЕТЕ из функции то создаются каждый раз новые объекты. Ок - раз это понятно, то непонятно видимо другое. - Загрузка сама по себе, после того как она началась, является уже не флешовой так сказать. Если вы удалите обработчики ничего не произойдет толком. Тоесть пример выше с delete удалит обработчик, но не остановит загрузку.
Методика :
Start = container._visible = 0
Progress = ...
Complete = ...
Init = container._visible = 1
Далее, по нажатию на кнопку. юзаем некую функцию, типа if(!deleted) где про веряем если мы собираемся удалить клип, то в Init ставим false на видимость, и запускаем новую загрузку на контейнер. Далее, уже второй раз на >95% например загруженных, меняем deleted = true. Как то так. геморно...

Добавлено через 4 минуты
А вообще конечно напишите, зачем оно вам нужно такое?!!! Что в итоге? может какие то альт решения есть. Мне за всю историю производства на флеше, такая система была нужна только 1 раз. Когда я делал скейловый вьювер. При нажатии на кнопку вылезало окно ( некоторых размеров) в которое автоматом грузился некто JPП. и если пользователь не дожидался загрузки и закрывал окно, загрузка все равно продолжалась и в итоге не с того ни с сего появлялась картинка))) Только через видимость и побороть смог. костыль, конечно, но выход каждый ищет сам. Кстати пока писал. идейно можете сделать свой код классом или пофиг впринципе, и аттачить каждый раз контейнер куда грузим, а потом его ремувить и заново аттачить и грузить новое. как вариант

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

Регистрация: Oct 2009
Сообщений: 101
хотелось бы уточнить по теме:
у флеша нет прямой возможности прервать загрузку 5мб рисунка, кроме как перезагрузить страницу с флешем?
а загрузка новой картинки в старую переменную и старый контейнер (клип) обрывает предыдущую?

Старый 27.08.2010, 13:51
FriOne вне форума Посмотреть профиль Отправить личное сообщение для FriOne Найти все сообщения от FriOne
  № 8  
Ответить с цитированием
FriOne
 
Аватар для FriOne

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Гуд, спасибо за объяснение, плохо, что нельзя, ну да ладно..
У меня все маской сделано на главный контейнер,так что с этим нет проблем) , вообще бы похорошему запомоинать битмапы и аттачить их только в нужный момент, но что-то не охота пока переделывать.

Добавлено через 5 часов 27 минут
P.S. хотел сделать это, чтобы загрузить немеренное количество картинок, но по нажатию кнопки хотел прервать и начать загрузку ток одной линии картинок..

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

Теги
onLoadProgress

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

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


 


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


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