Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подсказка над кнопкой (http://www.flasher.ru/forum/showthread.php?t=78171)

Леший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

Цитата:

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

Извращение какое.
Код:

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

Цитата:

Сообщение от Takato
По крайней мере гораздо легче, чем перепечатывать всё то что ты написал

Перепечатывать? Ты борешься за высокую производительность труда? Открою маленький секрет, есть магическая комбинация 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

Цитата:

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

Ты децл отстал от жизни. На дворе уже не 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

Вложений: 1
Код:

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
2Леший62 держи информацию к размышлению ) так наброски )

Леший62 12.04.2006 20:45

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

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

@rey 30.05.2006 13:50

А если я использую Component Button все выше сказанное действует?


Часовой пояс GMT +4, время: 17:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.