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