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)) { |