TIPS OF FLASH - подсказка юзверю

Iv (dembicki@narod.ru)

Спецвыпуск Xakep, номер #025, стр. 025-104-2


TIPS 10

Перед тем как приступить к написанию скрипта, переключись с русского на английский.

TIPS 11

Основные шаги программы такие:

1. Ожидание остановки мыши.

2. Перебор мувиклипов для проверки попадания мыши на мувик с текстом для типсы.

3. Если попали на такой мувик, то показываем типсу и прекращаем дальнейшие проверки.

4. Если не попали, то тоже прекращаем любые проверки.

5. В любом случае, если мышь двинулась с места и съехала с мувика, которому была назначена типса, или такого мувика не было, запускаем заново процедуру с пункта 1. Короче, сказка про белого бычка: "эта песня хороша, начинай сначала".

TIPS 12

Скрипт нужно воткнуть в верхний кадр типсы. Я прокомментирую его основные моменты:

/* устанавливаем время задержки 1 сек.: */

this.tooltipTime = 1000;

/* функция ожидания остановки движения мыши: */

waitMouseDelay = function () {

/* вначале прячем типсу и ставим в координаты 0,0 */

this._visible = this._x = this._y= 0;

/* сбрасываем время при движении мыши */

this.onMouseMove = function() {

this.t0 = getTimer();

};

/* каждый кадр проверяем - не истекло ли время */

this.onEnterFrame = function() {

if (getTimer()-this.t0>this.tooltipTime) {

/* ищем, не попала ли мышь на мувик с текстом подсказки, начиная с рута. Реализовано в отдельной функции checkHitTest, которая при нахождении мувика с текстом подсказки (в переменной tooltip_text) помещает этот текст в переменную tooltip_target_text в типсе: */

this.checkHitTest(_root);

/* если функция в предыдущем кадре задала переменную tooltip_target_mc */

if (this.tooltip_target_mc) {

/* то, значит, мувик с текстом типсы найден, и на нем находится мышь - мы можем показать типсу */

this.showTooltip(this.tooltip_target_text);

/* если нет, */

} else {

/* останавливаем проверку на истечение времени */

delete this.onEnterFrame;

/* а если двинется мышь, то начинаем все сначала */

this.onMouseMove = function() {

waitMouseDelay();

};

}

}

};

};

/* Это функция поиска мувика, на который наведена мышь, и который имеет текст для типсы */

this.checkHitTest = function (m) {

delete this.tooltip_target_mc;

delete this.tooltip_target_text;

for (var mc in m) {

if (m[mc].hitTest(_root._xmouse, _root._ymouse, 1)) {

if (m[mc].tooltip_text != undefined) {

this.tooltip_target_mc = m[mc];

this.tooltip_target_text = m[mc].tooltip_text;

return;

} else {

if (!this.tooltip_target_mc) {

this.checkHitTest(m[mc]);

return;

}

}

}

}

};

/* Это функция показа типсы */

showTooltip = function (t) {

this.swapDepths(this._parent.getTopDepth())

this._visible = 1;

this._x = this._parent._xmouse;

this._y = this._parent._ymouse;

this.tips_txt.text = t;

this.tips_txt.autoSize = true;

this.tips_bg_mc._width = this.tips_txt._width+20;

if (this.tips_bg_mc._width<50) {

this.tips_bg_mc._width = 50;

}

this.tips_shadow_mc._width = this.tips_bg_mc._width;

delete this.onEnterFrame;

this.onMouseMove = function() {

if (this.tooltip_target_mc.hitTest(_root._xmouse, _root._ymouse, 1)) {

Назад на стр. 025-104-1  Содержание  Вперед на стр. 025-104-3