ncannasse пре 12 година
родитељ
комит
c27c01eb92
2 измењених фајлова са 46 додато и 18 уклоњено
  1. 39 13
      h2d/comp/ColorPicker.hx
  2. 7 5
      h2d/comp/GradientEditor.hx

+ 39 - 13
h2d/comp/ColorPicker.hx

@@ -505,12 +505,42 @@ class ColorPicker extends h2d.comp.Component {
 	var gaugeGreen : ColorGauge;
 	var gaugeBlue : ColorGauge;
 	var gaugeAlpha : ColorGauge;
+	var timer : haxe.Timer;
+	
+	public var color(get, set) : Int;
 	
 	public function new(?parent) {
 		super("colorpicker", parent);
 		init();
 	}
 	
+	inline function get_color() {
+		return finalColor.color;
+	}
+	
+	inline function set_color(v) {
+		finalColor.color = v;
+		palette.setColorFrom(v);
+		chart.setColorFrom(v);
+		return v;
+	}
+	
+	override function onAlloc() {
+		super.onAlloc();
+		if( timer == null ) {
+			timer = new haxe.Timer(10);
+			timer.run = doUpdate;
+		}
+	}
+	
+	override function onDelete() {
+		super.onDelete();
+		if( timer != null ) {
+			timer.stop();
+			timer = null;
+		}
+	}
+	
 	inline function init() {
 		finalColor = new Color(15, 8, 175, 45, this);
 		palette = new Palette(16, 65, 20, 140, this);
@@ -521,13 +551,16 @@ class ColorPicker extends h2d.comp.Component {
 		gaugeAlpha = new ColorGauge(50, 295, 140, 15, RGBA.A, this);
 		chart.refColor = palette.color;
 		change = SNone;
-		
-		#if flash
-		flash.Lib.current.stage.addEventListener(flash.events.Event.ENTER_FRAME, doUpdate);
-		#end
+		var close = new Button("X", this);
+		close.addStyleString("layout:absolute;font-size:12px;height:10px;width:10px;");
+		close.x = 175;
+		close.y = 10;
+		close.onClick = function() {
+			onClose();
+		};
 	}
 
-	function doUpdate(_) {
+	function doUpdate() {
 		finalColor.preview = chart.color;
 		if(change.equals(SNone)) {
 			if(finalColor.color != chart.color) {
@@ -556,14 +589,7 @@ class ColorPicker extends h2d.comp.Component {
 		gaugeBlue.color = chart.color;
 	}
 	
-	public function show(color:Int) {
-		finalColor.color = color;
-		palette.setColorFrom(finalColor.color);
-		chart.setColorFrom(finalColor.color);
-		visible = true;
-	}
-	public function hide () {
-		visible = false;
+	public dynamic function onClose() {
 	}
 	
 	public dynamic function onChange( value : Int ) {

+ 7 - 5
h2d/comp/GradientEditor.hx

@@ -151,7 +151,7 @@ private class Cursor extends h2d.Sprite {
 		flag = new CFlag(cursor, 0, 0, ang, color, bgcolor);
 		
 		if(GradientEditor.colorPicker.visible)
-			GradientEditor.colorPicker.show(color);
+			GradientEditor.colorPicker.color = color;
 	}
 	
 	public function unselect() {
@@ -290,8 +290,9 @@ private class ColorSelector extends h2d.Sprite {
 			if(target == null)
 				return;
 			
-			if(!GradientEditor.colorPicker.visible){
-				GradientEditor.colorPicker.show(color);
+			if(!GradientEditor.colorPicker.visible) {
+				GradientEditor.colorPicker.visible = true;
+				GradientEditor.colorPicker.color = color;
 				GradientEditor.colorPicker.y = 220;
 				GradientEditor.colorPicker.onChange = function(v) {
 					color = target.value = v;
@@ -301,7 +302,7 @@ private class ColorSelector extends h2d.Sprite {
 			}
 			else {
 				GradientEditor.colorPicker.onChange = function(v) { };
-				GradientEditor.colorPicker.hide();
+				GradientEditor.colorPicker.visible = false;
 				GradientEditor.colorPicker.y = -500;
 			}
 		};
@@ -375,6 +376,7 @@ class GradientEditor extends h2d.comp.Component {
 	
 	var interactUp:h2d.Interactive;
 	var interactDown:h2d.Interactive;
+		
 	
 	var holdCursor:Cursor;
 	
@@ -408,7 +410,7 @@ class GradientEditor extends h2d.comp.Component {
 		
 		colorPicker = new ColorPicker(this);
 		colorPicker.y = -500;
-		colorPicker.hide();
+		colorPicker.visible = false;
 		
 		//
 		colorsKeys.push( new Cursor(0, boxHeight, KColor, 0xFFFFFFFF, Math.PI,  box));