![]() |
standalone фотогалерея с подгрузкой картинок через xml
Тема эта поднималась уже где-то на форуме, но хотелось бы более подробного объяснения затронутого вопроса, желательно на пальцах. К примеру есть папка my_cat, в ней исходник фотогалереи my.fla, папка с картинками images и файл my.xml с описанием структуры галереи. Таким образом, картинки не внедряются в .swf, а подгружаются с помощью .xml. Как правильно прописать пути к картинкам и .xml, чтобы после копмпиляции в Zinc, эти картинки подгружались в экзешник также, как и в .swf? Знаю, есть свойство mdm.Application.path, но не могу разобраться, как его нужно правильно использовать.
|
mdm.Application.path - абсолютный путь к папке, из которой был запущен цинк-ехе. Допустим, "с:\my_cat".
Хмл лежит в той же папке. URL для хмл будет "с:\my_cat\my.xml" или mdm.Application.path + "my.xml". В хмл в пишете < path="images/foto1.jpg" ...>. Путь к картинке mdm.Application.path + "images\\foto1.jpg". Т.е. содержание атрибута path надо добавить к абсолютному пути до рабочей папки. Вообще, может работать и с относительными путями. Но лучше все-таки использовать абсолютные. Для того, чтобы вычислить налету абсолютный путь и предназначен mdm.Application.path. |
Однако, не пойму. Порассуждаем: если в своем исходнике я имею такую переменную,
Код:
var myXml:String="my.xml";Код:
sourceXML = new XML(); ...sourceXML.load(myXml);Код:
sourceXML.load(mdm.Application.path+myXml); |
Цитата:
Флэш не воспринимает в скрипте ничего, что начинается с mdm., для него это пустой звук - undefined. Все эти mdm-вставки начинают работать только после компиляции в цинке, тогда флэш все mdm. видит как надо и выполняет что нужно. Я таки рекомендую использовать абсолютные пути. |
Кажется, получилось. И все оказалось проще, чем представлялось. Вот старое объявление переменной с адресом основного xml в оригинальном исходнике (исходник взят где-то на форуме. Автор - участник форума Wolsh):
Код:
var xmlFile:String = "test.xml";Код:
var xmlFile:String = mdm.Application.path + "test.xml";Код:
...var imageList:XMLNode = pageXML.firstChild.firstChild;Код:
img_folderURL:String = imageList.attributes.imageFolder;Код:
img_folderURL:String = mdm.Application.path + imageList.attributes.imageFolder;Спасибо, alexcon314. Хотел бы задать еще один вопрос по поводу управления дочерними формами. Заранее извиняюсь за offtopic, да и вообще, за столь пространное сообщение, но не хочется плодить темы на одно сообщение, тем более вопросы, в некотором роде, перекликаются. Итак. Здесь на форуме в faq-е читаем: Цитата:
Так неправильно? И еще. Что фактически происходит, когда мы используем show() или hide(). Включаем-выключаем форму, делая ее при hide() абсолютно безразличной к манипуляциям с активной формой, как будто нажимая на значок закрытия окна, или просто невидимой. но каким-то образом реагирующей на движения и щелчки мыши? |
Сказанное в цитате относится к другому контексту. Так следует делать, когда вторая форма сразу нужна для работы с ней из основной формы, например через Flash.cаllFunction или еще что-то, а именно это и нужно делать в контексте поста, откуда вы взяли цитату.. Это просто особенность (можно назвать и косяк) цинка - дочерняя форма недоступна для работы с ее содержимым, пока она не будет хотя бы раз отображена нормально...
Хиде форма помещается в точку с координатами -30000,-30000, так во всяком случае ведут себя обычные окна. Она просто "висит" там, никак не проявляя себя и не реагируя ни на какие манипуляции. Однако, если она уже была хотя бы один раз показана (см. выше), то загруженный в нее ролик продолжает жить нормальной жизнью, производятся вычисления, с ним можно "общаться" и т.д. Цитата:
Замечу, что все сказанное мной в отношении цинка на этом форуме за редким исключением относится, главным образом, к версии цинка 2.5.0.34. |
Большое спасибо. Но как же все таки насчет show() и hide()? Правильно ли будет считать, что выполняя mdm.Forms.SubForm.hide(), я как бы "выключаю" форму (аналог нажатия кнопки закрытия окна), а не просто прячу ее? Другими словами, после применения этой команды, если я совершаю какие-нибудь действия с главной, активной формой, реагирует ли на эти действия скрытая форма? Интересуюсь, главным образом потому, что хочу вызывать дочернюю форму без Caption, а закрывать ее с помощью hide(). Может вместо hide-show, нужно для этих целей использовать другие команды?
Цитата:
|
Сокрытие формы скорее аналогично нажатию кнопки "свернуть" для окна. Но при использовании hide() она еще и с таскбара пропадает.
Цитата:
Другие команды использовать можно, например, mdm.Forms.SubForm.x = -5000 (или 8000 или 10000 или...). Но тоже самое происходит при команде hide(). Я не помню только точно ли отображается в цинке дочерняя форма на таскбаре, но вроде там это можно отключить вручную, через установку какого-то флажка..если уж вам ее надо совсем скрыть)). |
Наконец, понял. "Хиде" меня вначале озадачило из поста №6. Спасибо.
|
| Часовой пояс GMT +4, время: 21:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.