差分発生行の前後
無視リスト:
コミット日時:
2010/04/04 00:55:27 (3 年前)
コミッタ:
hkrn
ログメッセージ:

fixed a bug reported by 1211086749/483

ファイル:

凡例:

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

    r3685 r3689  
    266266            var count:uint = m_layers.length; 
    267267            for (var i:uint = 0; i < count; i++) { 
    268                 var layer:LayerBitmap = m_layers[i]; 
    269                 var displayObject:DisplayObject = layer.displayObject; 
    270                 if (m_sprite.contains(displayObject)) 
    271                     m_sprite.removeChild(displayObject); 
    272                 else 
    273                     trace(layer.name + " is not child of spriteToView."); 
     268                m_sprite.removeChildAt(i); 
    274269            } 
    275270            m_layers.splice(0, count); 
     
    302297            var i:uint = 0; 
    303298            var layers:Vector.<Object> = undoData.layers; 
    304             var c:uint = layers.length; 
    305             clear(); 
     299            var oldLayerCount:uint = m_layers.length; 
     300            var newLayerCount:uint = layers.length; 
     301            // レイヤー切り替えが発生しないケースの対処 
     302            // 古いレイヤーが一緒に消えないようにする必要がある 
     303            var c:uint = newLayerCount > oldLayerCount ? oldLayerCount : newLayerCount; 
    306304            for (i = 0; i < c; i++) { 
    307305                var data:Object = layers[i]; 
    308                 var layer:LayerBitmap = new LayerBitmap(data.bitmapData); 
    309                 layer.fromJSON(data); 
    310                 addLayer(layer); 
     306                var newLayer:LayerBitmap = new LayerBitmap(data.bitmapData); 
     307                newLayer.fromJSON(data); 
     308                m_sprite.removeChildAt(i); 
     309                m_sprite.addChildAt(newLayer.displayObject, i); 
     310                m_layers[i] = newLayer; 
    311311            } 
    312312            currentIndex = undoData.index;