babylon. js как получить доступ ко мне sh вне его функции - PullRequest
0 голосов
/ 26 мая 2020

Я просто не могу получить доступ к вавилону sh. Каждый раз, когда я пытаюсь запустить код, я получаю эту ошибку .

Я пробовал использовать два разных подхода:

Пример 1:

var carTest;
BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
    });
carTest.position.x = 10;

Пример 2:

var carTest = BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene);
carTest.position.x = 10;

1 Ответ

0 голосов
/ 26 мая 2020

В вашем примере 2 BABYLON.SceneLoader.ImportMe sh return Nullable<ISceneLoaderPlugin | ISceneLoaderPluginAsync>, и оба они не имеют имени свойства в качестве позиции.
Таким образом, carTest.position будет неопределенным.

carTest.position.x = 10 => undefined.x = 10; 

выдаст ошибку.

В вашем первом примере BABYLON.SceneLoader.ImportMe sh является синхронизированной функцией, хотя в BABYLON есть другое имя функции ImportMeshAsyn c. SceneLoader ...

Я раньше не использовал BABYLON.
Но в основном, согласно BABYLON API , разница между ImportMe sh и ImportMeshAsyn c - это возвращаемый тип .

итак,

[Улучшение]

переместить carTest.position.x = 10; в обратном вызове onSuccess.

BABYLON
  .SceneLoader
  .ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
        carTest.position.x = 10;
    });
...