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

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

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
По умолчанию непонятный глюк с MovieClipLoader()

Здравствуйте.
Суть проблемы в следующем...
Есть галерея, которая динамически исходя из xml-данных грузит из вне картинки, текст, и т.д.
Реализована данная система при помощи MovieClipLoader'а
вот код для конечного клипа который именно производит загрузку:

Код:
stop();
var baseUrl:String = "http://samedomain/gallery/small/";
//************************
loadURL - присваивается при attach'е данного клипа в клип скроллинга
************************//
var loaderListener:Object = new Object();
var imageClip = makeNewImageClip(0, 0);
var imageLoader = new MovieClipLoader();
imageLoader.addListener(loaderListener);
imageLoader.loadClip(baseUrl+loadURL, imageClip.holderClip);
loaderListener.onLoadProgress = function(holderClip:MovieClip, loadedBytes:Number, totalBytes:Number):Void  {
	var progressClip:MovieClip = holderClip._parent.progressClip;
	var percent:Number = Math.round((loadedBytes/totalBytes)*100);
	progressClip.indicatorClip._xscale = percent;
	progressClip.progressText.text = percent+"%";
};
loaderListener.onLoadInit = function(holderClip:MovieClip):Void  {
	_root.gallery.imagesload++;
	holderClip._parent.progressClip._visible = false;
	holderClip._x = 0;
	holderClip._y = 0;
};
function makeNewImageClip(x:Number, y:Number):MovieClip {	
	var depth:Number = this.getNextHighestDepth();
	var imageClip:MovieClip = this.createEmptyMovieClip("imageClip"+depth, depth);
	imageClip.createEmptyMovieClip("holderClip", 1);
	var progressClip:MovieClip = imageClip.createEmptyMovieClip("progressClip", 2);
	progressClip.createEmptyMovieClip("indicatorClip", 1);
	progressClip.createTextField("progressText", 2, 0, 10, 85, 25);
	progressClip.progressText.text = "соединямся";
	progressClip.indicatorClip.lineStyle(0, 0, 0);
	progressClip.indicatorClip.beginFill(0xEEEEEE, 100);
	progressClip.indicatorClip.lineTo(85, 0);
	progressClip.indicatorClip.lineTo(85, 64);
	progressClip.indicatorClip.lineTo(0, 64);
	progressClip.indicatorClip.lineTo(0, 0);
	progressClip.indicatorClip.endFill();
	progressClip._x = 0;
	imageClip._x = 0;
	imageClip._y = 0;
	return imageClip;
}
если я при помощи Alt+Enter запускаю компиляцию в среде разработки, все нормально работает, но если закрыть окно проигрывания, не дождавшись загрузки рисунков до конца (прервать загрузку)... flash - выдает системную ошибку и вылетает...

подскажите пожалуйста, кто сталкивался с такой проблеммой, что я делаю не так?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...


Последний раз редактировалось divinus; 05.05.2007 в 19:52.
Старый 05.05.2007, 19:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Переустанови флеш.

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
__etc, в первую очередь попробовал... не помогает...
а сейчас еще одну проблему нашел... не грузится ничего, если запускать на сайте... (хотя в дебагере системном, из интернета все отлично грузится)
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 05.05.2007, 20:06
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Проверяй, все ли в порядке с секьюрити.

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
__etc, System.security.allowDomain("www.mydomain.ru"); так похоже?
я 5 лет занимаюсь уже флешем... и пример кода я привел - сильно упростив... но проблема именно с MovieClipLoader...
в реальной галерее, есть универсальный класс, для загрузчика контента... любого...
раньше когда все было на классах, все работало как часы... а сейчас мне нужно написать ету фичу не использовав ООП... я сделал так...
1. грузятся данные (там точно проблем нет...)
2. если все ок, компануется клип, в котором по вертикали атачатся клипы-загрузчики... они имеют статичную высоту (зачем, скажу ниже)
3. клип созданный на пред. этапе обрастает вот таким скриптом:
(это система прокрутки, работает как часы)
Код:
stop();
horizontalMoving = false;
distance = 30;
speed = 15;
counter = 0;
speed_copy = speed;
mdirection = false;
autoEase = false;
_root.xpos = this._xmouse;
_root.ypos = this._ymouse;
if (horizontalMoving) {
	if (!contentSize) {
		contentSize = contentClip._width;
	}
} else if (!contentSize) {
	contentSize = contentClip._height;
}
left = mask._x;
right = mask._x+mask._width;
top = mask._y;
bottom = mask._y+mask._height;
function easeContent() {
	xpos = this._xmouse;
	ypos = this._ymouse;
	k = 1;
	if (xpos>left && xpos<right && ypos>top && ypos<bottom || autoEase) {
		if (horizontalMoving) {
			mousePercent = Math.abs(left-xpos)/Math.abs(left-right)-5.000000E-001;
		} else {
			mousePercent = Math.abs(top-ypos)/Math.abs(top-bottom)-5.000000E-001;
		}
		if (autoEase) {
			if (mdirection) {
				mousePercent = 2.000000E-001;
			} else {
				mousePercent = -2.000000E-001;
			}
		}
		if (horizontalMoving) {
			holder = contentClip._x;
			if (holder>left-distance && holder<left) {
				k = Math.abs(left-holder)/distance;
			}
			if (holder+contentSize<right+distance && holder+contentSize>right) {
				k = Math.abs(right-(holder+contentSize))/distance;
			}
		} else {
			holder = contentClip._y;
			if (holder>top-distance && holder<top) {
				k = Math.abs(top-holder)/distance;
			}
			if (holder+contentSize<bottom+distance && holder+contentSize>bottom) {
				k = Math.abs(bottom-(holder+contentSize))/distance;
			}
		}
		if (k>0 && k<1) {
			if (k<1.000000E-001) {
				k = 1.000000E-001;
			}
			speed_copy = k*speed;
		}
		if ((k || horizontalMoving || distance || !horizontalMoving || !k || !distance || !horizontalMoving)) {
			holder = holder-Math.round(mousePercent*speed_copy);
		}
		if (horizontalMoving) {
			if (holder<=left && holder+contentSize>=right) {
				contentClip._x = Math.round(holder);
			}
			if (holder>left-distance/5 && !mdirection || holder+contentSize<right+distance/5 && mdirection) {
				mdirection = !mdirection;
			}
		} else {
			if (holder<=top && holder+contentSize>=bottom) {
				contentClip._y = Math.round(holder);
			}
			if (holder>top-distance/5 && !mdirection || holder+contentSize<bottom+distance/5 && mdirection) {
				mdirection = !mdirection;
			}
		}
	}
}
autoEaseContent = function () {
	if (_root.xpos == this._xmouse && _root.ypos == this._ymouse) {
		if (counter == 120) {
			autoEase = true;
		} else {
			autoEase = false;
			++counter;
		}
	} else {
		autoEase = false;
		counter = 0;
		_root.xpos = this._xmouse;
		_root.ypos = this._ymouse;
	}
};
contentClip.onEnterFrame = function() {
	easeContent();
};
много, знаю... но может пытливый человек и здесь найдет ошибку...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 05.05.2007, 20:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
allowDomain тут не при делах.
Код мне ни о чем не говорит. Проверяй загрузку данных.

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

Регистрация: Sep 2005
Адрес: Snezhinsk, Russia
Сообщений: 367
Отправить сообщение для firsoff с помощью ICQ Отправить сообщение для firsoff с помощью Skype™
экспериментировал - нужно было как то узнать о размере загружаемых файлов без полной загрузки, что то типа теста размеров... Юзал MovieClipLoader, по событию onLoadStart тупо убивал таргет мувик, выскакивала вышеупомянутая проблема, практически один в один, причем иногда работало(!), но только в IDE, если запустить отдельно swf скрипт не работал.
Тоже все перепровал, раз 20 переустанавливал, запускал на другой машине (сначала работало, потом опять глюк). Проблему решил след. образом, по onLoadProgress, убирал листенер, и тупо грузил в таргет мувик - пустышку swf.

Старый 05.05.2007, 21:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Ну начнем с того, что убийством клипа загрузку не остановишь, только накосячишь. Если нужно узнать размер файла, то для этого на сервере должен быть скрипт, это реализующий.

Старый 06.05.2007, 01:49
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 9  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
firsoff, да я согласен с __etc, загрузка идет отдельным потоком и ее убийством клипа - не остановишь... да и потом, мне же всетк надо загрузить полностью картинку, а не только размер ее узнать... поэтому фишка с swf-пустышкой мне не подходит... сам не могу понять в чем проблема... сейчас тестировал снова, ничего не исправлял, при стабильной скорости связи с интернетом 150- kb/sec - все работает хорошо как в IDE так и в интернете (опера)... при 10-15 flesh IDE выдает ошибку и вылетает, и через интернет - вообще загрузка не начинается... даже объекты не создаются...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 06.05.2007, 02:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Это какой-то локальный глюк, я таких не видел никогда.

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

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

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


 


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


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