Форум 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=174611)

antalopata 29.01.2012 15:50

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

mooncar 29.01.2012 16:03

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

var texts:Array = ['Текст 1', 'Текст 2', 'Текст 3']; //массив с текстами для кнопок 
 
for (i = 1; i <= 3; i++)
{
        this['btn' + i].onRollOver = btnOver;
        this['btn' + i].onRollOut = btnOut;
        this['btn' + i].num = i; //запоминаем номер кнопки внутри нее самой
}
 
function btnOver()
{
        var num:Number = this.num; //"вспоминаем" номер кнопки, на которую навели
        my_text.text = texts[num - 1]; //назначаем нужный текст  в з-ти от номера
}
 
function btnOut()
{
        my_text.text = ''; //при уведении с кнопки поле очищается
}

Рабочий пример во вложении.
В качестве кнопок используются мувики.

PS. В примере поле не в мувике, пропустил. Просто добавьте правильный путь к полю:
Код AS1/AS2:

somemc.my_text.text = texts[num - 1];

, где somemc - имя мувика на сцене

antalopata 29.01.2012 16:26

Спасибо большое ! буду разбираться...

Добавлено через 8 часов 31 минуту
как говорится аппетит во время еды приходит... Можно ли как то на основе(ваших) предыдущего кода и этого

Код AS1/AS2:

import mx.transitions.Tween; //иморт класса Tween
var onSpeed:Number = 0.5; // количество секунд для возрастания альфы
var offSpeed:Number = 1; // количество секунд для убывания альфы
var tweenContainer:Object = new Object(); //хранилище для объектов - Tween'ов
 
function upAlpha () { //функция возрастания альфы
        //this - это и есть мувик, для которого вызывается функция
        tweenContainer[this]['off'].stop(); //если все еще продолжается убывание альфы, то его останавливаем
        tweenContainer[this]['on'] = new Tween(this, '_alpha', mx.transitions.easing.None.easeNone, this._alpha, 100, onSpeed, true);
}
 
function downAlpha () { //функция возрастания альфы
        //this - это и есть мувик, для которого вызывается функция
        tweenContainer[this]['on'].stop();//если все еще продолжается возрастание альфы, то его останавливаем
        tweenContainer[this]['off'] = new Tween(this, '_alpha', mx.transitions.easing.None.easeNone, this._alpha, 0, offSpeed, true);
}
 
function  setAlphaManage (mc:MovieClip) {
        tweenContainer[mc] = new Array(); //для хранения твинов, для каждого мувика  - свой массив
        mc.onRollOver = upAlpha;
        mc.onRollOut = downAlpha;
}
 
//используем:
for (i = 1; i <= 5; i++) {
        var item:MovieClip = _root['town' + i];
        item._alpha = 0;
        setAlphaManage(item);
}

( во всяком случае мне за неопытностью больше нечем оперировать),
а тем более подчеркиваемую вами часто рекомендацию не писать код на кнопках
и мувиках(а мой опыт и воображение пока сильно привязано к кнопкам и мувикам).

Сделать так что бы ещё при наведении на кнопку( в одном ряду кнопок)
менялась прозрачность другой кнопки(в другом ряду кнопок).
И пуще того так же без написания кода на кнопке( ну в крайнем случае на ней)
при наведении курсора на кнопку подгружать муви-клипы в конкретную координату ?
Пока что они у меня вставлены внутрь кнопки на "Over" . Спасибо...

Добавлено через 31 час 12 минут
надеюсь на скорый ответ

Keeper 31.01.2012 18:35

Вложений: 1
Можно так: разместить на сцене мувиклипы с именами от b1 до b6, мувик, который нужно подгружать в координату где-нибудь за рабочей областью (у меня он с именем toy) и повесить код, приведённый ниже, на первом фрейме на таймлайне. Исходник прилагается.
Код AS1/AS2:

b_alphas = 100;
b1.onRollOver = function() {
        toy._x = 133;
        toy._y = 230;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b1.onRollOut = function() {
        toy._x = -100;
        toy._y = 100;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}
b2.onRollOver = function() {
        toy._x = 266;
        toy._y = 230;
        onEnterFrame = function() {
                b1._alpha = b3._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b2.onRollOut = function() {
        toy._x = -100;
        toy._y = -100;
        onEnterFrame = function() {
                b1._alpha = b3._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}
b3.onRollOver = function() {
        toy._x = 400;
        toy._y = 230;
        onEnterFrame = function() {
                b2._alpha = b1._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b3.onRollOut = function() {
        toy._x = -100;
        toy._y = -100;
        onEnterFrame = function() {
                b2._alpha = b1._alpha = b4._alpha = b5._alpha = b6._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}
b4.onRollOver = function() {
        toy._x = 183;
        toy._y = 150;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b1._alpha = b5._alpha = b6._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b4.onRollOut = function() {
        toy._x = -100;
        toy._y = -100;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b1._alpha = b5._alpha = b6._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}
b5.onRollOver = function() {
        toy._x = 266;
        toy._y = 150;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b1._alpha = b6._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b5.onRollOut = function() {
        toy._x = -100;
        toy._y = -100;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b1._alpha = b6._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}
b6.onRollOver = function() {
        toy._x = 400;
        toy._y = 150;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b5._alpha = b1._alpha = b_alphas -= 10;
                if (b_alphas < 50) {
                        b_alphas = 50;
                }
        }
}
b6.onRollOut = function() {
        toy._x = -100;
        toy._y = -100;
        onEnterFrame = function() {
                b2._alpha = b3._alpha = b4._alpha = b5._alpha = b1._alpha = b_alphas += 10;
                if (b_alphas > 100) {
                        b_alphas = 100;
                }
        }
}


antalopata 31.01.2012 18:59

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

DaFive 31.01.2012 19:14

Keeper, придумали массивы и циклы для этого дела. А если 100 кнопок?

Keeper 31.01.2012 19:41

Я ими почти (если не совсем) не пользуюсь, да и мне, например, не обломно для кажой кнопки это прописать.

antalopata 31.01.2012 19:52

у меня их 12 и может устроить и этот вариант . Но я не против варианта и с массивами ?!

dark256 31.01.2012 20:45

Код AS1/AS2:

for ( var z=1; z<скока_у_меня_кнопок; z++){
    там_где_все["b"+z].onRelease = function(){ ...  }
}

Код:

да и мне, например, не обломно для кажой кнопки это прописать.
Функционал функций (сорри) отличается настолько на чуть-чуть, что проще систематизировать это отн. управлаяющих параметров и не плодить копипасту. У вас решение "в лоб". Зачастую - да. Несомненно. Но иногда имеет смысл слегка подумать :)

antalopata 31.01.2012 22:48

Код AS1/AS2:

for ( var z=1; z<скока_у_меня_кнопок; z++){
    там_где_все["b"+z].onRelease = function(){ ...  }
}

Простите за вопрос наивный... а эти правки для какого кода ? для того что в начале топика ?
и "там_где_все" это "this" там ?

К сожалению все больше и больше понимаю , что попытка понять AS где то с середины, почти бесперспективны (( . Или учи с начала, с азов и имей регулярную практику, или... , или вот так - тебе показывают, а ты ни бум бум.

Но всё равно спасибо за подсказки. Они хотя бы дают понять , что есть отзывчивые люди .

Добавлено через 50 часов 35 минут
вот ещё вопрос -

по клику на кнопке запускается клип

Код AS1/AS2:

on (release) {
        gotoAndStop (m1);
        this._root.m1.gotoAndPlay(2);
}

этот клип должен запускаться одной их трёх кнопок при условии, что он уже не запущен.
То есть если уже был запущен одной кнопкой на второй и третьей не должен срабатывать ?


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

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