Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-03-2006, 14:54   #1 (permalink)
\x3a\x6f\x29
 
Benutzerbild von [je]
 
Registriert seit: Apr 2004
Ort: paris
Beiträge: 806
[STUFF] ColorPicker F8

Hi, ich habe vor langem hier mal einen ColorPicker im Forum veröffentlicht. Der wurde auch froh weiter entwickelt. Bei einem Gespräch mit Janoscharlipp über das alte Gerät ist mir eine Idee mit Flash8 gekommen.

Ich denke es zeigt gut, wie man einmal BitmapData sinnvoll nicht nur für Spiele einsetzen kann.

Im Gegensatz zum alten ColorPicker wird keine Mathematik mehr benötigt. Das übernimmt jetzt alles Flash für uns.

Von daher viel übersichtlicher. Ich mag die Idee :o) Janoscharlipp nicht so.

ActionScript:
  1. import flash.display.BitmapData;
  2. import flash.geom.*;
  3.  
  4. Stage.scaleMode = 'noScale';
  5.  
  6. //-- init color picker
  7. var cp: Object = new Object;
  8.  
  9. //-- customize
  10. cp.width = 320;
  11. cp.height = 240;
  12.  
  13. //-- gradients
  14. cp.colors = [ 0xff0000, 0xff00ff, 0x0000ff, 0x00ffff, 0x00ff00, 0xffff00,  0xff0000 ];
  15. cp.alphas = new Array( cp.colors.length );
  16. cp.ratios = new Array( cp.colors.length );
  17. cp.matrix = { matrixType: 'box', x: 0, y: 0, w: cp.width, h: cp.height, r: Math.PI };
  18. cp.matrix2 = {matrixType: 'box', x: 0, y: 0, w: cp.width, h: cp.height, r: 1.5 * Math.PI };
  19. for ( var i: Number = 0; i < cp.colors.length; i++ )
  20. {
  21.     cp.alphas[ i ] = 100;
  22.     cp.ratios[ i ] = ( 0xff / ( cp.colors.length - 1 ) ) * i;
  23. }
  24.    
  25. //-- draw gradients
  26. var buffer: MovieClip = this.createEmptyMovieClip( '__buffer', this.getNextHighestDepth() );
  27. var gradient: MovieClip = buffer.createEmptyMovieClip( 'gradient', 1 );
  28. var gray: MovieClip = buffer.createEmptyMovieClip( 'gray', 2 );
  29.  
  30. gradient.clear();
  31. gray.clear();
  32.  
  33. gradient.beginGradientFill( 'linear', cp.colors, cp.alphas, cp.ratios, cp.matrix );
  34. {
  35.     gradient.lineTo( cp.width, 0 );
  36.     gradient.lineTo( cp.width, cp.height );
  37.     gradient.lineTo( 0, cp.height );
  38.     gradient.lineTo( 0, 0 );
  39. }
  40. gradient.endFill();
  41.  
  42. gray.beginGradientFill( 'linear', [ 0, 0x808080, 0xffffff ], [ 100, 0, 100 ], [ 0, 0x80, 0xff ], cp.matrix2 );
  43. {
  44.     gray.lineTo( cp.width, 0 );
  45.     gray.lineTo( cp.width, cp.height );
  46.     gray.lineTo( 0, cp.height );
  47.     gray.lineTo( 0, 0 );
  48. }
  49. gray.endFill();
  50.  
  51. //-- cache buffer
  52. buffer.cacheAsBitmap = true;
  53.  
  54. //-- set up bitmap data
  55. cp.bmp = new BitmapData( cp.width, cp.height, false, 0 );
  56. cp.bmp.draw( buffer, new Matrix(), new ColorTransform() );
  57.  
  58. //-- EXAMPLE! --
  59. buffer.onMouseDown = function( Void ): Void
  60. {
  61.     var color: Number;
  62.     var mx: Number = this._xmouse;
  63.     var my: Number = this._ymouse;
  64.    
  65.     if (mx >= 0 && mx <= cp.width &&
  66.         my >= 0 && my <= cp.height )
  67.     {
  68.         var x: Number = mx | 0;
  69.         var y: Number = my | 0;
  70.        
  71.         //-- read color from bitmapdata
  72.         color = cp.bmp.getPixel( x, y );
  73.        
  74.         //-- output color
  75.         var red: Number = (color & 0xff0000) >> 16;
  76.         var green: Number = (color & 0xff00) >> 8;
  77.         var blue: Number = color & 0xff;
  78.         trace( '('+red+','+green+','+blue+')' );
  79.     }
  80. };
  81.  
  82. //-- if you want to have a bitmap instead a movieclip on stage
  83. //buffer.removeMovieClip();
  84. //this.attachBitmap( cp.bmp, 1, 'auto', true );
  85.  
__________________
joa ebert
http://blog.joa-ebert.com/ - http://www.joa-ebert.com/
[je] ist offline   Mit Zitat antworten
Alt 20-03-2006, 16:45   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Thumbs up

Sehr schöne Lösung!
  Mit Zitat antworten
Alt 20-03-2006, 17:06   #3 (permalink)
Banned
 
Benutzerbild von _level0
 
Registriert seit: Jan 2006
Beiträge: 849
sehr schön gemacht ja, darf ich fragen warum die wahl auf ein mit flash berechnetes gradient feld gefallen ist und nich auf "die üblichen" 256 color + dem was du schon hast(mit fadeslider) und so weiter in form eine grafik gefallen ist, befürchtest du farbuntreuheit dadurch?
_level0 ist offline   Mit Zitat antworten
Alt 20-03-2006, 19:41   #4 (permalink)
\x3a\x6f\x29
 
Benutzerbild von [je]
 
Registriert seit: Apr 2004
Ort: paris
Beiträge: 806
Sicherlich ist die Farbe so nicht die schönste. Man hat auch Probleme (255,255,255) und (0,0,0) zu treffen. Aber ich wollte gerne etwas einfaches ohne 10 Slider haben.

Dafür finde ich das Ergebnis schon recht gut. Wie gesagt, man kann alles auch selbst errechnen, doch so übernimmt Flash die Rechnerei.

Was fehlt wäre noch ein Weg die Sättigung einzustellen. Helligkeit und Dunkelheit habe ich ja. So kommt man auf min. 3 Dimensionen. Es wäre sicher eine tolle Sache das ganze mal als Würfel zu basteln. Dafür habe ich aber heute zu wenig Zeit :)

(Anstatt mx | 0 könnte man auch Math.round( mx ) nehmen, wäre schonmal genauer)
__________________
joa ebert
http://blog.joa-ebert.com/ - http://www.joa-ebert.com/

Geändert von [je] (20-03-2006 um 19:43 Uhr)
[je] ist offline   Mit Zitat antworten
Alt 20-03-2006, 19:47   #5 (permalink)
Banned
 
Benutzerbild von _level0
 
Registriert seit: Jan 2006
Beiträge: 849
Zitat:
Zitat von [je]
Sicherlich ist die Farbe so nicht die schönste. Man hat auch Probleme (255,255,255) und (0,0,0) zu treffen. Aber ich wollte gerne etwas einfaches ohne 10 Slider haben.

Dafür finde ich das Ergebnis schon recht gut. Wie gesagt, man kann alles auch selbst errechnen, doch so übernimmt Flash die Rechnerei.

Was fehlt wäre noch ein Weg die Sättigung einzustellen. Helligkeit und Dunkelheit habe ich ja. So kommt man auf min. 3 Dimensionen. Es wäre sicher eine tolle Sache das ganze mal als Würfel zu basteln. Dafür habe ich aber heute zu wenig Zeit
sollte auch keine kritik sein ich finde deinen colorpicker hervorragend, nur da ich unter 2004 selber schonmal einen gecodet hab wo ich damals praktich hintenrum grafiken hatte und nur sättigung und einzelne farbslider noch mit drin hatte und mir dann die farbwerte anhand der mausposition ausgerechenet habe,weiss ich was das für ne mistige rechnerei war, vor allem in so einem gradient feld welches du mit flash erzeugst, kompliment, daher nur die frage was dich dazu bewog und ob man die farbwerte dann nicht wirklich trifft durch veränderungen der grafiken beim kompriemieren mittels flash.

Geändert von _level0 (20-03-2006 um 19:48 Uhr)
_level0 ist offline   Mit Zitat antworten
Alt 21-03-2006, 11:40   #6 (permalink)
\x3a\x6f\x29
 
Benutzerbild von [je]
 
Registriert seit: Apr 2004
Ort: paris
Beiträge: 806
Farbwerte werden durch komprimierung nicht verfälscht. Über beginGradientFill wird diese ja jedes mal neu gezeichnet und wenn BitmapData auch nicht intern irgend etwas dreht müssten es echte Werte sein.
__________________
joa ebert
http://blog.joa-ebert.com/ - http://www.joa-ebert.com/
[je] ist offline   Mit Zitat antworten
Alt 21-03-2006, 12:18   #7 (permalink)
Banned
 
Benutzerbild von _level0
 
Registriert seit: Jan 2006
Beiträge: 849
Zitat:
Zitat von [je]
Farbwerte werden durch komprimierung nicht verfälscht. Über beginGradientFill wird diese ja jedes mal neu gezeichnet und wenn BitmapData auch nicht intern irgend etwas dreht müssten es echte Werte sein.
löl

schon klar ich meinte ja beim einsatz von screenshots zum beispiel auf flash/ps oder ähnlicher software, die kann man dann ja auch umwandeln in mc´s und mittels der mausposition dann die position auf dem bild somit den px und daraus den farbwert erkennen, wie gesagt falls die farbwerte der grafiken nicht durch screenshot oder kompression verfäscht werden...

ein missverständniss, sorry
_level0 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 19:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele