工程代码_Egret开发笔记(二)基础工程代码阅读

代码目录结构

f759eb35573a63f4e24da6514a32f0d9.png

在Egret Wing中打开上一节中我们创建的项目工程,查看代码目录结构,Forward在如下图中标记了各个目录的及关键文件的用途。

4d2289d460f9396f9698c7ca3c4bfc30.png

代码阅读理解

接下来我们从web入口一步一步阅读初始代码。首先打开index.html文件,我们看到index文件内容如下:

36f986c7d885ded14a6862520d0c9f7b.png
020b1acc78ec8569f3a62a6b26486fca.png

在上面的代码中我们看到,在index中首先加载了一个manifest.json文件。

xhr.open('GET', './manifest.json?v=' + Math.random(), true);

好的,我们打开这个文件看看里面的内容。

eff64b19f45016fdc310911ee17b85b8.png

initial中的是egret库对应的js文件,也就是我们在《Egret开发笔记(一)》中创建项目时勾选引入的引擎库,如下图:

f38f95f67e2a17614ae271d62b1d785a.png
10d1de865ad5b2762cf61818fca5ca12.png

而game模块中定义的则是启动程序后要加载的src目录下ts文件经过编译生成的js文件。

08d0e5cc7d067e28d6176e24e177fd59.png
225e612c8d55173b9600fa0e2ddf57d3.png
2132bb7638bc22abacbec5b306d959f3.png
7b1fd38abceb44ebd9206f1bc3737e2a.png

我们可以看出,在加载完manifest文件之后,将manifest文件initialgame拼接在一起作为一个list。然后通过loadScript开始加载list中所有文件。而每一个文件则是通过loadSingleScript来完成加载的。按照上面的定义首先加载的一定是egret.js,接下来是egret.web.js、game.js...

7ebf7168d9b7cbbc6855fa62cd2eac26.png

当所有预定义的文件加载进来之后,在加载完成的回调函数中,调用了egret的runEgret接口,这个接口做了什么呢?

4817f2412adb4b61e33373748ca60422.png
82194a6ef5914bbd0d40dddcc97ff47a.png

断点调试可以看到,这个接口经过一系列参数设置后,通过document.querySelectorAll查找到一个egret-player并把它放在一个container中,这个egret-player就是在index.html中定义的body体,这个div中定义了data-entry-class一个Main类型,同时在这个div中定义了一系列这个body体显示的一系列参数列表。

1a481ef072fe5ef3fe6ecf6f38c118e9.png

通过这个container以及前面传递过来一个参数集options,然后创建了一个web.webPlayer,而这个web.webPlayer的start接口就调起了我们src目录下Main的一个对象。

这样我们就应该明白egret项目是如何从index.htmlMain的调用的。

4c9929cf5c6502618bf3f1751b57ef19.png

在进入Main之后,构造函数中首先注册了一个ADD_TO_STAGE事件,响应接口是onAddToStage,在这个接口中onPauseonResume,再执行runGame接口——

a9eda10cfd36a9d412cdaf4eb4159922.png

在这里先加载资源创建游戏场景、使用加载description_json文件启动动画、使用平台登录账号、并且获取平台账户信息打印账户信息

0fe17ee185942883270fcc6ba46ba578.png

在loadResource中,首先创建了一个LoadingUI,就是一个加载页面,然后开始加载default.res.json文件,文件路径在resource目录。加载页面展示的进度则是default.res.json中preload分组的加载进度,当加载资源完成后,移除加载页面。我们打开这个文件可以看到,实际上这个文件里面的groups中定义了预定义的分组资源,而在resources中定义了各个资源的名称、类型和url。整个文件是一个json格式的资源配置文件,如下图所示。

4f84928ba50755228441745853619c5d.png

在runGame中,当我们加载完预定义的资源后,就开始创建场景中的背景、对象、设置icon等,这些与具体想实现的功能有关,这里不做过多解释,涉及到要创建的各种控件对象我们后续专门一章来学习。

接下来,加载description_json文件,实际上是读取了对应文件中的文字信息,并将加载的结果传进startAnimation中启动一个循环动画

a247ffe14ba405e2fdba1bd13d868014.png
b31b225b986561d64fd0ea84ab5959e9.png
6fa7ae21d91b6549fc71ad4708f34dd5.png

最后调用平台登录接口,获取平台账号信息并打印。至此,就完成Main对象中所有逻辑的处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知晓云助力小程序开发

小程序开发遇到瓶颈虽然腾讯提供了小程序解决方案,https://cloud.tencent.com/solution/la。但是对于普通开发者或者小企业的开发人员来说,购买域名,网站备案、部署SSL证书,安装会话服务器。业务逻辑上要使用数据库,缓…

Cracer渗透-windows基础(系统目录,服务,端口,注册表)

系统目录C:\Windows\system32\config\SAM (保存系统密码) 无法正常修改,可以进入PE系统进行修改(先备份在清空)利用结束后,再将之前备份的恢复C:\Windows\System32\drivers\hosts(域名解析文件)hosts欺骗&a…

java--xml文件读取(SAX)

SAX解析原理: 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏: 创建xml解析需要的handler(parser.parse(file,handler)) package com.imooc_xml.sax.handler;import java.util.ArrayList;import org.xml.sax.Attributes…

imp命令导入指定表_Sqoop 使用shell命令的各种参数的配置及使用方法

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源本文作者:Sheep Sun本文链接:https://www.cnblogs.com/yangxusun9/p/12558683.html大数据技术与架构点击右侧关注,大数据开发领域最强公众号!暴走大数据点击…

ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具

中文分词是中文自然语言处理中的重要的步骤,有一个更高精度的中文分词模型会显著提升文档分类、情感预测、社交媒体处理等任务的效果[1]。Pubseg是基于BiLSTM中文分词工具,基于ICWS2005PKU语料训练集训练而成,其优点在于在ICWS2005-PKU语料下…

小白做淘客店铺新玩法

微信淘客在朋友圈刷了将近两个月。有些大咖赚得盆满钵满,有些小白交了不少学费。有人日入几千几万,也有入不敷出。在此咖妹并没有褒贬之意,只是提醒大家,不光淘客如此,其他项目亦是如此,别人能做成功的项目…

python sum函数numpy_如何用numba加速python?

我把写好的markdown导入进来,但是没想到知乎的排版如此感人。如果对知乎排版不满想要看高清清爽版,请移步微信公众号原文 如何用numba加速python?同时欢迎关注前言说道现在最流行的语言,就不得不提python。可是python虽然容易上手…

[ZJOI2019]麻将

Luogu5279 , LOJ3042题意&#xff1a;给出初始13张手牌&#xff0c;求理论可以和牌的最小轮数的期望&#xff0e;定义和牌为&#xff1a;4句话1对乱将&#xff0c;不能有杠&#xff1b;七对 原始题解-shadowice 写得很好的题解 首先分析期望&#xff1a;\(<--\)所有和牌的步…

采样次数不同平均值不一样_不同的真石漆装饰效果也是不一样的

外墙真石漆真的是一件很好的产品&#xff0c;具有防火性、防水性、安全且环保、粘力强、永不褪色等特点&#xff0c;无疑是人们较好的选择&#xff0c;在很早之前就已经逐渐的取代了瓷砖和其他石材在人们心中的位置。真石漆的品种不止一种&#xff0c;按照装饰效果我们可以分为…

android项目方法数超过65536的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 当项目的总方法数超过65536个&#xff0c;运行在手机上&#xff0c;指不定会报找不到哪个文件的错。 我把项目的PullRefresh框架切换为SmartRefresh框架出现了方法数超过65536。 此文只是做一下笔记&#xff0c;不多做解…

python快乐数字怎么表达_Python经典面试题:这些面试题你会了吗?

前言什么&#xff1f;你要去找工作&#xff1f;先别急着找工作&#xff0c;先把下面的python面试题先给看了吧&#xff0c;不然你就只是去面试而不是找工作。话说不打没准备的仗&#xff0c;下面这些基本的面试题都不会你怎么可能找到工作呢&#xff1f;还是先把下面的东西1、P…

【swift学习笔记】三.使用xib自定义UITableViewCell

使用xib自定义tableviewCell看一下效果图 1.自定义列 新建一个xib文件 carTblCell&#xff0c;拖放一个UITableViewCell,再拖放一个图片和一个文本框到tableviewcell上 并给我们的xib一个标识 为了学习&#xff0c;我这里的xib和后台的class是分开建的。我们再建一个cocoa touc…

命令模式(Command Pattern)

1命令模式是一个高内聚的模式。定义如下&#xff1a;将一个请求封装成一个对象&#xff0c;从而让你使用不同的请求把客户端参数化&#xff0c;对请求排队或者记录请求日志&#xff0c;可以提供命令的撤销和恢复功能。 2.角色说明&#xff1a; ● Receive接收者角色 该角色就…

graphpad7.04多组比较p值_同是折线图为何你却这么优秀,这才是多组数据作图应该有的样子...

相信大家对Excel做折线图应该不陌生&#xff0c;在展示数据的时候&#xff0c;图表是一种最好的展示方法。但是经常会碰到一种尴尬的事情就是&#xff0c;当数据维多比较多的时候&#xff0c;做出的图表就会显得非常难看。今天我们就来学习一下&#xff0c;多组数据怎么做折线图…

linux 运行 chom,Hadoop安装-单节点/伪分布(2.7.3)

1&#xff0c;下载Hadoop目前在Ubuntu的软件库里面 没有发现Hadoop的压缩包&#xff0c;没猜错Hadoop不是可执行文件 只是一个压缩包吧&#xff01;所以我们只能自己到官网下载(http://hadoop.apache.org/releases.html)&#xff1b;在Apache社区中&#xff0c;下载软件的时候…

app之---豆果美食

1.抓包 2.代码 抓取&#xff1a; #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests from multiprocessing import Queue from handle_pymongo import mongo from concurrent.futures import ThreadPoolExecutorclass Douguo():def __init__(self):s…

语言坐标度分秒的换算_测量位置度说明

测量位置度说明位置度是限制被测要素的实际位置对理想位置变动量的指标。它的定位尺寸为理论正确尺寸。位置度公差在评定实际要素位置的正确性, 是依据图样上给定的理想位置。位置度包括点的位置度、线的位置度和面的位置度。[1] 点的位置度:如公差带前加S&#xffe0;&#xf…

OpenStack创建win7实例遇到的问题(尚未解决,求帮助)

原地址在这里&#xff1a;&#xff08;作者也是我&#xff0c;害羞&#xff09;http://www.aboutyun.com/forum.php?modviewthread&tid22898 小白经过两天尝试&#xff0c;用fuel部署好了OpenStack的云平台&#xff0c;接下来想在Compute节点上创建一个win7 实例&#xff…

VMware使两台windows虚拟机能够互相ping通

如果以下内容测试无效&#xff0c;可参考另一篇&#xff1a;VMware虚拟机配置内网电脑能访问 1.关闭防火墙 cmd命令行里输入&#xff1a;netsh firewall set opmode disable 2.测试如果还不能ping通&#xff0c;就把网络类型选nat类型 3.测试&#xff1a;vmware网关默认是.2 转…

linux账号前有个base,安装 aconda 后Linux的终端界面前部出现(base)字样

aconda 是做什么用的这里就不说了&#xff0c;一般玩Python的都知道这东西&#xff0c;最早接触这东西是因为它把NVIDIA中cuda计算和Python互连的一个库拿下了&#xff0c;是买下来了还是专业&#xff0c;还是唯一合作的也就记不清了&#xff0c;那就是 numba , 那些年头Python…