Рубрики
Uncategorized

API игры Wechat вызывает цаплю

Автор оригинала: David Wong.

Доработка официального сайта Yezi Esports https://www.xxe.io/Совершенно новый В egret вы можете напрямую вызвать API игр wechat. С помощью кода платформы, добавленного в egret, вы можете вызывать различные API платформы.

В новом проекте будет обнаружено, что папка SRC содержит Platform.ts Если нет, пожалуйста, создайте.

/**

Интерфейс данных платформы. Поскольку каждая игра обычно должна публиковаться на нескольких платформах, разработчикам требуется единый интерфейс для получения информации о данных платформы. Рекомендуется, чтобы разработчики инкапсулировали логику платформы таким образом, чтобы обеспечить стабильность общей структуры, поскольку формы интерфейса разных платформ различны, egret рекомендует разработчикам инкапсулировать все интерфейсы в асинхронные формы на основе обещания */объявить платформу интерфейса { getUserInfo(): Обещание; login(): Обещание } класс DebugPlatform реализует платформу { async getUserInfo() { возвращает { псевдоним: “имя пользователя” } } асинхронный логин() { } } если (!window.platform) { window.platform DebugPlatform(); } объявить платформу: Платформа; объявить окно интерфейса { платформа: Платформа } 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 И скопируйте код на носитель Platform.ts.

2 wechat. Упакуйте и опубликуйте проект wechat и откройте его в инструменте разработчика wechat. Вы можете видеть platform.js Файл, если нет, пожалуйста, создайте platform.js Документы. Другие интерфейсы wechat также должны быть записаны в файл, такие как общий доступ, щелчок wechat для входа и т.д.

/**

Пожалуйста, по адресу egret engine Main.ts Вызовите платформу.войдите, метод () вызывается здесь. */*/игровая платформа класса { имя входа() { вернуть новое обещание((разрешить, отклонить) = > { wx.вход({ успех: (разрешение) => { разрешение(разрешение) } }) }) }

getUserInfo() {

return new Promise((resolve, reject) => {
    wx.getUserInfo({
        withCredentials: true,
        success: function (res) {
            var userInfo = res.userInfo
            var nickName = userInfo.nickName
            var avatarUrl = userInfo.avatarUrl
            var gender =  userInfo.gender  //Gender 0: unknown, 1: male, 2: female
            var province = userInfo.province
            var city = userInfo.city
            var country = userInfo.country
            resolve(userInfo);
        }
    })
})

}

открытый текст данных W x игровой Контекст открытых данных(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }

класс WxgameOpenDataContext { Созданный объект воспроизведения(тип,ширина,высота){ постоянная цапля. BitmapData(общий холст); bitmapdata.$удалить источник; постоянная цапля. Текстура(); текстура._setBitmapData(растровые данные); постоянная цапля. Растровое изображение(текстура); растровое изображение.ширина; растровое изображение.высота;

egret.startTick((timeStarmp) => {
    egret.WebGLUtils.deleteWebGLTexture(bitmapdata.webGLTexture);
    bitmapdata.webGLTexture = null;
    return false;
}, this);
return bitmap;

}

Сообщение(данные){

const openDataContext = wx.getOpenDataContext();
openDataContext.postMessage(data);

} 1 2 3 4 5 6 7 8 9 10 11 12 }

окно.платформа WxgamePlatform(); 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Платформа объявляет функцию платформы, которую можно вызвать непосредственно в egret, и код может быть реализован на каждой платформе.

В-третьих, вызов входа в систему цапли и получение информации о пользователе WeChat. оставайтесь главным.ts, напишите следующий код.

платформа ожидания.вход () вызовите API входа в систему, const platform.getUserInfo (); получите информацию о пользователе wechat и верните информацию о пользователе, Ожидание вызывается асинхронно, и возвращается результат вызова. Следующий шаг выполнен.

класс Main расширяет цаплю. DisplayObjectContainer {

публичный конструктор() {

super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);

}

частная страница onaddedtostage(событие: цапля. Событие) {

this.runGame().catch(e => {
    console.log(e);
})

}

частная асинхронная игра() {

await platform.login();
const userInfo = await platform.getUserInfo();
this.createGameScene(userInfo);

}

личное текстовое поле: цапля. ТексТовое поле;

/**

  • Создайте игровую сцену
  • Создайте игровую сцену

*/private createGameScene(информация пользователя: любая) {

let bg: eui.Rect = new eui.Rect();
this.addChild(bg);
bg.width = this.stage.width;
bg.height = this.stage.height;
bg.fillColor = 0xF8F8F8;

let avatar: eui.Image = new eui.Image();
avatar.x = 100;
avatar.y = 100;
avatar.width = 120;
avatar.height = 120;
avatar.source = userInfo.avatarUrl;
this.addChild(avatar);

let nickName: eui.Label = new eui.Label();
nickName.x = 100;
nickName.y = 250;
nickName.textColor = 0xff0000;
nickName.text = userInfo.nickName;
this.addChild(nickName);

} 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 } 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Упакуйте проект wechat и откройте его в инструменте разработчика. Запустите, чтобы получить информацию о пользователе wechat. ————————————————