ТАК, я приступил к работе в крайний срок для создания гибридной интерактивной карты HTML / Flash, и она еще не закончена. Я продолжаю приближаться к решению каждой проблемы, только чтобы обнаружить больше ошибок. Большинство из них совершенно очевидно, когда вы смотрите на работу. Я хотел бы, по крайней мере, раздавить большие ошибки, поэтому я ОЧЕНЬ благодарен за любые предложения. ПОЖАЛУЙСТА, ПОМОГИТЕ!
По сути, я использую всплывающую подсказку двумя способами: [0]
условно на основе Flash на основеMouseMove (работает нормально) и [1]
нетрадиционно нацеливаюсь на точку в фильме Flash из списка HTML. Всплывающая подсказка подходит, но находится не в том месте из-за перемещения и масштабирования Карты через TweenLite. Также есть ошибки с событиями onMouseOver / onMouseOut, когда onMouseOver снова запускает onMouseOut, оставляя подсказку видимой, когда она должна иметь _alpha 0.
Ссылка на работу: http://muralapts.com/test/neighborhood.php
---- БОЛЬШАЯ ПРОБЛЕМА # 1: HTML onMouseOver снова запускает onMouseOut, эффективно «возвращая» мою подсказку. Действительно глючит, когда подсказка не исчезнет. Никаких ошибок, поэтому я не могу понять, почему onMouseOver запускается дважды. Кажется, это проблема HTML, а не проблема Flash.
---- БОЛЬШАЯ ПРОБЛЕМА № 2: Всплывающая подсказка, вызванная из списка HTML слева страницы, отображается в неправильном месте из-за масштабирования и перемещения родительского клипа с помощью TweenLite. Всплывающая подсказка прикреплена к _root, но она «нацеливается» на точку в нескольких клипах контейнера (пути не указаны ниже). Я пытаюсь получить позицию всплывающей подсказки так:
Tooltip._x = ( dot._x + parentClip._x ) * parentClip._xscale/100;
Tooltip._y = ( dot._y + parentClip._y ) * parentClip._yscale/100;
ДЕТАЛИ ИНТЕРАКТИВНОЙ КАРТЫ:
XML-контент генерируется динамически
Данные HTML и Flash карты (идентификатор, имя,
ссылка, реклама, номер категории [Искусство,
Покупки и т. Д.] , номер списка
[число в
категория]). Использует Magic Parser для визуализации HTML-вывода из того же XML-файла, который использует Flash.
HTML / Javascript взаимодействует с пользовательским AS2
компонент карты через внешний интерфейс
Карта Первоначально увеличивает масштаб до 140% и перемещается к определенной точке с помощью TweenLite
onRollOver точек в фильме Flash показывает всплывающую подсказку с названием места, изменяет цвет точки
Кнопки Zoom In / Out устанавливают родительский клип _xscale + _yscale и записывают с TweenLite onUpdate
onMouseOver списка в HTML показывает подсказку с данными карты, но в НЕПРАВИЛЬНОМ МЕСТЕ, так как карта была увеличена и перемещена с помощью TWEENLITE. Использование TweenLite onUpdate для записи масштаба родительского клипа + значений размещения.
Изменение цвета точки из HTML работает на MouseOver, «липкое» на MouseOut (точки остаются черными)
КОД XML: (показывает одну категорию + список, есть еще много)
<category title="Arts & Entertainment">
<loc id="artsWest_mc" name="Arts West" website="http://www.artswest.org/" cat="0" num="0">
<content><![CDATA[The Junction's thriving community playhouse & art gallery.]]></content>
</loc>
</category>
HTML КОД:
<script type="text/javascript"><!--
function showTooltip(btnID,catNum,listNum) {
thisMovie("map").showTooltip(btnID,catNum,listNum);
}
function removeTip(btnID, catNum, isExternal) {
thisMovie("map").removeTip(btnID, catNum, true);
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
} else {
return document[movieName]
}
}
//--></script>
<a onMouseOver="showTooltip( btnID, categoryNum, listingNum )" onMouseOut="removeTip()">Arts West</a>;
FLASH CODE:
public function showTooltip( bt:MovieClip, catNum:Number, listNum:Number ){ //MOVES MAP & SHOWS TOOLTIP
TweenLite.to(map_mc, 1, {_x:destX, _y:destY, ease:'easeOutQuad',
onUpdate: trickTip,
onUpdateParams: [bt, contentArr[catNum].childNodes[listNum].attributes.name]
});
}
public function trickTip( btnID:MovieClip, btnName:String ){ //CALLED FROM EXTERNAL INTERFACE
theTip.theText.text = btnName;
theTip._x = ((btnID._x + btnID._parent._x) * (map_mc._xscale/100)) - (theTip._width *.75);
theTip._y = ((btnID._y + btnID._parent._y) * (map_mc._yscale/100)) + 20;
TweenLite.to(theTip, .01, {_alpha:99, overwrite:1});
}
public function removeTip( bt:MovieClip, catNum:Number ){
TweenLite.to(theTip, .01, {_alpha:0, overwrite:1});
}