因此,我在 HTML/Flash 混合交互式地图的最后期限前开始着手处理,但它还远未完成。我不断接近解决每个问题,只是发现更多的错误。当您查看作品时,它们中的大多数都非常明显。我想至少消除大错误,所以我非常感谢任何建议。请帮忙!
基本上,我以两种方式使用工具提示:[0]
通常基于 Flash 的 onMouseMove(工作正常),以及[1]
非常规地从 HTML 列表中定位 Flash 电影中的一个点。工具提示很好,但由于地图通过 TweenLite 移动和缩放而出现在错误的位置。onMouseOver/onMouseOut 事件也存在错误,其中 onMouseOver 再次触发 onMouseOut,当它的 _alpha 为 0 时,工具提示仍然可见。
作品链接:http: //muralapts.com/test/neighborhood.php
----大问题 #1: HTML onMouseOver 再次触发 onMouseOut,有效地“重新打开”我的工具提示。当 Tooltip 不会消失时,看起来真的很糟糕。没有错误,因此我无法弄清楚为什么 onMouseOver 会触发两次。似乎是 HTML 问题,而不是 Flash 问题。
----大问题 #2:由于父剪辑使用 TweenLite 缩放和移动,从页面左侧的 HTML 列表触发的工具提示显示在错误的位置。工具提示附加到 _root,但“定位”几个容器剪辑中的一个点(路径未在下面指定)。我试图获得这样的工具提示位置:
Tooltip._x = ( dot._x + parentClip._x ) * parentClip._xscale/100;
Tooltip._y = ( dot._y + parentClip._y ) * parentClip._yscale/100;
互动地图详情:
XML 内容动态生成 HTML 和 Flash 地图数据(id、名称、链接、简介、类别编号[艺术、购物等] 、列表编号 [类别中的编号])。使用 Magic Parser 从 Flash 使用的同一 XML 文件呈现 HTML 输出。
HTML/Javascript 通过外部接口与自定义 AS2 地图组件对话
地图最初放大到 140% 并使用 TweenLite 移动到某个点
Flash 影片中点的 onRollOver 显示带有地名的工具提示,更改点颜色
放大/缩小按钮设置父剪辑 _xscale + _yscale 并使用 TweenLite onUpdate 录制
HTML 中列表的 onMouseOver 显示带有地图数据的工具提示,但位置错误,因为地图已使用 TWEENLITE 进行缩放和移动。使用 TweenLite onUpdate 记录父剪辑的比例 + 放置值。
从 HTML 更改点的颜色在鼠标上起作用,在鼠标输出上是“粘性的”(点保持黑色)
XML CODE:(显示一个类别+列表,还有很多)
<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>;
闪存代码:
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});
}