Guardar el valor de una variable fuera de una función (creo que) asíncrona
Publicado por Jhon (2 intervenciones) el 21/11/2022 20:25:37
Cordial saludo.
Mi problema es específicamente usando three.js pero siento que mi problema es que no sé usar correctamente este tipo de funciones así que confío en que cualquier programador experimentado en JS me eche una mano aunque no sepa particularmente de tree.js.
la cosa es que he estado creando mis escenarios, luces, etc, en archivos y clases aparte que voy llamando mediante import en un (vano) intento de mantener un código prolijo.
Todo ha ido bien excepto con el modeo 3D que debo cargar en mi escenario.
Si lo hago así todo funciona:
Pero si pongo el run.play() fuera del gltfLoader me dará error porque, como ya se habrán dado cuenta, fuera de esa función run nuevamente queda indefinido como cuando lo inicialicé.
QUisiera saber si hay alguna forma de guardar a run en una variable que pueda exportar para luego hacer import en mi script principal y desde ahí hacer el run.play.
¿Alguna sugerencia?
Gracias de antemano, gente.
Mi problema es específicamente usando three.js pero siento que mi problema es que no sé usar correctamente este tipo de funciones así que confío en que cualquier programador experimentado en JS me eche una mano aunque no sepa particularmente de tree.js.
la cosa es que he estado creando mis escenarios, luces, etc, en archivos y clases aparte que voy llamando mediante import en un (vano) intento de mantener un código prolijo.
Todo ha ido bien excepto con el modeo 3D que debo cargar en mi escenario.
Si lo hago así todo funciona:
1
2
3
4
5
6
7
8
9
10
11
12
let mixer;
let clock = new Clock();
let run;
gltfLoader.load(model.knight, (gltf) => {
const root = gltf.scene;
mixer = new AnimationMixer(gltf.scene);
run = mixer.clipAction( gltf.animations[2] );
run.play();
scene.add(root);
});
Pero si pongo el run.play() fuera del gltfLoader me dará error porque, como ya se habrán dado cuenta, fuera de esa función run nuevamente queda indefinido como cuando lo inicialicé.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const gltfLoader = new GLTFLoader();
let mixer;
let clock = new Clock();
let run;
gltfLoader.load(model.knight, (gltf) => {
const root = gltf.scene;
mixer = new AnimationMixer(gltf.scene);
run = mixer.clipAction( gltf.animations[2] );
scene.add(root);
});
run.play(); //Aquí run.play no está definido
QUisiera saber si hay alguna forma de guardar a run en una variable que pueda exportar para luego hacer import en mi script principal y desde ahí hacer el run.play.
¿Alguna sugerencia?
Gracias de antemano, gente.
Valora esta pregunta


0