Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.02.2020
Сообщений: 1
1

Проблема с requestAnimationFrame

13.02.2020, 21:27. Показов 795. Ответов 0

Author24 — интернет-сервис помощи студентам
При указании метода класса в requestAnimationFrame выдается ошибка "TypeError: Cannot read property 'jump' of undefined". Возможно мой вопрос банален, но буду рад помощи.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Player{
    constructor(){
        let cubeGeometry = new THREE.CubeGeometry(15, 30, 15);
        let cubeMaterial = new THREE.MeshLambertMaterial({color: 0x2e282e });
        let cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
        cube.castShadow = true;
        cube.name = 'player';
        cube.position.x = 0;
        cube.position.y = 17.5;
        cube.position.z = 0;
        scene.add(cube);
 
 
        this.jumpT = 0;
    }
 
    jump(){
        let jumpRAF = requestAnimationFrame(this.jump);
        let h;
        let h0 = 17.5;
        let v0 = 25;
        let g = -10;
        h = h0 + v0*this.jumpT + g*Math.pow(this.jumpT, 2)/2;
        scene.getObjectByName('player').position.y = h;
        console.log(this.jumpT+ ' ' +h);
        this.jumpT += 0.1;
        if( scene.getObjectByName('player').position.y < h0){
            scene.getObjectByName('player').position.y = h0;
            cancelAnimationFrame(jumpRAF);
        }
    }
}
Добавлено через 2 часа 4 минуты
Нашел решение проблемы. Нужно использовать стрелочные функции.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Player{
    constructor(){
        let cubeGeometry = new THREE.CubeGeometry(15, 30, 15);
        let cubeMaterial = new THREE.MeshLambertMaterial({color: 0x2e282e });
        let cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
        cube.castShadow = true;
        cube.name = 'player';
        cube.position.x = 0;
        cube.position.y = 17.5;
        cube.position.z = 0;
        scene.add(cube);
 
 
        this.jumpT = 0;
    }
 
    jump(){
        let jumpRAF = requestAnimationFrame(()=>this.jump());
        let h;
        let h0 = 17.5;
        let v0 = 25;
        let g = -10;
        h = h0 + v0*this.jumpT + g*Math.pow(this.jumpT, 2)/2;
        scene.getObjectByName('player').position.y = h;
        console.log(this.jumpT+ ' ' +h);
        this.jumpT += 0.1;
        if( scene.getObjectByName('player').position.y < h0){
            scene.getObjectByName('player').position.y = h0;
            cancelAnimationFrame (jumpRAF);
        }
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2020, 21:27
Ответы с готовыми решениями:

Прерывание requestAnimationFrame при onwheel
Где раздел про vanilla js? Всем привет! Сделал ссылку &quot;Наверх&quot;: &lt;a href=&quot;#&quot;...

RequestAnimationFrame неправильно работает
В общем ситуация такая! Пишу игру на ноде с использованием сокетов! При нажатии на кнопку по сокету...

Некоректно работает requestAnimationFrame, впервые столкнулся
Сделал по уроку но у меня не удаляются предидущие изображение, получается змейка var cvs =...

проблема при работе с китайским J-LINK 8 или же проблема с с
Всем привет. Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский...

0
13.02.2020, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2020, 21:27
Помогаю со студенческими работами здесь

Выдает ошибку, а я не могу понять в чем проблема. В чем проблема, скажите пожалуйста!
dx=0.0005; epsillon=0.00002; i=0; for x= 0:0.0005:3 i=i+1; if x&lt;1 y (i)=-1; ...

Холодильник LG .мод GR-M392YQ.Проблема с дверю, Проблема с дверю при закрывании
Доброго времени суток уважаемые! Холодильник LG GR-M392YQ с первых дней клиент жалуется на то что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru