天天看點

egret常用功能

egret常用功能

<pre>

//////////////////////////////////////////////////////////////////////////////////////

//

// Copyright (c) 2014-present, Egret Technology.

// All rights reserved.

// Redistribution and use in source and binary forms, with or without

// modification, are permitted provided that the following conditions are met:

// * Redistributions of source code must retain the above copyright

// notice, this list of conditions and the following disclaimer.

// * Redistributions in binary form must reproduce the above copyright

// notice, this list of conditions and the following disclaimer in the

// documentation and/or other materials provided with the distribution.

// * Neither the name of the Egret nor the

// names of its contributors may be used to endorse or promote products

// derived from this software without specific prior written permission.

// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS

// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES

// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.

// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,

// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,

// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,

// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

var offsetX:number;

var offsetY;

var panel;

class Main extends eui.UILayer {

protected createChildren(): void {

super.createChildren();

egret.lifecycle.addLifecycleListener((context) => {

// custom lifecycle plugin

})

egret.lifecycle.onPause = () => {

egret.ticker.pause();

}

egret.lifecycle.onResume = () => {

egret.ticker.resume();

//inject the custom material parser

//注入自定義的素材解析器

let assetAdapter = new AssetAdapter();

egret.registerImplementation("eui.IAssetAdapter", assetAdapter);

egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());

this.runGame().catch(e => {

console.log(e);

}

private async runGame() {

await this.loadResource()

this.createGameScene();

const result = await RES.getResAsync("description_json")

this.startAnimation(result);

await platform.login();

const userInfo = await platform.getUserInfo();

console.log(userInfo);

private async loadResource() {

try {

const loadingView = new LoadingUI();

this.stage.addChild(loadingView);

await RES.loadConfig("resource/default.res.json", "resource/");

await this.loadTheme();

await RES.loadGroup("preload", 0, loadingView);

this.stage.removeChild(loadingView);

catch (e) {

console.error(e);

private loadTheme() {

return new Promise((resolve, reject) => {

// load skin theme configuration file, you can manually modify the file. And replace the default skin.

//加載皮膚主題配置檔案,可以手動修改這個檔案。替換預設皮膚。

let theme = new eui.Theme("resource/default.thm.json", this.stage);

theme.addEventListener(eui.UIEvent.COMPLETE, () => {

resolve();

}, this);

private textfield: egret.TextField;

/**

* 建立場景界面

* Create scene interface

*/

protected createGameScene(): void {

let sky = this.createBitmapByName("bg_jpg");

this.addChild(sky);

let stageW = this.stage.stageWidth;

let stageH = this.stage.stageHeight;

sky.width = stageW;

sky.height = stageH;

let topMask = new egret.Shape();

topMask.graphics.beginFill(0x000000, 0.5);

topMask.graphics.drawRect(0, 0, stageW, 172);

topMask.graphics.endFill();

topMask.y = 33;

this.addChild(topMask);

let icon: egret.Bitmap = this.createBitmapByName("egret_icon_png");

this.addChild(icon);

var icon_width=icon.width;

console.log(icon.width);

icon.anchorOffsetX = 52;

icon.x = 0;

icon.y = 0;

//手指觸摸移動

//手指按到螢幕,觸發 startMove 方法

icon.touchEnabled = true;

icon.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onButtonClick, this);

icon.addEventListener(egret.TouchEvent.TOUCH_BEGIN,startMove,this);

//手指離開螢幕,觸發 stopMove 方法

icon.addEventListener(egret.TouchEvent.TOUCH_END,stopMove,this);

function startMove(e:egret.TouchEvent):void{

//計算手指和圓形的距離

offsetX = e.stageX - icon.x;

offsetY = e.stageY - icon.y;

//手指在螢幕上移動,會觸發 onMove 方法

this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE,onMove,this);

}

function stopMove(e:egret.TouchEvent) {console.log(22);

//手指離開螢幕,移除手指移動的監聽

this.stage.removeEventListener(egret.TouchEvent.TOUCH_MOVE,onMove,this);

function onMove(e:egret.TouchEvent):void{

//通過計算手指在螢幕上的位置,計算目前對象的坐标,達到跟随手指移動的效果

icon.x = e.stageX - offsetX;

icon.y = e.stageY - offsetY;

let line = new egret.Shape();

line.graphics.lineStyle(2, 0xffffff);

line.graphics.moveTo(0, 0);

line.graphics.lineTo(0, 117);

line.graphics.endFill();

line.x = 172;

line.y = 61;

this.addChild(line);

let colorLabel = new egret.TextField();

colorLabel.textColor = 0xffffff;

colorLabel.width = stageW - 172;

colorLabel.textAlign = "center";

colorLabel.text = "Hello Egret";

colorLabel.size = 24;

colorLabel.x = 172;

colorLabel.y = 80;

this.addChild(colorLabel);

let textfield = new egret.TextField();

this.addChild(textfield);

textfield.alpha = 0;

textfield.width = stageW - 172;

textfield.textAlign = egret.HorizontalAlign.CENTER;

textfield.size = 24;

textfield.textColor = 0xffffff;

textfield.x = 172;

textfield.y = 135;

this.textfield = textfield;

let button = new eui.Button();

button.label = "Click!";

button.horizontalCenter = 0;

button.verticalCenter = 0;

this.addChild(button);

button.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onButtonClick, this);

// 截圖

var renderTexture:egret.RenderTexture = new egret.RenderTexture();

renderTexture.drawToTexture(this);

var base64img=renderTexture.toDataURL("image/png");

console.log(base64img);

* 根據name關鍵字建立一個Bitmap對象。name屬性請參考resources/resource.json配置檔案的内容。

* Create a Bitmap object according to name keyword.As for the property of name please refer to the configuration file of resources/resource.json.

private createBitmapByName(name: string): egret.Bitmap {

let result = new egret.Bitmap();

let texture: egret.Texture = RES.getRes(name);

result.texture = texture;

return result;

* 描述檔案加載成功,開始播放動畫

* Description file loading is successful, start to play the animation

private startAnimation(result: Array<any>): void {

let parser = new egret.HtmlTextParser();

let textflowArr = result.map(text => parser.parse(text));

let textfield = this.textfield;

let count = -1;

let change = () => {

count++;

if (count >= textflowArr.length) {

count = 0;

}

let textFlow = textflowArr[count];

// 切換描述内容

// Switch to described content

textfield.textFlow = textFlow;

let tw = egret.Tween.get(textfield);

tw.to({ "alpha": 1 }, 200);

tw.wait(2000);

tw.to({ "alpha": 0 }, 200);

tw.call(change, this);

};

change();

* 點選按鈕

* Click the button

private onButtonClick(e: egret.TouchEvent) {

panel = new eui.Panel();

panel.title = "Title";

panel.horizontalCenter = 0;

panel.verticalCenter = 0;

this.addChild(panel);

</pre>