PDA

Просмотр полной версии : Подсказка над кнопкой


Леший62
10.04.2006, 22:03
Всем привет. У меня 2 вопроса:
1. Как сделать всплывающюю подсказку при прохождении указателя мышки над областью кнопки?
2. Как сделать пролистывание по кадрам? То есть человек жмёт на кнопку и появляется 2-ой кадр, и так обратно?
:away:
Спасибо за поддержку

Takato
10.04.2006, 22:13
Как сделать всплывающюю подсказку при прохождении указателя мышки над областью кнопки?

Нарисовать подсказку во втором кадре кнопки


2. Как сделать пролистывание по кадрам? То есть человек жмёт на кнопку и появляется 2-ой кадр, и так обратно?

Прописать экшен скриптом переход на нужные кадры при нажатии

Леший62
11.04.2006, 00:57
А если по конкретней? Расплывчато и в общих чертах я представляю...а как это должно правильно выглядить не знаю :(

xcho_
11.04.2006, 01:13
когда делаешь кнопку (нижимаешь Ф8,выбираешь "кнопку" и жмешь "ОК")..у нее во втором кадре (кадр называется "при наведении") рисуешь дополнительно то что надо...ту подсказку,что тебя интересует))

есть скрипт перехода: gotoAndStop(n) - где n -номер кадр,к которому переходишь...этот скрипт надо писать на кнопке....
вот вообщем)))
советую почитать книжку: "Флеш для начинающих"- там тоже всякое написано...

Nidl
11.04.2006, 01:13
Девочка Takato научилась сама научи другова ")

На первый вопрос :

stop();
//аттач)))какая великая вещь)))для того чтобы саттачить мувик из библиотеки
//нужно сначало зайти в библиотеку , кликнуть правой кнопкой мыши
//на нужном нам мувике зайти в Linkage и поставить галочку напротив
//Export for Action Script , и задать ему имя которое мы будем изпользовать
//в нашем скрипте (попробуй посмотреть как ето сделал я )))
//каждый раз аттача мувик необходимо ему задовать новое имя и
//новый слой смотри ) attachMovie("buttonmovie","buttonmovie1",1);
// далее для нового мувика уже будет так attachMovie("buttonmovie","buttonmovie2",2);
attachMovie("buttonmovie","buttonmovie1",1);
_root.buttonmovie1._x=135;//координаты по оси х
_root.buttonmovie1._y=100;//координаты по оси у
_root.buttonmovie1._alpha=50;//степень яркости ) если нуна 100 то не задаем оно и так будет))
//задаем свойства или скажем манеру поведения сатаченной кнопке)))
_root.buttonmovie1.onEnterFrame = function() {
//задаем свойства кнопки на нажатие ) если мы нажмем кнопочку
//то перейдем на страничку с указанным адресом))
this.onPress = function() {
getURL("http://www.flasher.ru");
}
//тута мы проверяем если курсор на кнопке то кнопка повышает свою яркость
//но 80% и приобретает белый цвет))))
this.onRollOver = function() {
myColor = new Color(this);
myColor.setRGB(0xFFFFFF);
this._alpha=80;
}
//опять же проверка ) если мы уберем курсор с кнопочки то она вернет
//прежний цвет ) и яркость )))
this.onRollOut = function() {
myColor = new Color(this);
myColor.setRGB(0x6699FF);
this._alpha = 50;
}
}
//если у тебя на сцене есть обьекты которые должны быть выше уровнем саттаченного мувика
//то нуна задать сей код на мувик---мувик.swapDepths(10);где 10 ето уровень)))
//если тебе нуна создать кнопку которая будет открывать ссылку в новом окне то
//задай сей код на нажатье етой кнопки))) --- getURL("http://www.flasher.ru","_blank");
//если нуна создать кнопку ссылку на твою почту то нуна так ---getURL("mailto:696969oxy@mail.ru", "_blank");
//
//и так делай для каждой кнопки )))чтобы тебе было легче понять я кину вариант для второй кнопки)))
//
attachMovie("buttonmovie","buttonmovie2",2);
_root.buttonmovie2._x=415;
_root.buttonmovie2._y=106;
_root.buttonmovie2._alpha=50;
//можно также задовать размеры саттаченого мувика для етого изпользуй команды
//_width - ето ширина и _height - ето высота)))вот посмотри)) также для етого годится _yscale и _xscale)))
_root.buttonmovie2._height=42;
_root.buttonmovie2.onEnterFrame = function() {
this.onRelease = function() {
getURL("http://www.flasher.ru","_blank");
}
this.onRollOver = function() {
myColor = new Color(this);
myColor.setRGB(0xFFFFFF);
this._alpha=80;
_root.attachMovie("podscazca","podscazca1",3);
_root.podscazca1._x=275;
_root.podscazca1._y=200;
}
this.onRollOut = function() {
myColor = new Color(this);
myColor.setRGB(0x6699FF);
this._alpha = 50;
_root.podscazca1.unloadMovie();
}
}

На второй вопрос : вешай на кнопку команды :
nextFrame();
//или
prevFrame();


P.S. это все просто , если непонятно скажи сделаю исходником )

xcho_
11.04.2006, 01:16
а зачем аттачи-то???
не думаю,что автор топика после твоего написаного спать будет!!!))))))))

Nidl
11.04.2006, 01:17
Привычка )

Takato
11.04.2006, 02:02
Девочка Takato научилась сама научи другова ")

А?.. Э?..

Или это типа упрёк мне что я отвечаю на вопрос сухими предложениями в одну строчку?

Homo Sapiens
11.04.2006, 02:08
Нарисовать подсказку во втором кадре кнопки
Извращение какое.

class TipManager extends MovieClip
{
private var _delay:Number = 500;
private var _inter:Number = 0;
private var _mes:String;
private var _tip;

private static var _allTips:Array = new Array();

private function TipManager(mes:String)
{
_mes = mes;
/*_root["onMouseMove"] = function()
{
trace(_root._xmouse);
}
*/
}

public static function Add(target, mes:String):Void
{
//trace(this);
var manager:TipManager = new TipManager(mes);
target["_tipmanager"] = manager;
target["onRollOver"] = target["_tipmanager"].Create;
target["onRollOut"] = target["_tipmanager"].Clear;
_allTips.push(target);
}

private function Clear():Void
{
clearInterval(this["_tipmanager"]._inter);
this["_tipmanager"]._tip.removeTextField();
}

private function Create():Void
{
this["_tipmanager"]._inter = setInterval(this["_tipmanager"], "Show", this["_tipmanager"]._delay);
}

private function Show():Void
{
_tip = _root.createTextField("tip", _root.getNextHighestDepth(), _root._xmouse + 3, _root._ymouse - 3, 100, 30);
_tip.autoSize = true;
_tip.background = true;
_tip.backgroundColor = 0xFFFFDD;
_tip.border = true;
_tip.text = _mes;
_tip.selectable = false;

var format:TextFormat = new TextFormat();
format.size = 12;
format.font = "Verdana";
format.align = "center";
format.leftMargin = format.rightMargin = 5;

_tip.setTextFormat(format);
var w:Number = _tip._width;
var h:Number = _tip._height;

if((_tip._x + w) > Stage.width)
_tip._x = Stage.width - w - 10;
if((_tip._y + h) > Stage.height)
_tip._y = Stage.height - h - 10;

clearInterval(this._inter);
}
}
Класс до конца не опробован, возможны баги...

Homo Sapiens
11.04.2006, 02:11
Дельным предложениям по улучшению класса буду безумно благодарен.

Takato
11.04.2006, 02:18
Извращение какое.

Для задавшего вопрос это самый легкий и простой вариант. По крайней мере гораздо легче, чем перепечатывать всё то что ты написал

Homo Sapiens
11.04.2006, 02:25
По крайней мере гораздо легче, чем перепечатывать всё то что ты написал
Перепечатывать? Ты борешься за высокую производительность труда? Открою маленький секрет, есть магическая комбинация Ctrl + C (Copy), Ctrl + V (Paste). Это и многое другое ты можешь узнать из книг серии "Компьютор для чайников".
Не спорю, намного легче добавлять для каждой кнопки новый кадр, рисовать подсказку, писать код перехода, чем вставлять строчки
TipManager.Add(btn, "Click me");Не у говоря уже о том, что это глубоко положительно скажется на размере фильма.

Takato
11.04.2006, 02:32
Перепечатывать? А магическую комбинацию Ctrl + C (Copy), Ctrl + V (Paste) ты не знаешь?

В Досе этакомбинация не работает

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

Интересно, а что мешает нарисовать таки подсказку с динамическим текстом и задать всего ДВУМЯ строчками текст для этой подсказки и ссылку для перехода? И для разных кнопок менять всего лишь две переменных? А не раскатывать эссе на пол-листа

Не у говоря уже о том, что это глубоко положительно скажется на размере фильма

Сомневаюсь, что одно поле для динамического текста и две строки будут весить меньше, чем твоя куча кода


Что такое "эконмичность труда" - слышал?

Homo Sapiens
11.04.2006, 02:38
В Досе этакомбинация не работает
Ты децл отстал от жизни. На дворе уже не 1994, а 2006.
Да ничего не мешает. Делай ты что хочешь. И ООП придумали дураки. Нафига нам повторное использование кода? Выучим расположение клавиш на клавиатуре путём набора кода :).
Сомневаешься? А ты сравни :) Сделай множество кнопок, клипов (кстати, в клипе ты на какой кадр предлагаешь вешать подсказку? На последний? Или тоже на второй?), ссылок и посмотри.

Homo Sapiens
11.04.2006, 02:41
А после подобных изысков появляются программы, которые не работают. Когда заказчик просит привести их в более-менее приличное состояние, понимаешь, что проще написать всё заново.

Takato
11.04.2006, 02:42
Сделай множество кнопок, клипов

Сделать? А зачем мне делать множество кнопок, клипов? Есть такое магическое сочетание клавишь, как Esc+d+m, если ты не знал

Леший62
11.04.2006, 11:25
Ууууууууух! Вот эта код! Огромное спасибо! Сегодня я посвящю свой день разбору этих кодов. Спасибо! :)

Леший62
11.04.2006, 12:03
Вот чёрт!:eek: что-то у меня не заладилось...

1. Попробовал простой вариант: чтобы вылетала подсказака во втором кадре кнопки её сделал, всё тип-топ, а вот чтобы по нажатию на кнопку открывался второй или третий кадр :(
Панель Output выводит ошибку, типа gotoAndStop(2) - это не верно. Пробовал там пририсовать вначале _root, то же не помогло

2. Не отчаиваясь попробовал более сложный вариант: с длинющими и страшными кодами. При публиковании Flash вывел мне 6 ошибок, просмотрев код и пр. я ничего подозрительного не нашёл :( Вот такая вот история.

Takato
11.04.2006, 20:45
Попробовал простой вариант: чтобы вылетала подсказака во втором кадре кнопки её сделал, всё тип-топ

Ну дык... Такато те плохого не посоветует

а вот чтобы по нажатию на кнопку открывался второй или третий кадр
Панель Output выводит ошибку, типа gotoAndStop(2) - это не верно. Пробовал там пририсовать вначале _root, то же не помогло

А куда ты этот код пишешь? Надо в кнопку (не в какой то ее кадр, а именно в кнопку) написать следущее

on (release) {
gotoAndStop(2);
}

попробовал более сложный вариант: с длинющими и страшными кодами. При публиковании Flash вывел мне 6 ошибок

Забей на эти длиннющие коды. Писать две страницы кода на всплывающую подсказку у кнопки - это бред

На счет ошибок - видимо, как говорил Разумный Хомо -

ООП придумали дураки

Double
11.04.2006, 22:17
хинты (подсказки) надо показывать так (щас валенками закидают):
1. от кнопок (buttons) отказаться
2. вместо них использовать мувики (movie clips)
3. на onRollOver у них вешать отображение хинта, на RollOut сокрытие
4. хинт менять в зависимости от вызвавшего его мувика (передать 1-2 переменные)
собственно и всё.

ctrl+c/v ничего спрашивающему не дают. тут мозгами понять важно. иначе в следующий раз будет озвучен схожий вопрос. к чему тогда сводится помощь?

serzhman
11.04.2006, 23:15
btn.onRollOver=function()
{
flagHint=0;
DelayHint=0;
podskazkaLoad("Подсказываю");
}
function podskazkaLoad(textHint)
{
if(flagHint==0){
DelayHint=0;
_root.createEmptyMovieClip("myHint",200);
myHint.onEnterFrame=function()
{
DelayHint+=1;
flagHint=1;
if(DelayHint==6)
{
myHint.attachMovie("hint_data","hintData",100);
myHint.hintData.hint_text.text=textHint;
}
if(DelayHint>=25)
{
myHint.removeMovieClip();
DelayHint=0;flagHint=0;
delete myHint.onEnterFrame();
}
myHint._x=_root._xmouse;
myHint._y=_root._ymouse;
}
}
}
function podskazkaReLoad()
{
delete myHint.onEnterFrame();
removeMovieClip(myHint);
}

Homo Sapiens
12.04.2006, 00:23
Ну дык... Такато те плохого не посоветует
on (release) {
gotoAndStop(2);
}
Плохого не посоветуешь? Ну ну. Ты себя явно переоцениваешь :)

Nidl
12.04.2006, 00:37
2Леший62 держи информацию к размышлению ) так наброски )

Леший62
12.04.2006, 20:45
Обалдеть!:D
Мне так как здесь,ни на каких других форумах не помогали, я просто весь в счастье.

Спасибо всем за помощь!!!:)

@rey
30.05.2006, 13:50
А если я использую Component Button все выше сказанное действует?