[cocosCreator, cocos2d-x] Не можете использовать привязку для функции обратного вызова loadScene? - PullRequest
0 голосов
/ 05 сентября 2018

Если вы используете bind в функции обратного вызова loadScene (), информация getScene () неверна.

После переключения с Entry Scene на Lobby Scene я собираюсь заняться постобработкой.

Это было реализовано с использованием typeScript.

Entry.ts
cc.director.loadScene('Lobby', this.postProcessLobby.bind(this)(isRelogin));

введите описание изображения здесь

Значение cc.director.getScene () в окне консоли указывает «Вход» «Лобби» правильно, потому что оно вызывается после смены сцены.

Другой пример - использование функции стрелки для получения желаемых результатов.

Entry.ts
cc.director.loadScene('Lobby', e => this.postProcessLobby(isRelogin));

введите описание изображения здесь

Значение в cc.director.getScene () указывает «Лобби», а значение переменной лобби выглядит нормально.

Я предпочитаю bind () для обработки асинхронного обратного вызова и хорошо писал без проблем. Однако loadScene () не получила желаемого результата. Что за чертовщина? Сцена перезвонила без переключения? Или есть другая проблема?

1 Ответ

0 голосов
/ 05 сентября 2018

Ваш первый фрагмент кода вызывает this.postProcessLobby.bind(this) с аргументом isRelogin и передает возвращаемое значение в качестве второго аргумента loadScene. Это, вероятно, не то, что вы имели в виду. Вы можете использовать this.postProcessLobby.bind(this, isRelogin) для генерации обратного вызова, к которому будет добавлен isRelogin к списку аргументов, с которыми он вызывается, что должно работать в вашем случае, поскольку похоже, что ваша реализация postProcessLobby игнорирует дополнительные аргументы, но функция стрелки кажется мне ясным решением.

...