Macromedia Flash 8 - Карта Ирландии, при наведении курсора на дублин, дублин расширяется - PullRequest
2 голосов
/ 20 марта 2010

Macromedia Flash 8 Вопрос:

У меня есть карта Ирландии, только изображение, и есть несколько маленьких кнопок, представляющих различные достопримечательности вокруг Ирландии, которые разбросаны по всей карте. Эта часть отлично работает.

ПРОБЛЕМА: Дублин слишком мал, чтобы вместить все его достопримечательности (около 20).

РЕШЕНИЕ OnMouseOver Dublin, я хотел бы, чтобы Дублин расширился, возможно, в 5 или 6 раз по сравнению с его первоначальным размером, и я хотел бы иметь возможность отображать точки интереса Dublins в пределах этой большей области Дублина, которая находится на вершине карты Ирландии

OnMouseOut Dublin, этот расширенный регион Дублина теперь сжимается до своего первоначального размера.

МОЙ ВОПРОС: Как мне реализовать Дублин ??

Требования: 1) Расширенная область Дублина НЕ ДОЛЖНА быть кликабельной, она просто будет дублированным изображением на черном фоне.

2) Должна быть возможность добавить дополнительные кнопки в этом расширенном регионе Дублина.

Любая помощь или помощь с благодарностью ...

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Предполагая, что ваша увеличенная карта Дублина представляет собой мувиклип, содержащий все его собственные кнопки и т. Д., Вы можете зафиксировать событие клипа onRollOver, чтобы начать масштабирование, что-то вроде этого:

// 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. Поместите экземпляр вашей крупномасштабной карты (имя экземпляра = Дублин ) на сцену и используйте инструмент изменения размера, чтобы уменьшить его так, чтобы он располагался над местоположением Дублина на вашем большом карта масштаба.
  2. Вы можете установить для его _alpha (скажем) 20 для удобства (устанавливается в 0 во время выполнения).
  3. Вставьте код (см. Выше) на временную шкалу родителя dublin , в рамку, где присутствует dublin (простите, я вроде бы предположил, что вы не используете классы AS2 для организации ваш код).
  4. У этого метода есть один недостаток : поскольку мы фиксируем событие onRollOver с помощью dublin , вы можете обнаружить, что любые кнопки внутри него не реагируют на rollOvers; однако они все еще могут быть активированы кликом.

Надеюсь, это поможет.

0 голосов
/ 21 марта 2010

Вы можете использовать эту карту с зумом: http://www.graphic -flash-sources.com / interactive-flash-map-with-zoom-United-Kingdom-Ireland, /

...