差分発生行の前後
無視リスト:
コミット日時:
2010/06/03 01:36:31 (3 年前)
コミッタ:
hkrn
ログメッセージ:

fixed a bug that causes a strange behavior of undo after removing layer

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/LayerBitmapCollection.as

    r3938 r3947  
    340340            var count:uint = m_layers.length; 
    341341            for (var i:uint = 0; i < count; i++) { 
    342                 m_sprite.removeChildAt(i); 
     342                                var layer:LayerBitmap = m_layers[i]; 
     343                                // ここから例外を送出することは不具合が無ければないと考えられる 
     344                m_sprite.removeChild(layer.displayObject); 
    343345            } 
    344346            m_layers.splice(0, count); 
     
    369371        internal function loadState(undoData:Object):void 
    370372        { 
    371             var i:uint = 0; 
    372373            var layers:Vector.<Object> = undoData.layers; 
    373             var oldLayerCount:uint = m_layers.length; 
    374             var newLayerCount:uint = layers.length; 
    375             // レイヤー切り替えが発生しないケースの対処 
    376             // 古いレイヤーが一緒に消えないようにする必要がある 
    377             var c:uint = newLayerCount > oldLayerCount ? oldLayerCount : newLayerCount; 
    378             for (i = 0; i < c; i++) { 
     374            var count:uint = layers.length; 
     375                        clear(); 
     376            for (var i:uint = 0; i < count; i++) { 
    379377                var data:Object = layers[i]; 
    380378                var newLayer:LayerBitmap = new LayerBitmap(data.bitmapData); 
    381379                newLayer.fromJSON(data); 
    382                 m_sprite.removeChildAt(i); 
    383                 m_sprite.addChildAt(newLayer.displayObject, i); 
    384                 m_layers[i] = newLayer; 
     380                m_sprite.addChild(newLayer.displayObject); 
     381                m_layers.push(newLayer); 
    385382            } 
    386383            currentIndex = undoData.index;