2014-03-29 2 views
4

dat.gui에 매개 변수를 저장하는 데 문제가 있거나 문제가있는 것 같습니다.dat.gui로 매개 변수를 저장하는 데 문제가있는 것 같습니까?

저장할 JSON이있는 팝업이 열리는 톱니 바퀴 아이콘을 클릭하면 문제가 발생합니다. 또한 로컬 저장소에 저장하는 기능이 작동하지 않습니다. 여기에 두 JSFiddles 있습니다 dat.gui.js와 Uncaught TypeError: Cannot read property 'forEach' of undefined dat.gui.min.js:3

  • http://jsfiddle.net/navFooh/8Hek6/, 기어 아이콘을 클릭 : dat.gui.min.js와

    가 잘 작동 온라인이 샘플을 표시하지 않습니다 (링크에 대한 의견을 참조). 그러나 그들은 lib 자체를 포함하여 모든 샘플 코드를 최소화했습니다. 심지어 최신 빌드를 사용하고 있어도 해결할 수 없습니다.

    도움을 주시면 감사하겠습니다.

  • +0

    는 http://workshop.chromeexperiments.com/examples/gui/#5--Saving-Values ​​ – navFooh

    답변

    4

    gui.remember(obj);gui.add(obj, 'x');을 잘못된 순서로 호출하는 오류가 발생했습니다.

    var obj = { x: 5 }; 
    var gui = new dat.GUI(); 
    gui.remember(obj); 
    gui.add(obj, 'x'); 
    

    무엇 발생하는 dat.gui가 gui.add() 함수를 호출 할 때 객체의 내부지도를 기억 할 수 있다는 것입니다 :

    그래서이 솔루션입니다. 이지도, gui.__rememberedObjectIndecesToControllers[]은 값을 저장할 때 내부 getCurrentPreset() 함수에서 사용됩니다.

    그러나지도가 매우 중요한 이유는 gui.__rememberedObjects[]에 저장되어있는 경우에만이지도에 개체를 추가합니다.

    축소 버전에서 오류가 발생하는 이유는 매핑 된 값을 gui.__rememberedObjectIndecesToControllers[]에서 가져 오려고 시도했을 때 undefined 값을 반복하려고 시도하기 때문입니다.

    http://workshop.chromeexperiments.com/examples/gui/#5--Saving-Values에 샘플이 실제로이 적절한 순서를 보여줍니다

    , 난 그냥 간과 :

    var fizzyText = new FizzyText(); 
    var gui = new dat.GUI(); 
    
    gui.remember(fizzyText); 
    
    // Add controllers ... 
    
    1

    축소판을 사용할 때만 오류가 발생합니다. 디버그 버전을 사용하면 오류없이 작동합니다.

    x 속성이 나타나지 않는 경우 나도 마찬가지입니다. 톱니 바퀴 아이콘을 한 번 클릭하고 팝업을 닫은 다음 되돌리기를 클릭 한 다음 톱니 바퀴 아이콘이 올바른 데이터를 표시하기 전에 다시 클릭해야 함을 발견했습니다.

    FizzyText 예제 코드를 사용할 때도 마찬가지입니다. 당신은 심지어에서 x 속성없이 dat.gui 생성자의 부하 매개 변수로 팝업에서 무엇을보고 사용하는 경우

    그러나, 그것은 페이지로드에서 예상대로 작동합니다

    var gui = new dat.GUI({load: 
    { 
        "preset": "Default", 
        "closed": false, 
        "remembered": { 
        "Default": { 
         "0": {"x": 8} 
        } 
        }, 
        "folders": {} 
    } 
    }); 
    

    그래서 나는 그 일을 제안합니다. 그것은 기술적으로도 팝업에서의 그들의 지시이기도하지만, 나는 그것이 매우 불분명하다고 말해야 만합니다.

    +0

    그것은 사실이다 디버그 버전에서 오류가 발생하지 않지만 어느 방식으로도 작동하지 않습니다. 내 오류는'gui.add()'와'gui.remember()'라고 불리는 순서였다. 그 사이에 되돌리기를 호출하는 것이 긍정적 인 결과를 가져 오는 이유는 해당 버튼을 클릭 할 때'gui .__ rememberedObjectIndecesToControllers [] '맵을 만드는 것입니다. 설명에 대한 내 대답을 참조하십시오. – navFooh

    관련 문제