|
|
|||||
Регистрация: Jun 2011
Сообщений: 2
|
Проблемы с Dynamic text
Приветствую всех!
Итак суть проблемы: Есть код ниже(честно взятый из словаря AS2 в качестве примера загрузки изображений), мне необходимо было добавить полосу загрузки к клипу. Полоса вынесена в отдельный клип в библиотеке, в клипе 3 слоя: Dynamic text(loader_txt), клип с полосой(lin), рамка. Клип имеет linkage: loader. Проблема состоит в том, что после выполнения(а оно выполняется, проверял) removeMovieClip(_root.load1); Dynamic text по каким то причинам не удаляется(load1 удаляется) и спустя какое то время(примерно минута) вдруг появляется во всей красе поверх картинки.ЛоадБар нужно именно присоединить(приаттачить) к клипу, другие варианты не нужны.Картинка грузится, все трейсы работают.Так почему текстовое поле не удаляется?(добавленный код выделен). // первый набор listener'ов var my_mcl:MovieClipLoader = new MovieClipLoader(); var myListener:Object = new Object(); myListener.onLoadStart = function(target_mc:MovieClip) { trace("*********First my_mcl instance*********"); trace("Your load has begun on movie clip = " + target_mc); var loadProgress:Object = my_mcl.getProgress(target_mc); trace(loadProgress.bytesLoaded + " = bytes loaded at start"); trace(loadProgress.bytesTotal + " = bytes total at start"); }; myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) { /*---------------------------------------------------------------------------------*/ _root.attachMovie("loader","load1",100,{_x:315, _y:151});//присоединяем бар _root.load1.lin._width = 139 * (loadedBytes / totalBytes);//меняем ширину плосы _root.load1.loader_txt.text = (loadedBytes / totalBytes * 100) + "%";//выводим процент загрузки в поле /*---------------------------------------------------------------------------------*/ trace("*********First my_mcl instance Progress*********"); trace("onLoadProgress() called back on movie clip " + target_mc); trace(loadedBytes + " = bytes loaded at progress callback"); trace(totalBytes + " = bytes total at progress callback"); trace(_root.load1.lin._width); }; myListener.onLoadComplete = function(target_mc:MovieClip) { trace("*********First my_mcl instance*********"); trace("Your load is done on movie clip = " + target_mc); var loadProgress:Object = my_mcl.getProgress(target_mc); trace(loadProgress.bytesLoaded + " = bytes loaded at end"); trace(loadProgress.bytesTotal + " = bytes total at end"); /*---------------------------------------------------------------------------------*/ _root.onEnterFrame = function() { if (_root.load1._alpha != 0) { _root.load1._alpha -= 10; } if (_root.load1._alpha == 0) { removeMovieClip(_root.load1); } }; /*---------------------------------------------------------------------------------*/ }; myListener.onLoadInit = function(target_mc:MovieClip) { trace("*********First my_mcl instance*********"); trace("Movie clip = " + target_mc + " is now initialized"); // теперь можно применять любые установки, например: //target_mc._alpha = 0; }; myListener.onLoadError = function(target_mc:MovieClip, errorCode:String) { trace("*********First my_mcl instance*********"); trace("ERROR CODE = " + errorCode); trace("Your load failed on movie clip = " + target_mc + "\n"); }; my_mcl.addListener(myListener); // загрузим файлы по назначению. // загружаем в мувиклип this.createEmptyMovieClip("clip1_mc",this.getNextHighestDepth()); /*---------------------------------------------------------------------------------*/ clip1_mc._x = 0; my_mcl.loadClip("holl1.jpg",clip1_mc); /*---------------------------------------------------------------------------------*/ |
|
|||||
Приложите исходник. Лучше в CS3
myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) { /*---------------------------------------------------------------------------------*/ _root.attachMovie("loader","load1",100,{_x:315, _y:151});//присоединяем бар На одну и ту же глубину и под одним и тем же именем. Что там в какой момент куда и как у вас удаляется - сказать сложно. Вынесите эту строчку. Так же: Для красоты и удобства onEnterFrame имеет смысл вешать не на руут, а на сам клип. Последний раз редактировалось dark256; 29.06.2011 в 00:04. |
|
|||||
Регистрация: Jun 2011
Сообщений: 2
|
Разобрался - вместо
_root.onEnterFrame = function() { if (_root.load1._alpha != 0) { _root.load1._alpha -= 10; } if (_root.load1._alpha == 0) { removeMovieClip(_root.load1); } }; +вынести аттач в onLoadStart |
|
|||||
Так как при такой записи функция расположена "внутри" load1, является его методом, то при обращении к load1, который собссно владелец данного метода, необязательно явно указывать его имя.
Используйте префикс "this" Соотв. пишем так: Это и удобнее и корректнее. И не забудьте после выполнения условия сделать |
Часовой пояс GMT +4, время: 06:57. |
|
« Предыдущая тема | Следующая тема » |
Теги |
dynamic text , MovieClipLoader() , загрузка |
|
|