2017-10-04 21 views
0

私はあなたの助けが必要です。ノードを削除して新しいノードを追加する方法

ノードを削除して、前のノードを削除した後に新しいノードをロードしようとしています。

は、実際に私は別のFUNC内の使用してそれを削除することができた:

sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in 
      node.removeFromParentNode() 
     } 

しかし、その後、私は機能をリコールしています「にaddChild」新しいノードがシーンに登場されていません。

func addChild(object: String){ 
     if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { 

      let path = dir.appendingPathComponent(object) 

      //reading 
      do { 
       scene = try SCNScene(url: path) 
       node = scene.rootNode 

      } 
      catch {/* error handling here */} 
     } 
     counter += 1 

    } 

「はaddChild」がパラメータとして配列の要素を取っていると、カウンタがfuncが呼び出されるたびにした後、アレイの他の要素へのポインタを移動しています。

EX:私は2つの要素を持つ配列を持っていますが、最初に表示されるオブジェクトが常に最初のものであることを確認してから、オブジェクトに触れたときに削除され、func addChildを呼び出さなければなりませんこのようにして、前の要素は配列から削除され、ポインタを次の要素に移動するカウンタのおかげで、次の要素がロードされます。

私の例が十分に説明できるかどうかわかりません。 ありがとうございます!

+0

{ DIR =(.userDomainMask:で.documentDirectory用)FileManager.default.urlsさせた場合シーンに表示されます... –

答えて

0

関数内の "sceneView.scene = scene"を呼び出すだけで、removeChild関数を呼び出すたびに配列から要素を削除するように修正しました。

FUNCのにaddChild(オブジェクト:String)を、それが最初の要素ので、内部なってきOFC 1次回{

 let path = dir.appendingPathComponent(object) 

     //reading 
     do { 
      scene = try SCNScene(url: path) 
      node = scene.rootNode 
      sceneView.scene = scene 
     } 
     catch {/* error handling here */} 
    } 


} 
関連する問題