Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   как поменять цвет кнопки програмно (http://www.flasher.ru/forum/showthread.php?t=48534)

robotech 29.08.2003 14:07

как поменять цвет кнопки програмно
 
Такая проблема:
хочу сделать кнопку, которая будет менять цвет при нажатии, тоесть не посещенные кнопки - один цвет, посещенные кнопки - другой, при этом незасовывая в мувик, а просто делаеш один символ кнопки и вешаеш на копии разные URL, и есстественно сам код по замене цвета

Dimonius 29.08.2003 14:35

Запихивай в мувик. Так надежнее. А так как кнопка - это тот же мувик только с зашитыми системными функциями, то смысла нет путать все дело ИМХО.

2K WebStudio 29.08.2003 19:46

Ха!
 
Цитата:

Оригинал написал(а) Dimonius
Запихивай в мувик. Так надежнее. А так как кнопка - это тот же мувик только с зашитыми системными функциями, то смысла нет путать все дело ИМХО.
Хорошо сказал, если не затруднит, объясни, чем же это надёжнее?
А вот ответ:
Вставь это на первый кадр мувика!

k = 4;
kx = 100;
ky = 20;
links=new Array("0xff0000", "0x00ff00", "0x0000ff");
//links[0] - link
//links[1] - alink
//links[2] - vlink
for (i=0; i<k; i++) {
mc = _root.createEmptyMovieClip("button"+i, i);
mc._x += (kx+20)*i;
mc.beginFill(0xffffff, 100);
mc.lineTo(0, ky);
mc.lineTo(kx, 0);
mc.moveTo(kx, ky);
mc.lineTo(0, ky);
mc.lineTo(kx, 0);
mc.endFill();
_root["button"+i].c = new Color(["button"+i]);
//Íàçûâàòü ïåðåìåííóþ ñ - color íåëüçÿ!
_root["button"+i].c.setRGB(links[0]);
mc.onPress = function() {
_root.lastactivelink.c.setRGB(links[2]);
this.c.setRGB(links[1]);
_root.lastactivelink=this;
};
}
Если ты мне расскажешь, как пользоваться beginGradientFill, я буду очень рад и благодарен!!!

robotech 02.09.2003 13:01

Как пользоваться beginGradientFill даже не имею представления!!! А за код спасибо! Хотя я еще не пробовал применить его и несовсем понимаю! Это мувик, правильно? Просто вытащить его из библиотеки и поменять только URL без дублирования нельзя, правильно я все понимаю????

Штрек 02.09.2003 15:13

Хреновый скрипт.
Дюже большой.
Кроме того спрашивали про кнопку,
а ты мувик тулишь.
Надо просто на onRealise /кнопку отпустили, значит уже
по ней сходили/ повесить newColor.
И ВСЁ!

Штрек 02.09.2003 15:22

На кнопку kn1 вешаем
on (release) {
tt=new Color(kn1);
tt.setRGB(0xff00ff);
}
И ВСЁ! :D
Правда по проще будет?

2K WebStudio 02.09.2003 19:39

Цитата:

Оригинал написал(а) Штрек
Хреновый скрипт.
Дюже большой.
Кроме того спрашивали про кнопку,
а ты мувик тулишь.
Надо просто на onRealise /кнопку отпустили, значит уже
по ней сходили/ повесить newColor.
И ВСЁ!

Так вот!
То, что он просил это всё понятно, просто объяснять что, к какому мувику приладить - мне влом!!!
А тут всё понятно!
А если ты можешь сократить этот скрипт и ещё и объяснить что к чему - я буду очень рад!

Штрек 02.09.2003 22:33

Не нужны здесь никакие мувики /о чём с самого начала и говорилось/ - это как винтом гвозди забивать. :D

robotech 04.09.2003 13:05

Код простой, но у меня не работает в том виде который тут написан, может чтото нужно изменить?? Что такое kn1 ?
Объясни как он работает! Если не влом ;)
А так, спасибо за отклик!

robotech 04.09.2003 13:09

Я уже и сам разобрался:

kn1 - индивидуальное имя кнопки (Instance).

Спасибо, все пашет, без шума и пыли!!!

robotech 04.09.2003 13:16

Тут только вопрос назрел сам собой:
а можна чтобы кроме цвета еще и мувик заменялся, тоесть кнопка не посещенная одна, а посещенная другая?????
Но тоже не прибегая к мувику а просто код на кнопке...

Luke 04.09.2003 15:11

2 robotech
И зачем тебе такие извращения? :rolleyes:
Ну так уж и быть. Самому наверное сложно догадаться. Вариантов масса.

Например:
Рисуешь вторую кнопку, делаешь _visible = false, enabled = false. При нажатии меняешь на true.

Уж извини, расписывать я не буду. Подумай головой. ;)

robotech 05.09.2003 17:41

Это я знаю, спасибо за совет...

SKIFAXEL 10.04.2004 06:28

Люди!!! может кто знает где можно таблицу индексных цветов найти под тип 0xff00ff?

BlooDHounD 10.04.2004 15:31

2 SKIFAXEL:
Цитата:

Люди!!! может кто знает где можно таблицу индексных цветов найти под тип 0xff00ff?
Если я тебя правельно понял, то тебе сюда.

SKIFAXEL 10.04.2004 16:58

2 BlooDHounD
спасибо, но прикол в том что данный код не прокатывает для tt.setRGB(0x993366);
тут работает что то типа 0xRRGGBB
только вот с какого края к этому подступиться я не пойму. каждый цвет в ргб использует 3.х значное число, то что я пытаюсь внести туда теряет смысл. может кто знает как найти правельный цвет?

BlooDHounD 10.04.2004 17:09

это и есть 0xRRGGBB? только оно выглядит #RRGGBB!

Dindin 10.04.2004 17:11

Это то самое и это катит. Формат 0x000000 представляет собой шестнадцатеричное число, то есть например в десятичной эргебе 204.204.153, а в шеснадцатеричной - сссс99 или 0xCCCC99 или #CCCC99. А хаунд тебе прислал таблицу этих соответствий. (а вообще-то такие вещи в уме считать надо)

BlooDHounD 10.04.2004 17:19

Правельно!

SKIFAXEL 10.04.2004 17:45

из положения выкрутился другой функцией
myColor = new Color(www);
myColorTransform = new Object();
myColorTransform = {ra:'50', rb:'200', ga:'40', gb:'181', ba:'12', bb:'151', aa:'40', ab:'70'};
myColor.setTransform(myColorTransform);
а как пользоваться теми цветами так и не нашел, так тоже пробовал, фигня какаято выходит. светлоту отрегулировать не удается, синий лезет, если есть желание сами попробуйте.

Dindin 10.04.2004 17:47

уф, глупый какой.
А ты вообще знаешь, что такое система счисления?

SKIFAXEL 10.04.2004 17:49

неа не заю

Dindin 10.04.2004 17:54

Хаунд, слышишь, а мы тут распинаемся...
http://tmn.fio.ru/works/52x/306/r2.htm
^
|
Вот тут очень просто. Для школьноков. Тебе, SKIFAXEL, читать обязательно!

А может ты прикалываешься? $)

BlooDHounD 10.04.2004 18:06

Тяжолый случай!

В повседневной жизни мы используем деситичную систему исчесления (DEC), кроме которой существует множество других систем необходимых человеку в жизни:

* BIN - двоичная
* OCT - восьмиричная
* HEX - шестнадцатиричная
и другие.

Ниже приведина таблица, которая показывает элементы некоторых систем исчесления:
BIN | 0 1
DEC | 0 1 2 3 4 5 6 7 8 9
HEX | 0 1 2 3 4 5 6 7 8 9 A B C D E F

Пример: преобрезование числа из одной системы исчисления в другую:
12 = 1100 = C
DEC BIN HEX

И в цветах:
DEC: R=35 G=139 B=165
HEX: R=23 G=8B B=A5, или #238BA5

А вот так 0x238BA5 пердаётся HEX-число в языках програмирывания (например C, Delphi), работая, например, с адресами памяти.

BlooDHounD 10.04.2004 18:08

Не успел! Dindin, не даёшь в учителя поиграть!

Nox Noctis 10.04.2004 18:10

BlooDHounD, если я вас правильно понял, то вам сюда :))

(шутка :) )

BlooDHounD 10.04.2004 18:13

Цитата:

BlooDHounD, если я вас правильно понял, то вам сюда :))

(шутка :) )
Для нерусского помойму моя русский ничаво.

SKIFAXEL 10.04.2004 18:28

2Dindin
статью прочитал, не могу суазать что я об этом не слышал или не имел понятия, но все равно спасибо.
2BlooDHounD
большое спасибо, пролил свет, теперь принцип понял, знаю что искать.
еще раз всем спасибо, удачи.

artfla$her 11.04.2004 02:26

beginGradientFill
 
О beginGradientFill - beginGradientFill(<тип>, <цвета>, <прозрачности>, <площади>, <преобразования>)
первый параметр - "linear"/"radial"
второй параметр - массив цветов (мин. два цвета)
третий - массив прозрачностей для цветов
четвертый - массив площадей, занимаемых цветами. Вся площадь объекта - 255.
пятый параметр - экземпляр Object - а, в котором есть свойства {matrixType:"box"/*всегда box, кажется*/, x: абсцисса левого верхнего угла заливки, y:ордината -//-, w:ширина заливки, h:высота, r:угол поворота в радианах}.
Например myObj = {matrixType:"box", x:50, y:50, w:150, h:150, r:180*Math.Pi};
Пятый параметр может быть и другого вида - в виде матрицы, но лень писать... Много.... Заинтересуетесь, напишу, только кому это надо...

BlooDHounD 11.04.2004 04:18

Re: beginGradientFill
 
Цитата:

Заинтересуетесь, напишу, только кому это надо...
Мне!

Штрек 11.04.2004 04:37

Клуб любителей Хэлпа,
предлагает всем прекратить заниматься хернёй. :p

artfla$her 12.04.2004 00:32

Ну раз надо так надо:) Значит, последний параметр может быть сложного типа - в виде матрицы. Вот так
a b c
d e f
g h i
Вот так и задаешь этот параметр, например {a:150, b:0,c:0,d:0,e:150,f:0,g:200,h:200,i:0}
a и e, это, кажется, высота и ширина, g вроде бы коррдината y а h - x. Короче, поэксперементируй.... Я до конца не разобрался с этой левой матрицей.

Вот пример использования beginGradientFill

_root.onLoad= function() {
clear();
lineStyle(2, random(0xFFFFFF));
moveTo(100, 100);
beginGradientFill("radial", [random(0xFFFFFF), random(0xFFFFFF), random(0xFFFFFF), random(0xFFFFFF)], [100, 100, 100, 100], [50, 100, 150, 255], {matrixType:"box", x:75, y:50, w:200, h:200, r:0});
//beginGradientFill("linear", [0xFF0000, 0x00FF00, 0x0000FF, 0x000000], [100, 100, 100, 100], [50, 100, 150, 255], {a:200, b:0, c:0, d:200, e:200, f:0, g:250, h:200, i:0});
lineTo(250, 100);
lineTo(250, 200);
lineTo(100, 200);
lineTo(100, 100);
endFill;
};
_root.onMouseDown=_root.onLoad;

robotech 13.04.2004 13:31

Как говорится: НАЧАЛИ ЗА ЗДРАВИЕ, КОНЧИЛИ ЗА УПОКОЙ...


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

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