首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Macromedia Flash 8-爱尔兰地图,鼠标经过都柏林,都柏林扩展

Macromedia Flash 8-爱尔兰地图,鼠标经过都柏林,都柏林扩展
EN

Stack Overflow用户
提问于 2010-03-21 02:19:01
回答 2查看 1.2K关注 0票数 2

Macromedia Flash 8问题:

我有一张爱尔兰地图,只是一张gif,有几个小按钮代表了爱尔兰周围的各种兴趣点,它们散布在地图上。这部分运行得很好。

问题是:都柏林太小了,无法容纳所有的兴趣点(大约20个)。

解决方案是OnMouseOver都柏林,我希望都柏林能够扩展到原来的5到6倍,我希望现在能够在位于爱尔兰地图顶部的更大的都柏林区域内显示都柏林的兴趣点。

OnMouseOut都柏林,这个扩大的都柏林区域现在缩小到原来的大小。

我的问题是:如何实现都柏林??

要求: 1)扩展的都柏林区域不应该是可点击的,它应该是黑色背景上的都柏林图像。

2)必须能够在这个扩展的都柏林区域中添加额外的按钮。

任何帮助或帮助都非常感谢...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-23 17:01:21

假设您放大的都柏林地图是一个包含所有按钮等的movieClip,您可以捕获剪辑的onRollOver事件来开始缩放,如下所示:

代码语言:javascript
复制
// d is an object containing all the variables we need for where to start & finish
var d:Object = { 
 start_x:dublin._x, 
 start_y:dublin._y, 
 start_xscale:dublin._xscale,
 start_yscale:dublin._yscale, 
 end_x:0.5*Stage.width,// change end_x and end_y...
 end_y:0.5*Stage.height,//... to suit your layout
 end_xscale:100,
 end_yscale:100,
 totalSteps:10,// zoom in 10 steps (more steps = slower)
 currentStep:0
 };

//dublin is set to be invisible (but rollOver-able) to start with
dublin._alpha = 0;

//the doStep function does a single stage of the zoom (once per frame)
function doStep(clip):Void {
    var fraction=d.currentStep/d.totalSteps;
    clip._x = d.start_x+(d.end_x-d.start_x)*fraction;
    clip._y = d.start_y+(d.end_y-d.start_y)*fraction;
    clip._xscale = d.start_xscale+(d.end_xscale-d.start_xscale)*fraction;
    clip._yscale = d.start_yscale+(d.end_yscale-d.start_yscale)*fraction;
};

//catch rollOver and rollOut events for the dublin clip:
dublin.onRollOver = function() {
    if (d.currentStep<d.totalSteps) {
        //start growing
        this._alpha=100;
        this.onEnterFrame = function() {
            d.currentStep++;
            doStep(this);
            if (d.currentStep>=d.totalSteps) {
                delete this.onEnterFrame;
            }
        };
    }
};

dublin.onRollOut = function() {
    if (d.currentStep>0) {
        //start shrinking
        this.onEnterFrame = function() {
            d.currentStep--;
            doStep(this);
            if (d.currentStep<=0) {
                delete this.onEnterFrame;
                this._alpha=0;
            }
        };
    }
};

要实现这一点,请执行以下操作:

  1. 将大比例尺地图的一个实例(实例名称= dublin )放在舞台上,然后使用调整大小工具将其缩小,使其位于大比例尺地图上的都柏林位置之上。为方便起见,您可以将其_alpha设置为(比方说) 20 (在都柏林的父代的时间线上,在代码(如上图)中设置为0,在都柏林所在的帧中(请原谅,我假设您没有使用都柏林类来组织code).
  2. There's。这种技术的一个缺点是:因为我们使用 AS2 来捕获onRollOver事件,所以您可能会发现它里面的任何按钮都不响应rollOvers;然而,它们仍然可以被点击。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-03-22 02:53:54

您可以使用该地图进行缩放:http://www.graphic-flash-sources.com/interactive-flash-map-with-zoom-united-kingdom-ireland/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2484187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档