Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Проблемы при подключении flexlib. Какой-то конфликт. (http://www.flasher.ru/forum/showthread.php?t=141989)

MedvedevA 09.07.2010 16:05

Проблемы при подключении flexlib. Какой-то конфликт.
 
У меня проект(система администрирования) состоит из большого количества файлов SWF. Есть главный файл SWF-mainmenu.swf, где находится главное меню. При выборе пункта меню в главный файл подгружаются другие флешки.

В одной флешке(monitoringUniversal.swf) нужно было использовать дополнительную библиотеку flexlib. Подключил и откомпилировал. Что бы заработало пришлось подключать и к главной флешке(mainmenu.swf) эту библиотеку, по другому отказывалось работать. После подключения к mainmenu.swf во всех остальных флешках(которые грузятся в нее) перестал правильно работать центрирование вложенных окон(PopUpManager.centerPopUp(this); ).

Структура проекта:
Код:

-mainmenu.swf(Чтобы заработал flexlib в monitoringUniversal.swf пришлось подключить flexlib  и сюда)
--monitoringUniversal.swf(Тут использовал flexlib)
--p1.swf(перестало корректно работать центрирование вложенных окон)
--p2.swf(перестало корректно работать центрирование вложенных окон)
--p3.swf(перестало корректно работать центрирование вложенных окон)
--p4.swf(перестало корректно работать центрирование вложенных окон)
--p5.swf(перестало корректно работать центрирование вложенных окон)

Вопросы:
1)Что там может конфликтовать и как решить проблему. Может как то пути прописать?
2)Почему в monitoringUniversal.swf не работают компоненты flexlib, до тех пор пока я библиотеку не подключу в mainmenu.swf?

wvxvw 09.07.2010 16:35

"Только ветер вам на это ответит" (цитата из какой-то песни :) )
в этой библиотеке куча всего, и никто не знает, что именно вы от туда использовали, да и качество этой библиотеки весьма сомнительно даже по сравнению с флексовым фреймворком в целом... Почему так подключается - компилируйте с -link-report и смотрите кто и от чего зависит... дело это не легкое, но вряд ли вам кто-то что-то более внятное посоветует.

MedvedevA 09.07.2010 16:48

Цитата:

Сообщение от wvxvw (Сообщение 921062)
"Только ветер вам на это ответит" (цитата из какой-то песни :) )
в этой библиотеке куча всего, и никто не знает, что именно вы от туда использовали, да и качество этой библиотеки весьма сомнительно даже по сравнению с флексовым фреймворком в целом... Почему так подключается - компилируйте с -link-report и смотрите кто и от чего зависит... дело это не легкое, но вряд ли вам кто-то что-то более внятное посоветует.

Использую только SuperTabBar в monitoringUniversal.swf... Больше вообще ничего и нигде :(

Но почему все таки обязательео нужно подключать библиотеку к главному файлу, хоть она там вообще не используется? :( По другому в подгружаемой флешке отказывается работать(отя там библиотека тоже подключена). Это как то можно обойти, чтобы подключить только к подгружаемой флешке?
Тогда проблема отпадёт сама собой.:(

wvxvw 09.07.2010 17:20

Цитата:

Но почему все таки обязательео нужно подключать библиотеку к главному файлу, хоть она там вообще не используется?
---->
Цитата:

Почему так подключается - компилируйте с -link-report и смотрите кто и от чего зависит... дело это не легкое, но вряд ли вам кто-то что-то более внятное посоветует.

alexberkut 09.07.2010 19:26

Вопрос, ты скомпиленную либу как подключаешь?

1. merge into code
2. external library
3. RSL
?

MedvedevA 10.07.2010 00:06

Цитата:

Сообщение от alexberkut (Сообщение 921136)
Вопрос, ты скомпиленную либу как подключаешь?

1. merge into code
2. external library
3. RSL
?

Пробовал merge into code и RSL.

alexberkut 12.07.2010 11:00

Если ты пробовал merge into code, то у тебя будет проблема в 99% случаев.
Допустим у тебя есть 2 swf и в каждой стоит merge into code. В таком случае один и тот же класс будет вкомпиливаться в каждую swf. Это и преведет потом к ошибке что класс не совпадает сам с собой (на самом деле это 2 инстанса одного класса).

Если же ты в обоих (именно в обоих) случаях используеь RSL то проблем не будет, т.е. классы вообще вкомпиливаться не будут и на рантайме при попытке обратиться к данному классу плеер просто подгрузит RSL по указанному адрессу и поднимит класс.
Если же ты в одной swf укажешь merge into code, а во второй RSL. То проблема опять же будет (см абзац выше).

Ты уверен что ты везде пробовал RSL? И что дебаг говорит? В трейсе есть какие-нибудь ошибки... Они должны быть.

MedvedevA 13.07.2010 13:28

Цитата:

Сообщение от alexberkut (Сообщение 921528)
Если ты пробовал merge into code, то у тебя будет проблема в 99% случаев.
Допустим у тебя есть 2 swf и в каждой стоит merge into code. В таком случае один и тот же класс будет вкомпиливаться в каждую swf. Это и преведет потом к ошибке что класс не совпадает сам с собой (на самом деле это 2 инстанса одного класса).

Если же ты в обоих (именно в обоих) случаях используеь RSL то проблем не будет, т.е. классы вообще вкомпиливаться не будут и на рантайме при попытке обратиться к данному классу плеер просто подгрузит RSL по указанному адрессу и поднимит класс.
Если же ты в одной swf укажешь merge into code, а во второй RSL. То проблема опять же будет (см абзац выше).

Ты уверен что ты везде пробовал RSL? И что дебаг говорит? В трейсе есть какие-нибудь ошибки... Они должны быть.

Пробовал так и так. Ничего не влияет. Критичных Ошибок нету у меня.
Проблема только в том что перестало корретно работать функция PopUpManager.centerPopUp(this); Других проблем вообще нету. Тут большой проект и много вложенных окон. И даже такая мелочь это не очень хорошо. Других проблем кроме не правильной работы centerPopUp во всем большом проекте нету.

Обнаружил такую вещь. Так как определение centerPopUp находится в классе sdks\3.0.0\frameworks\projects\framework\src\mx\managers\PopUpManagerImpl.as вместо библиотеке framework.swc подключил исходники sdks\3.0.0\frameworks\projects\framework\ по методу http://www.brightworks.com/flex_ability/?p=99 И функция centerPopUp нормально заработала вместе с Flexlib.

Как с таким бороться вообще не понимаю. Не успевает что инициализироваться?! Может кто-нибудь зацепку подскажет какую-нибудь?

alexberkut 13.07.2010 13:32

Судя по тому что ты написал, проблемы с flexlib нет, тк у тебя всё грузить и показывается.

Код AS3:

PopUpManager.centerPopUp(this);

this - это что? Это должен быть контейнер относительно которого центрировать.


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

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