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 {