Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изменение цвета клипа при наведении курсора (http://www.flasher.ru/forum/showthread.php?t=183725)

mirross 30.08.2012 14:53

Изменение цвета клипа при наведении курсора
 
Помогите, пожалуйста разобраться! Я новичок, с программированием знакома плохо, но задачу поставили и ее необходимо выполнить Суть такова - есть план этажа, на котором обозначены отделы (каждый отдел - отдельный мувик); есть код, который реализует появление всплывающей подсказки, когда курсор находится над каким-либо отделом. Я нашла код, который полностью поставленную задачу решает. Но! Мне нужно чтобы в момент нахождения курсора над мувиком он менял не прозрачность, а цвет. И вот тут у меня полный затык. Вот сам код:
Код AS3:

import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
var request:URLRequest = new URLRequest ();
request.url = "data.xml";
var loader:URLLoader = new URLLoader();
var postsList:XMLList;
var postsNum:uint;
var ContekstSod:String;
var Interval:uint;
var OsX:int;
var OsY:int;
OsX = 1024;// Указать ширину клипа
OsY = 768;// указать высоту клипа
 
balloon.visible = false;
 
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, printResponse);
loader.load(request);
 
function printResponse(e:Event):void {
        var otv:XML = e.target.data.response;
        var response:XML = XML(e.target.data.result);
        postsList = response.post;
        postsNum = postsList.length();
}
 
this.addEventListener(MouseEvent.MOUSE_OVER,over);
this.addEventListener(MouseEvent.MOUSE_OUT,out);
 
function over(e:MouseEvent):void {
        var zzz:String;
        e.target.alpha = 0.4;
        zzz = e.target.name;
        ContekstSod = postsList[0]. @ [zzz];
        Interval = setInterval(PokazatFnc,1000);// Вот тут установлени интервал! 1000 = 1 секунде
}
 
function PokazatFnc():void {
        var MX:int;
        var MY:int;
        MX = mouseX;
        MY = mouseY;
        if (OsX - MX < 265) {
                MX = MX - 265;
        }
        if (OsY - MY < 110) {
                MY = MY - 110;
        }
        balloon.x = MX;
        balloon.y = MY;
        balloon.visible = true;
        balloon.balloontxt.text = ContekstSod;
        clearInterval(Interval);
}
 
function out(e:MouseEvent):void {
        balloon.visible = false;
        e.target.alpha = 1;
        clearInterval(Interval);
}

Подозреваю, что должна что-то написать вместо строчки
Код AS3:

e.target.alpha = 0.4;

Пыталась использовать класс ColorTransform, но не могу правильно написать код, при тестировании - ничего не срабатывает.

GBee 30.08.2012 15:46

http://silin.su/#AS3/filters/color

Hauts 30.08.2012 20:08

Koopa, очень конструктивно, да.

mirross, попробуйте в мувиках создать анимацию изменения цвета и при наведении запускать ее.

zerAlex2 30.08.2012 23:20

Возьми GreenShok Tint или их же TransformColorMatrix

Frost47rus 31.08.2012 14:32

Код AS3:

var ct:ColorTransform = new ColorTransform();
var someColor:uint = 151651; //код цвета
ct.color = someColor;
e.target.transform.colorTransform = ct;


mirross 31.08.2012 14:49

Hauts, Frost47rus - спасибо за помощь! Сейчас буду пробовать...

Подскажите пожалуйста еще, а чтобы мувик не локально заливался каким-либо цветом, а как бы тонировался - то есть если это, скажем, зеленая трехмерная коробочка - а при наведении "коробочка" меняет цвет и становится красная, какой параметр необходимо дописать и куда? Я так понимаю, что нужный эффект будет, если дописать свойство tintColor, но как правильно написать?

Wolsh 31.08.2012 16:34

Tint то как раз "заливает".
Вы смотрели вообще эту ссылку http://silin.su/#AS3/filters/color ?

mirross 31.08.2012 16:57

Мне и надо, чтоб заливало - если я на панели выбираю цвет - то заливает как раз так, как надо, объект не становится сплошным пятном, он остается объемным, только цвет меняется. Не знаю, внятно объяснила или нет. Например есть псевдообъемный куб, зеленый. И вот при наведении курсора мне нужно, чтобы он становился красным, при этом не превращаясь в пятно, а оставаясь таки кубом. У меня пока меняется только прозрачность, но мне нужно чтобы менялась не прозрачность, а цвет.
Ссылку смотрела, конечно. Только, простите, если уж я со своим кодом не знаю как справиться, чтоб решить как мне надо, задачу, то по данной ссылке я просто не поняла, чем мне может она помочь.

zerAlex2 31.08.2012 19:15

Цитата:

Сообщение от Wolsh (Сообщение 1094441)
Tint то как раз "заливает".

А colorMatrixFilter подкрашивает )

Код AS3:

import com.greensock.*; 
import com.greensock.easing.*;
 
TweenMax.to(mc, 1, {colorMatrixFilter:{colorize:0xff0000, amount:1}});

Тут сам GreenShok: http://www.greensock.com/v12/

mirross 03.09.2012 13:49

Цитата:

Сообщение от zerAlex2 (Сообщение 1094451)
Код AS3:

TweenMax.to(mc, 1, {colorMatrixFilter:{colorize:0xff0000, amount:1}});


Как подключить TweenMax? Скачать-то скачала, а что дальше делать? И mc - это же имя мувика? А если у меня мувики жестко не прописаны, то есть анимация совершается при прохождении курсора мыши над любым мувиком на сцене?

Добавлено через 5 минут
Вообще, задачку свою я решила, удалось добиться желаемого, просто создав еще один слой с теми же мувиками, только перекрашенными в другой нужный цвет уже. А на верхнем слое - те же мувики с исходным цветом, но теперь применяемая к ним прозрачность (которая у меня работала нормально) позволяет добиться эффекта, словно мувик из зеленого становится оранжевым при наведении курсора, а при убирании оного - обратно становится зеленым. Что мне и требовалось. Но мне все равно интересно до конца разобраться, как же можно было программным способом решить? Пока что ни одно предложенное решение я не сумела нормально внедрить в свой код :( Понимаю, что еще очень многого не знаю, но хотелось бы с вашей помощью разобраться!


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

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