@Tereverda

Может ли THREE.FontLoader возвращать значение?

В документации THREE.FontLoader в конце добавляем объект на сцену scene.add(); - все работает.
Но я хочу, чтобы возвращался объект через return, функция загрузки асинхронная, никак не могу добиться результата, что делаю не так?

let watermark = createWatermark().then((result) => { console.log(result); })
// выводит undefined


// Создать водяной знак
async function createWatermark() {
    const loaderText = new THREE.FontLoader(); // загрузчик шрифтов

    await loaderText.load("/img/textures/pt_sans_regular.json", function (font) {
        // Материал текста
        const material = new THREE.MeshPhongMaterial({ color: "black", shininess: 1 });

        // Настройки шрифта
        const fontSettings = { font: font, size: 20, height: 5 };
        const geometry = new THREE.TextGeometry('ronbel.ru', fontSettings);
        const watermark = new THREE.Mesh(geometry, material);

        return watermark;
    });
}
  • Вопрос задан
  • 28 просмотров
Решения вопроса 1
szQocks
@szQocks
async function createWatermark() {
    const loaderText = new THREE.FontLoader(); // загрузчик шрифтов
    return new Promise((resolve, reject) => {
      loaderText.load("/img/textures/pt_sans_regular.json", function (font) {
        // Материал текста
        const material = new THREE.MeshPhongMaterial({ color: "black", shininess: 1 });

        // Настройки шрифта
        const fontSettings = { font: font, size: 20, height: 5 };
        const geometry = new THREE.TextGeometry('ronbel.ru', fontSettings);
        const watermark = new THREE.Mesh(geometry, material);
        
        resolve(watermark)
      })
    })
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы