Index: as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControlScript.as
===================================================================
--- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControlScript.as (リビジョン 1152)
+++ as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControlScript.as (リビジョン 1155)
@@ -4,4 +4,5 @@
import mx.events.DragEvent;
import mx.events.FlexEvent;
+import mx.events.SliderEvent;
public static const LAYER_ACTION_CREATE:uint = 1;
@@ -29,8 +30,10 @@
copyLayerButton.addEventListener(FlexEvent.BUTTON_DOWN, copyLayerHandler);
deleteLayerButton.addEventListener(FlexEvent.BUTTON_DOWN, deleteLayerHandler);
-
+
layerDataGrid.addEventListener(mx.events.DataGridEvent.ITEM_FOCUS_IN, itemFocusHandler);
layerDataGrid.addEventListener('describeChange', itemCheckChangeHandler);
-
+
+ alphaSlider.addEventListener(SliderEvent.CHANGE, alphaSliderHandler);
+
this.enabled = false;
}
@@ -41,5 +44,5 @@
_layers = can.layers;
this.enabled = true;
- syncWithLayersAndCanvas();
+ syncWithLayersAlphaCanvas();
layerDataGrid.selectedIndex = 0;
/*
@@ -52,13 +55,25 @@
private function itemFocusHandler(evt:mx.events.DataGridEvent):void {
_layers.targetIndex = evt.currentTarget.selectedItem.index;
- _canvas.combineLayers();
+ syncWithAlphaCanvas();
}
-private function syncWithLayersAndCanvas():void {
+private function syncWithAlphaCanvas():void {
+ syncWithAlpha();
+ syncWithCanvas();
+}
+
+private function syncWithLayersAlphaCanvas():void {
+ syncWithLayers();
+ syncWithAlpha();
+ syncWithCanvas();
+}
+
+private function syncWithLayers():void {
layerDataGrid.dataProvider = _layers.layersForDataProvider;
layerDataGrid.selectedIndex = _layers.selectedIndexForDataProvider;
- _canvas.combineLayers();
}
-
+private function syncWithAlpha():void {
+ alphaSlider.value = _layers.targetLayerAlpha;
+}
private function syncWithCanvas():void {
_canvas.combineLayers();
@@ -67,10 +82,10 @@
private function newLayerHandler(evt:Event):void {
_layers.pushBlank();
- syncWithLayersAndCanvas();
+ syncWithLayersAlphaCanvas();
}
private function copyLayerHandler(evt:Event):void {
_layers.copy(layerDataGrid.selectedItem.index);
- syncWithLayersAndCanvas();
+ syncWithLayersAlphaCanvas();
}
@@ -80,5 +95,5 @@
private function onDragDrop(evt:DragEvent):void {
_layers.move(layerDataGrid.selectedItem.index, layerDataGrid.dataProvider[layerDataGrid.calculateDropIndex(evt)]);
- syncWithLayersAndCanvas();
+ syncWithLayersAlphaCanvas();
evt.preventDefault();
layerDataGrid.hideDropFeedback(evt);
@@ -88,2 +103,7 @@
syncWithCanvas();
}
+
+private function alphaSliderHandler(evt:SliderEvent):void {
+ _layers.targetLayerAlpha = evt.value;
+ syncWithCanvas();
+}
Index: as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControl.mxml
===================================================================
--- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControl.mxml (リビジョン 1154)
+++ as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPLayerWindowControl.mxml (リビジョン 1155)
@@ -20,4 +20,4 @@
-
+
Index: as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayerArray.as
===================================================================
--- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayerArray.as (リビジョン 1153)
+++ as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayerArray.as (リビジョン 1155)
@@ -181,4 +181,11 @@
return _a[_targetIndex].lock;
}
+
+ public function set targetLayerAlpha(n:Number):void {
+ _a[_targetIndex].alpha = n;
+ }
+ public function get targetLayerAlpha():Number {
+ return _a[_targetIndex].alpha;
+ }
}
}
Index: as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayer.as
===================================================================
--- as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayer.as (リビジョン 1154)
+++ as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPLayer.as (リビジョン 1155)
@@ -5,5 +5,7 @@
import flash.geom.ColorTransform;
import flash.geom.Matrix;
- import flash.geom.Rectangle;
+ import flash.geom.Rectangle;
+
+ import mx.controls.Alert;
// BitmapDataの継承はしない
@@ -21,4 +23,6 @@
private var _bitmapData:BitmapData;
+
+ private var _colorTransform:ColorTransform; // for layer alpha
public function GPLayer(source:BitmapData, width:uint, height:uint, index:uint,
@@ -39,4 +43,5 @@
_mask = mask;
_blendMode = blendMode;
+ _alpha = alpha;
if (name) {
_name = name;
@@ -44,4 +49,5 @@
_name = 'レイヤ' + _index;
}
+ _colorTransform = new ColorTransform();
}
@@ -58,5 +64,5 @@
// FIXME: alphaを使う!
if (_show) {
- dest.draw(_bitmapData, null, null, _blendMode);
+ dest.draw(_bitmapData, null, _colorTransform, _blendMode);
}
}
@@ -82,4 +88,11 @@
return _name;
}
+ public function set alpha(n:Number):void {
+ _alpha = n;
+ _colorTransform = new ColorTransform(1, 1, 1, _alpha, 0, 0, 0, 0);
+ }
+ public function get alpha():Number {
+ return _alpha;
+ }
// for dataProvider
public function get lockCheck():String {
@@ -96,5 +109,6 @@
}
public function set maskCheck(s:String):void {
- _mask = (s == 'on');
+ Alert.show('まだマスクレイヤできてねっす', 'レイヤーツール');
+ // _mask = (s == 'on');
}
public function set showCheck(s:String):void {