Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-02-2004, 18:47   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
Grafiken stuffenweise einfärben

Ein Problem, das ich seit Monaten nicht lösen kann:
Wie kann ich mit einem Button-Klick die Farbe einer Grafik (oder Movieclips) schrittweise verändern.
Das heißt zB. die Rotanteile einer Farbe mit
jedem Klick um 25% erhöhen.

Ich habe eine Ersatzlösung ausgetüftelt,
zu sehen unter:
www.internetkafe.de/gb.swf
(unten rechts klicken).
Ich habe hier mit Transparenzen gearbeitet.
Es ist aber sehr aufwändig, und gibt keine satten Farben.

Alle Versuche mit settransform und setrgb sind bis jetz gescheitert.
Weiß jemand rat?
wojtexkowron ist offline   Mit Zitat antworten
Alt 03-02-2004, 18:56   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Schau mal hier, vielleicht ist der Downloadlink noch vorhanden!!
war ein sehr schönes bsp!!
auf ganzzahl runden
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 04-02-2004, 08:29   #3 (permalink)
Schrottkunst
 
Benutzerbild von angelikab
 
Registriert seit: Jun 2001
Ort: südlicher
Beiträge: 898
@wojtexkowron, das ist aber wirklich klasse, i'm impressed

wie
geht
das?
angelikab ist offline   Mit Zitat antworten
Alt 04-02-2004, 19:37   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
@angelikab
Danke.
Wie das geht? Bis jetzt nur mit Blut, Schweiss und Tränen. Und viel Ebenen, setvars und ifs.

@RustyCake
Danke ebenfals. Der Downloadlink war noch da.
Diesen Weg habe ich schon versucht zu gehen, bin aber bis jetzt gescheitert.
In dem Beispiel ist eigentlich schon alles da.
Nur daß ich statt Regler eine Schaltfläche brauche.
Ich habe schon versucht es meinen Bedürfnissen anzupassen. Bis jetzt aber ohne Erfolg.
Nach meinem Verständnis müste ich einfach an der Stelle der Werte für rb, gb, bb Variablennamen schreiben (redvalue, greenvalue, bluevalue) und dann als Buttonaktion die Werte für diese Variablen setzen.
Also:
ra:'100', rb:'_redvalue', ...usw
und dann Buttonaktion:
_redvalue=_redvalue+50

Haut aber nicht hin

Gruß
wojtexkowron ist offline   Mit Zitat antworten
Alt 04-02-2004, 20:22   #5 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
kenn mich mit dem Color zeugs net so gut aus!!
vielleicht hilft Dir sowas!!
ActionScript:
  1. function comboRGB(r, g, b) {
  2.     var RGB = (r << 16) | (g << 8) | b;
  3.     return RGB;
  4. }
  5. myColor = new Color(mc);
  6. myColor.setRGB(comboRGB(0, 160, 160));
  7. var i=2;
  8. btn.onPress=function(){
  9.     myColor.setRGB(comboRGB(63*i, 63*i,63*i));
  10.     i++;
  11. }
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 04-02-2004, 21:08   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
@Rustycake

Danke, es funktioniert!

Ich habe aber ein Problem: Ich verstehe es nicht.
Kannst Du vielleicht die einzelne Komponenten kurz erklären damit ich den Script für meine Bedürfnisse anpassen kann?
ZB:
Bedeutet das


ActionScript:
  1. myColor.setRGB(comboRGB(63*i, 63*i,63*i));

dass mit jedem Buttonklick der Wert von rb, gb und bb um 126 erhöht wird?

Und warum das:

ActionScript:
  1. RGB = (r << 16) | (g << 8) | b;
?
wojtexkowron ist offline   Mit Zitat antworten
Alt 04-02-2004, 21:12   #7 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
ne des wird jeweils um den wert der variable i erhöht!!
also x 2, x 3, usw!!
des zweite hack die 6 stellige RGB in drei teile!!
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 04-02-2004, 21:57   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
Es ist schon fast alles prima.

Zwei Fragen noch:
1.
Nach jedem Schritt wird es zuerst heller ond dann wird es schwarz.
Man muß also den Gesamtwert begrenzen, es darf nicht kleiner als 0 und nicht grössser als 255 sein.

2.
Ich muß da noch eine Bedingung einbauen:

ActionScript:
  1. if (_rotklick>0)

An welcher Stelle kann ich das tun?
wojtexkowron ist offline   Mit Zitat antworten
Alt 05-02-2004, 14:15   #9 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
aber zwischen 0 und 255 soll des teil immer rotieren?
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 05-02-2004, 18:44   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
Nein, nicht rotieren.
Es soll wie bemalen mit subtraktiven Grundfarben (cmy) sein.
Unter
www.internetkafe.de/gb.swf
kannst Du in etwa sehen was ich meine.

Vielleicht kann man statt "63*i" "256/i" schreiben. Dann nähert sich der Wert asymptotisch von 255 dem null.

Noch etwas: Ich glaube in deinem Skript ist ein Fehler: Ich kriege nie einen Grünton.
Egal wie ich die Werte ändere. Ich vermute, da ist was bei der Teilung der sechsstelligen rgb-Zahl nicht korrekt.
Kann das sein?
wojtexkowron ist offline   Mit Zitat antworten
Alt 05-02-2004, 19:50   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
ne des script is schon ok!!
hier ein kleiner test!!
ActionScript:
  1. tl = this;
  2. for (i=0; i<63; i++) {
  3.     tl.mc.duplicateMovieClip("d_mc"+i, i);
  4.     tl["d_mc"+i]._x = (i%9)*60;
  5.     tl["d_mc"+i]._y = Math.floor(i/9)*60;
  6.     setInterval(gool, 10, ["d_mc"+i]);
  7. }
  8. function comboRGB(r, g, b) {
  9.     var RGB = (r << 16) | (g << 8) | b;
  10.     return RGB;
  11. }
  12. function gool(mc) {
  13.     var mr1 = Math.ceil(Math.random()*255);
  14.     var mr2 = Math.ceil(Math.random()*255);
  15.     var mr3 = Math.ceil(Math.random()*255);
  16.     myColor = new Color(mc);
  17.     myColor.setRGB(comboRGB(mr1, mr2, mr3));
  18. }
bei dem dingens mit 63*i, kann schon sein das da kein gruen war, hab da garnet aufgepasst !!
also des teil soll von 256 runtergeschraubt werden bis =, und dann is ruhe im kartong!!
und bei allen drei werten!!??
Angehängte Dateien
Dateityp: zip colorkick.zip (3,1 KB, 18x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 05-02-2004, 21:00   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
Ja.
Das soll so gehen:
Ich klicke erst cyan-Button an und dann klicke eine Fläche an, die sich (sagen wir) zu 50% in cyan einfärbt.
Dann klicke ich gelb und anschliessend wieder die gleiche Fläche, die jetzt grün wird. Wenn ich sie nochmals anklicke wird sie gelbgrün,
bei jedem nächsten Klick wird sie immer gelber.
Wenn ich ale drei Farben immer wieder mische, wird die Fläche irgendwann schwarz aber niemals weiss.
Es soll halt so sein wie beim richtigen Malen.

Logischerweise müsste man den Movieclip in magenta einfärben können indem man den Grünanteil herunterfährt. Also:

var i = 2;
btn.onPress = function() {
myColor.setRGB(comboRGB(0*i, -256/i, 0*i));


Stattdessen wird beim ersten Klick eine weiße Fläche orangenfarben und bei jedem nächsten immer gelber.

Geändert von wojtexkowron (05-02-2004 um 21:02 Uhr)
wojtexkowron ist offline   Mit Zitat antworten
Alt 05-02-2004, 21:18   #13 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Hhhm! ganz schön knifflig!!


hab mir dein teilo, sieht übrigens witzig aus angeguckt!!
ich schlaf mal ne nacht drüber
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 06-02-2004, 13:34   #14 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 71
@Rustycake
Der erste Einfall ist immer der beste.
Es ist mir gelungen das Skript von der Autokarosserie für meine Zwecke umzuschreiben. Es funktioniert alles wunderbar.
Die Farbwerte werden erst auf 255 eingestellt und dann bei jedem Klick durch 2 geteilt.
Danke!

Geändert von wojtexkowron (06-02-2004 um 13:36 Uhr)
wojtexkowron ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele