Просмотр полной версии : как поменять цвет кнопки програмно
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 без дублирования нельзя, правильно я все понимаю????
Хреновый скрипт.
Дюже большой.
Кроме того спрашивали про кнопку,
а ты мувик тулишь.
Надо просто на onRealise /кнопку отпустили, значит уже
по ней сходили/ повесить newColor.
И ВСЁ!
На кнопку kn1 вешаем
on (release) {
tt=new Color(kn1);
tt.setRGB(0xff00ff);
}
И ВСЁ! :D
Правда по проще будет?
2K WebStudio
02.09.2003, 19:39
Оригинал написал(а) Штрек
Хреновый скрипт.
Дюже большой.
Кроме того спрашивали про кнопку,
а ты мувик тулишь.
Надо просто на onRealise /кнопку отпустили, значит уже
по ней сходили/ повесить newColor.
И ВСЁ!
Так вот!
То, что он просил это всё понятно, просто объяснять что, к какому мувику приладить - мне влом!!!
А тут всё понятно!
А если ты можешь сократить этот скрипт и ещё и объяснить что к чему - я буду очень рад!
Не нужны здесь никакие мувики /о чём с самого начала и говорилось/ - это как винтом гвозди забивать. :D
robotech
04.09.2003, 13:05
Код простой, но у меня не работает в том виде который тут написан, может чтото нужно изменить?? Что такое kn1 ?
Объясни как он работает! Если не влом ;)
А так, спасибо за отклик!
robotech
04.09.2003, 13:09
Я уже и сам разобрался:
kn1 - индивидуальное имя кнопки (Instance).
Спасибо, все пашет, без шума и пыли!!!
robotech
04.09.2003, 13:16
Тут только вопрос назрел сам собой:
а можна чтобы кроме цвета еще и мувик заменялся, тоесть кнопка не посещенная одна, а посещенная другая?????
Но тоже не прибегая к мувику а просто код на кнопке...
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?Если я тебя правельно понял, то тебе сюда (http://blooddy.at.tut.by/colour.html).
SKIFAXEL
10.04.2004, 16:58
2 BlooDHounD
спасибо, но прикол в том что данный код не прокатывает для tt.setRGB(0x993366);
тут работает что то типа 0xRRGGBB
только вот с какого края к этому подступиться я не пойму. каждый цвет в ргб использует 3.х значное число, то что я пытаюсь внести туда теряет смысл. может кто знает как найти правельный цвет?
BlooDHounD
10.04.2004, 17:09
это и есть 0xRRGGBB? только оно выглядит #RRGGBB!
Это то самое и это катит. Формат 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);
а как пользоваться теми цветами так и не нашел, так тоже пробовал, фигня какаято выходит. светлоту отрегулировать не удается, синий лезет, если есть желание сами попробуйте.
уф, глупый какой.
А ты вообще знаешь, что такое система счисления?
SKIFAXEL
10.04.2004, 17:49
неа не заю
Хаунд, слышишь, а мы тут распинаемся...
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, если я вас правильно понял, то вам сюда (http://www.gramota.ru/) :))
(шутка :) )
BlooDHounD
10.04.2004, 18:13
BlooDHounD, если я вас правильно понял, то вам сюда (http://www.gramota.ru/) :))
(шутка :) )Для нерусского помойму моя русский ничаво.
SKIFAXEL
10.04.2004, 18:28
2Dindin
статью прочитал, не могу суазать что я об этом не слышал или не имел понятия, но все равно спасибо.
2BlooDHounD
большое спасибо, пролил свет, теперь принцип понял, знаю что искать.
еще раз всем спасибо, удачи.
artfla$her
11.04.2004, 02:26
О 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
Заинтересуетесь, напишу, только кому это надо...Мне!
Клуб любителей Хэлпа,
предлагает всем прекратить заниматься хернёй. :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
Как говорится: НАЧАЛИ ЗА ЗДРАВИЕ, КОНЧИЛИ ЗА УПОКОЙ...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.