PDA

Volledige versie bekijken : dynamische buttons


StevenW
%Europe/Berlin %942 %2006, 23:36
Ik probeer een dynamische button-reeks te maken. Elke button moet er hetzelfde uit komen te zien, maar steeds met een andere tekst. Wanneer de muis over de button gaat word de achtergrond kleur veranderd en ook de kleur van de tekst.

Het is me gelukt om zo'n statische button te maken, maar dynamisch loop ik vast:



for(var i=0;i<art.length;i++){
_root.panel1.attachMovie("button",("b"+i),_root.panel1.getNextHighestDepth(),{_x:0,_y:30 +(i*20)});
_root.panel1["b"+i].onRollOver= over;
_root.panel1["b"+i].onRollOut= out;
_root.panel1["b"+i].createTextField("tf"+i,_root.panel1["b"+i].getNextHighestDepth(),5,0,139,18);
_root.panel1["b"+i]["tf"+i].text=art[i];
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFFFFFF;//kleur moet veranderen (het liefst geleidelijk zoals 'tweening')
_root.panel1["b"+i]["tf"+i].setTextFormat(my_fmt);


}

function over() {
this.gotoAndPlay(2);
}

function out() {
this.gotoAndPlay(7);
}


tips zijn welkom :)

Emveedee
%Europe/Berlin %945 %2006, 23:41
_root.panel1["b"+i].onRollOver= over;
_root.panel1["b"+i].onRollOut= out;
//wordt
_root.panel1["b"+i].onRollOver = function(){over()};
_root.panel1["b"+i].onRollOut = function(){ out()};

Erwinzzz
%Europe/Berlin %950 %2006, 23:48
En over die kleur: het leuke van de 0x notatie bij kleuren is dat het gewoon een getal is(een hexadecimaal getal). Om te tweenen kan je dus gewoon met een onEnterFrame er 1 bij optellen. Let wel op: het moet in goede verhouding gaan, je de eerste 2 tekens zijn rood, de tweede 2 zijn groen, en de laatste 2 zijn blauw. Ff een voorbeeldje ter verduidelijking:

//De kleur zal van wit naar blauw tweenen:
my_fmt.color = 0x000000;
this.onEnterFrame = function(){
my_fmt.color += 0x000001;
}
//
//
//De Kleur zal van wit naar groen tweenen:
my_fmt.color = 0x000000;
this.onEnterFrame = function(){
my_fmt.color += 0x000100;
}
//
//
//De kleur zal van wit naar rood tweenen:
my_fmt.color = 0x000000;
this.onEnterFrame = function(){
my_fmt.color += 0x010000;
}

Waneer alle drie de setjes van 2 gelijk zijn, krijgt je dus een grijstint(wit, zwart of grijs). Hier kan je een beetje mee klooien om het goede resultaat te krijgen.

StevenW
%Europe/Berlin %007 %2006, 01:10
0x000000 is zwart en niet wit. wit is toch 0xffffff? Hoe doe je dat met letters?

Erwinzzz
%Europe/Berlin %296 %2006, 08:06
0x000000 is zwart en niet wit. wit is toch 0xffffff? Hoe doe je dat met letters?
O sorry je hebt gelijk ja... hoe bedoel je met letters... ?
//edit: bedoel je niet die FF enzovoorts? Nou dat is 'simpel': 0xFFFFFF is gewoon een getal. Het hexadicimale stelsel is hetzelfde als ons decimale stelsel( van 0 tot 9). De letters staat dus gewoon voor een getal. Hieronder een rijtje om dat ff aan te geven:
1 = 0x000001;
2 = 0x000002
9 = 0x000009
10 = 0x00000A
11 = 0x00000B
15 = 0x00000F
16 = 0x000010

Je kan dus zo met minder tekens een hoger cijfer creeeren. En aangezien de letters ook gewoon voor cijfers staat kan je gewoon + 1 gebruiken en natuurlijk ook + 0x000001 maar ook 0x00000F

Ik hoop dat je begrijpt wat ik bedoel..

StevenW
%Europe/Berlin %462 %2006, 12:06
Ik wil 0xff9900 bereiken in 20 frames en ik begin bij 0xffffff.
f=15 dus alleen 9,9,0 en 0 moeten worden veranderd.
Bij 9 stappen van 0,6 en bij 0 stappen van 1,5. Is dat mogelijk?

StevenW
%Europe/Berlin %511 %2006, 13:17
ik wilde deze dynamisch maken maar ik kom er niet uit. Iemand een idee hoe ik dit kan doen?
De tekst van de button moet ook iedere keer anders zijn, dus de instance name ook toch?

(voorbeeld in de bijlagen is van www.gotoandlearn.com)