@KirillModlin

JavaScript. Почему по разному себя ведёт функция ?

Добрый день.
Объясните почему при вызове функции из разных мест, функция то работает, то "is not a function".

Код :
var HimLayer = cc.Layer.extend({
    sprite:null,
    loc:'TROLOLO',
    ctor:function () {
        this._super();
        this.init();
        return true;
    },

    init:function (){
        this.sprite = new cc.Sprite(res.himka_png);
        this.sprite.setPosition(this.sprite.getContentSize().width / 2, cc.winSize.height / 2);
        this.addChild(this.sprite, 0);
        cc.eventManager.addListener({
            event: cc.EventListener.MOUSE,
            onMouseUp: this.onMouseUp
        }, this)
        this.locationTapped(this.loc); // тут работает
    },

    onMouseUp:function(event){
        var location = event.getLocation();
        this.locationTapped(location); // тут не работает
    },

    locationTapped:function(location) {
        console.debug(location);
    }
    
});


вывод в консоль

"TROLOLO" app.js:28
TypeError: this.locationTapped is not a function app.js:24


Почему при вызове из init всё работает, а при вызове из onMouseUP нет ?
Как это сделать правильно, учитывая что мне он нужен из onMouseUP, а из init был добавлен просто для теста.

Спасибо.
  • Вопрос задан
  • 2330 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Пригласить эксперта
Ответы на вопрос 1
@meam
Интересен front-end и разработка под ios
Скорее всего в onMouseUp this == window, используйте или .bind() или var that = this;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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