![]() |
|
||||||||||
|
|||||
|
Здравствуйте.
Суть проблемы в следующем... Есть галерея, которая динамически исходя из 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;
}
подскажите пожалуйста, кто сталкивался с такой проблеммой, что я делаю не так?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... Последний раз редактировалось divinus; 05.05.2007 в 19:52. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Переустанови флеш.
|
|
|||||
|
__etc, в первую очередь попробовал... не помогает...
а сейчас еще одну проблему нашел... не грузится ничего, если запускать на сайте... (хотя в дебагере системном, из интернета все отлично грузится)
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Проверяй, все ли в порядке с секьюрити.
|
|
|||||
|
__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();
};
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
allowDomain тут не при делах.
Код мне ни о чем не говорит. Проверяй загрузку данных. |
|
|||||
|
экспериментировал - нужно было как то узнать о размере загружаемых файлов без полной загрузки, что то типа теста размеров... Юзал MovieClipLoader, по событию onLoadStart тупо убивал таргет мувик, выскакивала вышеупомянутая проблема, практически один в один, причем иногда работало(!), но только в IDE, если запустить отдельно swf скрипт не работал.
Тоже все перепровал, раз 20 переустанавливал, запускал на другой машине (сначала работало, потом опять глюк). Проблему решил след. образом, по onLoadProgress, убирал листенер, и тупо грузил в таргет мувик - пустышку swf. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну начнем с того, что убийством клипа загрузку не остановишь, только накосячишь. Если нужно узнать размер файла, то для этого на сервере должен быть скрипт, это реализующий.
|
|
|||||
|
firsoff, да я согласен с __etc, загрузка идет отдельным потоком и ее убийством клипа - не остановишь... да и потом, мне же всетк надо загрузить полностью картинку, а не только размер ее узнать... поэтому фишка с swf-пустышкой мне не подходит... сам не могу понять в чем проблема... сейчас тестировал снова, ничего не исправлял, при стабильной скорости связи с интернетом 150- kb/sec - все работает хорошо как в IDE так и в интернете (опера)... при 10-15 flesh IDE выдает ошибку и вылетает, и через интернет - вообще загрузка не начинается... даже объекты не создаются...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Это какой-то локальный глюк, я таких не видел никогда.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|