1.资源记载方式

(1)Egret引擎是2.0.5。

(2)resource/resource.json文件是:

  1. {
  2. "resources": [
  3. {
  4. "name": "bgImage",
  5. "type": "image",
  6. "url": "assets/bg.jpg"
  7. },
  8. {
  9. "name": "egretIcon",
  10. "type": "image",
  11. "url": "assets/egret_icon.png"
  12. },
  13. {
  14. "name": "description",
  15. "type": "json",
  16. "url": "config/description.json"
  17. }
  18. ],
  19. "groups": [
  20. {
  21. "name": "demo2",
  22. "keys": "bgImage,egretIcon"
  23. }
  24. ]
  25. }

(3)egretProperties.json中的文档类document_class中的Mian修改为“Demo2”.

(4)Demo2.ts类

  1. /**
  2. *
  3. * @author
  4. *
  5. */
  6. class Demo2 extends egret.DisplayObjectContainer {
  7. //测试用的位图
  8. private logo: egret.Bitmap;
  9. public constructor() {
  10. super();
  11. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.startGame,this);
  12. }
  13. //游戏启动后,会自动执行此方法
  14. public startGame(): void {
  15. this.loadResource();
  16. }
  17. //加载所需资源
  18. private loadResource(): void
  19. { //使用所需资源
  20. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
  21. //loadConfig的第二个参数用于指定资源根目录
  22. RES.loadConfig("resource/resource.json","resource/");
  23. RES.loadGroup("demo2");
  24. }
  25. //加载完毕后即可使用
  26. private onResourceLoadComplete(event: RES.ResourceEvent): void
  27. {
  28. this.logo = new egret.Bitmap();//创建位图
  29. this.logo.touchEnabled = true;//可点击
  30. this.logo.width = this.logo.height = ;//设置尺寸
  31. this.logo.scaleX = this.logo.scaleY = 1.5;//设置缩放
  32. this.logo.rotation = ;//旋转
  33. this.logo.skewX = ;//斜切
  34. this.logo.anchorX = 0.5;//设置中心点的位置,实现围绕中心旋转
  35. this.logo.texture = RES.getRes("egretIcon");//设置纹理
  36. this.addChild(this.logo);//添加到显示列表
  37. this.startAnimation();//调用运动函数
  38. }
  39. //使用Tween让位图做一些运动,并封装在一个方法内部
  40. private startAnimation(): void
  41. {
  42. var tw = egret.Tween.get(this.logo);
  43. //Tween的执行是串行的,方法执行后,返回自身,这样4个to相连,其实就是依次执行4次to方法。
  44. tw.to({ x: ,y: },).to({ x: ,y: },).to({ x: ,y:},).to({ x: ,y: },);
  45. tw.call(this.startAnimation,this);//最后又调用了一次call,含义是动画完成后,调用startAnimation方法。其实就是产生循环调用的结果,动画会一直执行下去。
  46. }
  47.  
  48. }

2.普通文本

(1)Egret引擎是2.05

(2)egretProperties.json中的文档类document_class中的Mian修改为“Demo2”.

(3)Demo2.ts类

  1. /**
  2. *
  3. * @author
  4. *
  5. */
  6. class Demo2 extends egret.DisplayObjectContainer {
  7.  
  8. public constructor() {
  9. super();
  10. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.startGame,this);
  11. }
  12. //游戏启动后,会自动执行此方法。
  13. //Canvas有fillText和strokeText两个方法来绘制文本,Egret正式通过这个机制绘制普通文本的。
  14. public startGame(): void {
  15. var label1 = new egret.TextField();//创建TextField实例
  16. label1.fontFamily = "Impact";//设置字体。
  17. label1.textColor = 0xffffff;//设置颜色,和Flash一样,设置16进制的数值
  18. label1.textAlign = "left";//设置文本对齐,可选:left,center,right
  19. label1.text = "English我是光头强\n 你是大熊";//用\n来换行
  20. label1.size = ;//设置字号
  21. label1.width = ;//如果设置宽度,则文本自动换行
  22. label1.strokeColor = 0xFF0000;//设置描边颜色,描边在游戏中的文字上很常见
  23. label1.stroke = ;//设置描边大小
  24. //设置坐标
  25. label1.x = ;
  26. label1.y = ;
  27. //支持旋转和斜切
  28. label1.rotation = ;
  29. label1.skewX = ;
  30. this.addChild(label1);//添加到显示列表
  31. }
  32. }

3.播放音乐

(1)Egret引擎是2.05

(2)egretProperties.json中的文档类document_class中的Mian修改为“Demo2”.

(3)resource/assets中添加hongqinajin.mp3音乐文件。resource/resource.json文件是:

  1. {
  2. "resources": [
  3. {"name":"sfx_die","type":"sound","url":"assets/hongqianjin.mp3"},
  4. {
  5. "name": "description",
  6. "type": "json",
  7. "url": "config/description.json"
  8. }
  9.  
  10. ],
  11. "groups": [
  12. {
  13. "name": "demo2",
  14. "keys": "bgImage,egretIcon"
  15. },
  16. {"name":"demo6","keys":"sfx_die"}
  17. ]
  18. }

(4)Demo2.ts类

  1. /**
  2. *
  3. * @author 目前egret支持的音乐格式只有mp3。和图片创建一样,播放音乐也需要先加载音乐文件
  4. *
  5. *
  6. */
  7. class Demo2 extends egret.DisplayObjectContainer {
  8.  
  9. public constructor() {
  10. super();
  11. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.startGame,this);
  12. }
  13. //游戏启动后,会自动执行此方法
  14. public startGame(): void {
  15. this.loadResource();
  16. }
  17. //加载所需资源
  18. private loadResource(): void { //使用所需资源
  19. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
  20. //loadConfig的第二个参数用于指定资源根目录
  21. RES.loadConfig("resource/resource.json","resource/");
  22. RES.loadGroup("demo6");
  23. }
  24. //加载完毕后就可以对音乐文件进行播放和停止的操作
  25. private onResourceLoadComplete(event: RES.ResourceEvent): void {
  26. var sound:egret.Sound = RES.getRes("sfx_die");//获取音乐文件
  27. sound.play();//播放音乐文件
  28.  
  29. //3秒后音乐播放结束
  30. egret.setTimeout(function() {
  31. sound.pause();//音乐播放结束
  32. },this,);//间隔时间为3秒针
  33.  
  34. }
  35. }

4.事件

(1)Egret引擎是2.05

(2)egretProperties.json中的文档类document_class中的Mian修改为“Demo2”.

(3)resource/assets中添加hongqinajin.mp3音乐文件。resource/resource.json文件是:

  1. {
  2. "resources": [
  3. {
  4. "name": "bgImage",
  5. "type": "image",
  6. "url": "assets/bg.jpg"
  7. },
  8. {
  9. "name": "egretIcon",
  10. "type": "image",
  11. "url": "assets/egret_icon.png"
  12. },
  13. {
  14. "name": "description",
  15. "type": "json",
  16. "url": "config/description.json"
  17. }
  18. ],
  19. "groups": [
  20. {
  21. "name": "demo2",
  22. "keys": "bgImage,egretIcon"
  23. }
  24. ]
  25. }

(4)Demo2.ts类

  1. /**
  2. *
  3. * @author :egret采用了和Flash类似的“事件流”机制。事件的基类是Event,所有的事件类从Event扩展而来。
  4. * Egret中的事件支持冒泡机制,在决定事件的时候决定它是否冒泡,同样也就有了target和currentTarget之分.
  5. *
  6. */
  7. class Demo2 extends egret.DisplayObjectContainer {
  8.  
  9. public constructor() {
  10. super();
  11. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.startGame,this);
  12. }
  13. //游戏启动后,会自动执行此方法
  14. public startGame(): void {
  15. this.loadResource();
  16. }
  17. //加载所需资源
  18. private loadResource(): void { //使用所需资源
  19. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
  20. //loadConfig的第二个参数用于指定资源根目录
  21. RES.loadConfig("resource/resource.json","resource/");
  22. RES.loadGroup("demo2");
  23. }
  24. //加载完毕后就可以对文件操作
  25. //显示
  26. private onResourceLoadComplete(): void
  27. {
  28. var container = new egret.DisplayObjectContainer();
  29. container.touchChildren = true;
  30. container.touchEnabled = true;//设置容器是否响应Touch交互
  31. var bitmap1 = new egret.Bitmap(RES.getRes("egretIcon"));
  32. bitmap1.name = "myBitmap";
  33. bitmap1.touchEnabled = true;
  34. container.addChild(bitmap1);
  35. container.name = "myContainer";
  36. container.x = container.y = ;
  37. this.addChild(container);
  38.  
  39. container.addEventListener(egret.TouchEvent.TOUCH_TAP,this.touchHandler,container);
  40.  
  41. }
  42. //事件侦听处理
  43. private touchHandler(event: egret.TouchEvent): void
  44. {
  45. console.log("dddd"+event.type);
  46. var msg: string = event.type;
  47. msg += "\n" + event.stageX + "," + event.stageY;
  48. msg += "\n" + event.localX+ "," + event.localY;
  49. msg += "\n" + event.currentTarget.name + "," + event.target.name;
  50. alert(msg);
  51.  
  52. }
  53.  
  54. }

5.进度条的加载

(1)Egret引擎是2.05

(2)resource/assets中根据resource/resource.json文件配置相关资源。resource/resource.json文件是:

  1. {
  2. "groups":[
  3. {
  4. "keys":"barbright,bardark",
  5. "name":"preload"
  6. },
  7. {
  8. "keys":"x1,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x2,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x3,x30,x4,x5,x6,x7,x8,x9",
  9. "name":"x30"
  10. },
  11. {
  12. "keys":"",
  13. "name":""
  14. }],
  15. "resources":[
  16. {
  17. "name":"barbright",
  18. "type":"image",
  19. "url":"assets/barbright.png"
  20. },
  21. {
  22. "name":"bardark",
  23. "type":"image",
  24. "url":"assets/bardark.png"
  25. },
  26. {
  27. "name":"x1",
  28. "type":"image",
  29. "url":"assets/x30/x1.png"
  30. },
  31. {
  32. "name":"x10",
  33. "type":"image",
  34. "url":"assets/x30/x10.png"
  35. },
  36. {
  37. "name":"x11",
  38. "type":"image",
  39. "url":"assets/x30/x11.png"
  40. },
  41. {
  42. "name":"x12",
  43. "type":"image",
  44. "url":"assets/x30/x12.png"
  45. },
  46. {
  47. "name":"x13",
  48. "type":"image",
  49. "url":"assets/x30/x13.png"
  50. },
  51. {
  52. "name":"x14",
  53. "type":"image",
  54. "url":"assets/x30/x14.png"
  55. },
  56. {
  57. "name":"x15",
  58. "type":"image",
  59. "url":"assets/x30/x15.png"
  60. },
  61. {
  62. "name":"x16",
  63. "type":"image",
  64. "url":"assets/x30/x16.png"
  65. },
  66. {
  67. "name":"x17",
  68. "type":"image",
  69. "url":"assets/x30/x17.png"
  70. },
  71. {
  72. "name":"x18",
  73. "type":"image",
  74. "url":"assets/x30/x18.png"
  75. },
  76. {
  77. "name":"x19",
  78. "type":"image",
  79. "url":"assets/x30/x19.png"
  80. },
  81. {
  82. "name":"x2",
  83. "type":"image",
  84. "url":"assets/x30/x2.png"
  85. },
  86. {
  87. "name":"x20",
  88. "type":"image",
  89. "url":"assets/x30/x20.png"
  90. },
  91. {
  92. "name":"x21",
  93. "type":"image",
  94. "url":"assets/x30/x21.png"
  95. },
  96. {
  97. "name":"x22",
  98. "type":"image",
  99. "url":"assets/x30/x22.png"
  100. },
  101. {
  102. "name":"x23",
  103. "type":"image",
  104. "url":"assets/x30/x23.png"
  105. },
  106. {
  107. "name":"x24",
  108. "type":"image",
  109. "url":"assets/x30/x24.png"
  110. },
  111. {
  112. "name":"x25",
  113. "type":"image",
  114. "url":"assets/x30/x25.png"
  115. },
  116. {
  117. "name":"x26",
  118. "type":"image",
  119. "url":"assets/x30/x26.png"
  120. },
  121. {
  122. "name":"x27",
  123. "type":"image",
  124. "url":"assets/x30/x27.png"
  125. },
  126. {
  127. "name":"x28",
  128. "type":"image",
  129. "url":"assets/x30/x28.png"
  130. },
  131. {
  132. "name":"x29",
  133. "type":"image",
  134. "url":"assets/x30/x29.png"
  135. },
  136. {
  137. "name":"x3",
  138. "type":"image",
  139. "url":"assets/x30/x3.png"
  140. },
  141. {
  142. "name":"x30",
  143. "type":"image",
  144. "url":"assets/x30/x30.png"
  145. },
  146. {
  147. "name":"x4",
  148. "type":"image",
  149. "url":"assets/x30/x4.png"
  150. },
  151. {
  152. "name":"x5",
  153. "type":"image",
  154. "url":"assets/x30/x5.png"
  155. },
  156. {
  157. "name":"x6",
  158. "type":"image",
  159. "url":"assets/x30/x6.png"
  160. },
  161. {
  162. "name":"x7",
  163. "type":"image",
  164. "url":"assets/x30/x7.png"
  165. },
  166. {
  167. "name":"x8",
  168. "type":"image",
  169. "url":"assets/x30/x8.png"
  170. },
  171. {
  172. "name":"x9",
  173. "type":"image",
  174. "url":"assets/x30/x9.png"
  175. }]
  176. }

(3)Main.ts

  1. class Main extends egret.DisplayObjectContainer {
  2. public constructor(){
  3. super();
  4. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
  5. }
  6. private onAddToStage(event: egret.Event)
  7. {
  8. //初始化Resource资源记载库
  9. RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
  10. RES.loadConfig("resource/resource.json","resource/");
  11. }
  12. //配置文件加载完成,开始预加载preload资源库
  13. private onConfigComplete(event: RES.ResourceEvent): void
  14. {
  15. RES.removeEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
  16. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.createGameScene,this);
  17. RES.loadGroup("preload");
  18. }
  19. //perload 资源组加载结束,创建游戏场景
  20. private load: Load;
  21. private createGameScene(event: RES.ResourceEvent): void
  22. {
  23. RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.createGameScene,this);
  24. //绘制点击的方块
  25. var sp: egret.Sprite= new egret.Sprite();
  26. sp.graphics.beginFill(0xffffff);
  27. sp.graphics.drawRect(,,,);
  28. sp.x = ;
  29. sp.y = ;
  30. sp.width = ;
  31. sp.height = ;
  32. sp.touchEnabled = true;//打开点击方块中的属性
  33. this.addChild(sp);
  34.  
  35. //文字说明
  36. var txt1: egret.TextField = new egret.TextField();
  37. txt1.text = "点击架载第1波30个资源图片";
  38. txt1.x = ,txt1.y = ;
  39. this.addChild(txt1);
  40.  
  41. //申请一个Load实例
  42. this.load = new Load();
  43. this.load.x = this.stage.width / ; this.load.y = ;
  44. this.addChild(this.load);
  45.  
  46. //点击开始加载
  47. sp.addEventListener(egret.TouchEvent.TOUCH_TAP,this.startLoad,this);
  48. }
  49. private startLoad(): void
  50. {
  51. this.load.startLoad();//记载对象load中的startLoad函数
  52. }
  53.  
  54. }

(4)Load.ts

  1. class Load extends egret.DisplayObjectContainer
  2. {
  3. private maskRect: egret.Rectangle;//一个九宫格
  4. private txt: egret.TextField;
  5. private bright: egret.Bitmap;
  6. public constructor() {
  7. super();
  8. this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
  9. }
  10. public onAddToStage(): void
  11. {
  12. this.x = this.stage.stageWidth / ;//改变了这个屏幕的中心点的位置,由原来的左上角中的x改为中间点为x的起始值
  13. //底部的进度条
  14. var dark: egret.Bitmap = new egret.Bitmap(RES.getRes("bardark"));
  15. dark.x = -dark.width / ;
  16. this.addChild(dark);
  17. //上面的进度条
  18. this.bright = new egret.Bitmap(RES.getRes("barbright"));
  19. this.bright.x = -this.bright.width / ;
  20. this.addChild(this.bright);
  21.  
  22. this.maskRect = new egret.Rectangle(,,,);//一开始的遮罩为0
  23. this.bright.mask = this.maskRect;
  24.  
  25. //加载进度说明
  26. this.txt = new egret.TextField();
  27. this.txt.width = ;
  28. this.txt.textAlign = "center";
  29. this.txt.text = "0/30";
  30. this.txt.x = -;
  31. this.txt.y = -;
  32. this.addChild(this.txt);
  33. }
  34.  
  35. public startLoad(): void
  36. {
  37. //加载载资源结束调用onLoadEnd()
  38. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onLoadEnd,this);
  39. //加载资源的过程,调用onProgress()
  40. RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onProgress,this);
  41. RES.loadGroup("x30");//记载资源组
  42. }
  43. //记载资源文件过程中
  44. public onProgress(event: RES.ResourceEvent): void
  45. {
  46. this.txt.text = event.itemsLoaded.toString() + "/" + event.itemsTotal.toString();//记载过程中的文字
  47. var per:number = event.itemsLoaded / event.itemsTotal;//记载的百分比。event.itemsLoaded是加载的总量。event.itemsToTal是总共要加载的总量。
  48. this.maskRect = new egret.Rectangle(,,per * ,);//遮罩的百分比
  49. this.bright.mask = this.maskRect;//九宫格赋值给bright的mask属性
  50. }
  51. //记载资源文件结束
  52. public onLoadEnd(): void
  53. {
  54. this.txt.text = "30/30 记载结束";
  55. }
  56. }

6.本地数据存储

(1)Egret引擎是2.05。

(2)Main.ts

  1. //egret实现了本地存储的功能。存储数据需要key和value,都必须是字符串。
  2. class Main extends egret.DisplayObjectContainer{
  3.  
  4. public constructor() {
  5. super();
  6. this.createGameScene();
  7. }
  8.  
  9. private createGameScene():void{
  10. //申请一个文本框
  11. this.txt = new egret.TextField();
  12. this.txt.text = "点我";
  13. this.addChild(this.txt);
  14. this.touchEnabled = true;//打开文本框的点击属性
  15.  
  16. this.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onSave,this);//文本框点击的蒋婷
  17.  
  18. }
  19.  
  20. private txt:egret.TextField
  21. //本案例中的key就是“pro”
  22. private onSave(e:egret.TouchEvent):void{
  23. //egret.localStorage.removeItem("pro");删除数据
  24. //egret.localStorage.clear();//将所有数据清空
  25.  
  26. var value:string;
  27. //如果能读取到数据,就把数据复制给value,就在文本框txt中显示出来。如果没有读取数据,那么就是文本框就显示1.
  28. if(egret.localStorage.getItem("pro"))
  29. {
  30. value =egret.localStorage.getItem("pro"); //读取数据
  31. }else{
  32. value="";
  33. }
  34.  
  35. this.txt.text = value;
  36. var v2:string = (parseInt(value)+).toString();//每次点击一次,就发生一次监听,也就相当于本函数执行一次,也就是value的值要加1。
  37. egret.localStorage.setItem("pro",v2);//把数组v2存储了在本地了。
  38. }
  39.  
  40. }

7.粒子系统

官方给定的粒子系统中档案非常的乱,现在进行整理如下。

(1)引擎是2.5.4。在官方中下载粒子系统的Particle。注意只需要其中只有三个文件(Particle.d.ts,particle.js,particle.min.js)。不需要其它的文件了。

(2)将上述中的三个文件放到文件夹particle中。放到项目中的libs/modules/中即可。

(3)在egretProperties.json中进行配置。在modules中添加“name”和“path”

  1. {
  2. "native": {
  3. "path_ignore": []
  4. },
  5. "publish": {
  6. "web": ,
  7. "native": ,
  8. "path": "bin-release"
  9. },
  10. "egret_version": "2.5.4",
  11. "modules": [
  12. {
  13. "name": "egret"
  14. },
  15. {
  16. "name": "game"
  17. },
  18. {
  19. "name": "tween"
  20. },
  21. {
  22. "name": "particle",
  23. "path": "../libsrc"
  24. },
  25.  
  26. {
  27. "name": "res"
  28. }
  29.  
  30. ]
  31. }

不过我郁闷的是path中改为:“path”:"../libs"和“path”:“../libs/modules/particle”都可以。
(4)利用EgretFeather进行制作后得到两个文件,一个是png文理和json文件。拷贝到resource/assets中去,并且在resource.json进行正确的配置,在这里我相信大家都会。这里是官方的resource.json配置。

  1. {
  2. "resources":
  3. [
  4. {"name":"blood","type":"image","url":"assets/particle/blood.png"},
  5. {"name":"star","type":"image","url":"assets/particle/star.png"},
  6. {"name":"energy","type":"image","url":"assets/particle/energy.png"},
  7. {"name":"magic","type":"image","url":"assets/particle/magic.png"},
  8. {"name":"fireworks_json","type":"json","url":"assets/particle/fireworks.json"},
  9. {"name":"fire_json","type":"json","url":"assets/particle/fire.json"},
  10. {"name":"sun_json","type":"json","url":"assets/particle/sun.json"},
  11. {"name":"jellyfish_json","type":"json","url":"assets/particle/jellyfish.json"}
  12. ],
  13.  
  14. "groups":
  15. [
  16. {"name":"preload","keys":"blood,star,energy,magic,fireworks_json,fire_json,sun_json,jellyfish_json"}
  17. ]
  18. }

(5)到了这一步骤,配置工作都完成了,下面就是代码的运用了。
当然首先是加载资源了。

  1. class Main extends egret.DisplayObjectContainer {
  2.  
  3. /**
  4. * 加载进度界面
  5. */
  6. private loadingView:LoadingUI;
  7.  
  8. public constructor() {
  9. super();
  10. this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
  11. }
  12.  
  13. private onAddToStage(event:egret.Event) {
  14. //设置加载进度界面
  15. this.loadingView = new LoadingUI();
  16. this.stage.addChild(this.loadingView);
  17.  
  18. //初始化Resource资源加载库
  19. RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE, this.onConfigComplete, this);
  20. RES.loadConfig("resource/resource.json", "resource/");
  21. }
  22.  
  23. /**
  24. * 配置文件加载完成,开始预加载preload资源组。
  25. */
  26. private onConfigComplete(event:RES.ResourceEvent):void {
  27. RES.removeEventListener(RES.ResourceEvent.CONFIG_COMPLETE, this.onConfigComplete, this);
  28. RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.onResourceLoadComplete, this);
  29. RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS, this.onResourceProgress, this);
  30. RES.loadGroup("preload");
  31. }
  32.  
  33. /**
  34. * preload资源组加载完成
  35. */
  36. private onResourceLoadComplete(event:RES.ResourceEvent):void {
  37. if (event.groupName == "preload") {
  38. this.stage.removeChild(this.loadingView);
  39. RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.onResourceLoadComplete, this);
  40. RES.removeEventListener(RES.ResourceEvent.GROUP_PROGRESS, this.onResourceProgress, this);
  41. this.createGameScene();
  42. }
  43. }
  44.  
  45. /**
  46. * preload资源组加载进度
  47. */
  48. private onResourceProgress(event:RES.ResourceEvent):void {
  49. if (event.groupName == "preload") {
  50. this.loadingView.setProgress(event.itemsLoaded, event.itemsTotal);
  51. }
  52. }
  53. //这个上面都在讲述加载资源,下面才是粒子系统运用的代码。
  54.  
  55. private configList:Array<string> = ["fireworks","fire","sun","jellyfish"];//将所有运用的json文件放到一个数组中
  56. private configIndex:number = -;//标志json文件是哪一个
  57. private textureList:Array<string> = ["blood","star","energy","magic"];//将所有的纹理放在一个数组中
  58. private textureIndex:number = ;//标志纹理集是哪一个?
  59. private system:particle.ParticleSystem;//声明一个粒子系统system
  60. private btn1:egret.TextField;
  61. private btn2:egret.TextField;
  62.  
  63. /**
  64. * 创建游戏场景
  65. */
  66. private createGameScene():void {
  67.  
  68. this.stage.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onClick, this);
  69.  
  70. //设置换效果的图标
  71. this.btn1 = new egret.TextField();
  72. this.btn1.text = "换效果";
  73. this.addChild(this.btn1);
  74. this.btn1.x = ;
  75. this.btn1.width = ;
  76. this.btn1.height = ;
  77. this.btn1.touchEnabled = true;
  78. this.btn1.addEventListener(egret.TouchEvent.TOUCH_TAP, this.changeEffect, this);
  79.  
  80. //设置换换纹理的图标
  81. this.btn2 = new egret.TextField();
  82. this.btn2.text = "换纹理";
  83. this.addChild(this.btn2);
  84. this.btn2.x = ;
  85. this.btn2.y = ;
  86. this.btn2.width = ;
  87. this.btn2.height = ;
  88. this.btn2.touchEnabled = true;
  89. this.btn2.addEventListener(egret.TouchEvent.TOUCH_TAP, this.changeTexture, this);
  90.  
  91. this.changeEffect();//粒子生函数。
  92. }
  93.  
  94. private onClick(event):void {
  95. if(event.target == this.btn1 || event.target == this.btn2) {//如果点击的不是换纹理图标和换效果的图标那么就返回函数。
  96. return;
  97. }
  98. this.system.emitterX = event.stageX;//粒子系统的位置时点击时位置。也就是鼠标点击哪儿,哪儿生成粒子。
  99. this.system.emitterY = event.stageY;
  100. }
  101.  
  102. private changeEffect():void {
  103. this.configIndex++;//默认采用fireworks.json纹理集
  104. if (this.configIndex >= this.configList.length) {//当configIndex大于长度时就采用fireworks.json这个纹理集
  105. this.configIndex = ;
  106. }
  107. var s = this.configList[this.configIndex];//将json复制给s
  108. var textureS = this.textureList[this.textureIndex];//将纹理集复制给textureS
  109. var texture = RES.getRes(textureS);//获取纹理集
  110. var config = RES.getRes(s + "_json");//获取json文件。
  111.  
  112. if (this.system) {//如果存在了粒子系统,
  113. this.system.stop();//粒子系统停止制造
  114. this.removeChild(this.system);//移除粒子系统
  115. }
  116.  
  117. this.system = new particle.GravityParticleSystem(texture, config);//生成一个粒子系统
  118. this.addChild(this.system);//粒子系统放到舞台上,否则就不能显示
  119. this.system.start();//粒子系统开始启动
  120. }
  121.  
  122. private changeTexture():void {//改变纹理集
  123. this.textureIndex++;//纹理集增加1
  124. if (this.textureIndex >= this.textureList.length) {//如果textureIndex数目超过其数组长度,那么就复制为0,也就是从头开始
  125. this.textureIndex = ;
  126. }
  127. var s = this.textureList[this.textureIndex];//获取纹理的名字
  128. var texture = RES.getRes(s);//获取纹理
  129. this.system.changeTexture(texture);//粒子系统改变纹理。
  130. }
  131. }

(6)粒子系统中一些重要属性和方法。

ParticleSystem:

(I)publc emissionTime:number=-1;粒子出现的时间,单位是毫秒,取值范围是(0,Number.MAX_VALUE],-1表示无限时间。如果你希望粒子系统之存在几秒毫秒时间,一定要设置。不然粒子系统一定都在创建。

(II)public emitterX:number=0;public emitterY:number=0;也就是粒子系统产生(出现)的位置。

8.callLater()方法

(1)egret.全局函数下定义

(2)public callLater(method:Function,thisObject:any,...args):void

功能:延迟函数到屏幕重绘前执行。

参数:method:Function--要延迟执行的函数

thisObject:any---回调函数的this引用

    ...args--函数参数列表

(3)

  1. private label: egret.TextField;
  2. private createScene(): void {
  3. //创建TextField对象
  4. this.label = new egret.TextField();
  5. //设置文本颜色
  6. this.label.textColor = 0xFF0000;
  7. //设置字号
  8. this.label.size = ;
  9. //设置显示文本
  10. this.label.text = "Hello Egret";
  11. //添加到显示列表
  12. this.addChild(this.label);
  13.  
  14. console.log("beforCallLater");
  15. //使用callLater实现延迟函数
  16. egret.callLater(this.onCallLater,this);
  17. console.log("afterCallLater");
  18. }
  19. private onCallLater(): void
  20. {
  21. console.log("onCallLater");
  22. this.label.text = "callLater";
  23. }

(4)结果:
打印:

beforCallLater
afterCallLater
onCallLater

屏幕上显示的内容是   callLater

9.getDefinitionByName()方法

(1)egret.全局函数下定义

(2)public getDefinitionByName(name:string):any

功能:返回name参数指定的类的类对象引用

参数:name:string---类的名称

(3)

  1. private createScene(): void {
  2. console.log(egret.getDefinitionByName("egret.DisplayObject"));//egret.DisplayObject对象
  3. console.log(egret.getDefinitionByName("egret.Nothing"));//null
  4.  
  5. var cls: any = egret.getDefinitionByName("egret.Shape");
  6. var shape: egret.Shape = new cls();
  7. shape.graphics.beginFill(0xff00000);
  8. shape.graphics.drawRect(,,,);
  9. shape.graphics.endFill();
  10. shape.x = shape.y = ;
  11. this.addChild(shape);
  12. }

(4)结果

打印:

  1. function DisplayObject() {
  2. _super.call(this);
  3. /**
  4. * @private
  5. * 能够含有子项的类将子项列表存储在这个属性里。
  6. */
  7. this.$children = null;
  8. /**
  9. * @private
  10. */
  11. this.$parent = null;
  12. /**
  13. * @private
  14. */
  15. this.$stage = null;
  16. /**
  17. * @private
  18. * 这个对象在显示列表中的嵌套深度,舞台为1,它的子项为2,子项的子项为3,以此类推。当对象不在显示列表中时此属性值为0.
  19. */
  20. this.$nestLevel = ;
  21. /**
  22. * @private
  23. */
  24. this.$visible = true;
  25. /**
  26. * @private
  27. * cacheAsBitmap创建的缓存位图节点。
  28. */
  29. this.$displayList = null;
  30. /**
  31. * @private
  32. */
  33. this.$alpha = ;
  34. this.$touchEnabled = DisplayObject.defaultTouchEnabled;
  35. /**
  36. * @private
  37. */
  38. this.$scrollRect = null;
  39. /**
  40. * @private
  41. */
  42. this.$blendMode = ;
  43. /**
  44. * @private
  45. * 被遮罩的对象
  46. */
  47. this.$maskedObject = null;
  48. /**
  49. * @private
  50. */
  51. this.$mask = null;
  52. /**
  53. * @private
  54. */
  55. this.$maskRect = null;
  56. /**
  57. * @private
  58. */
  59. this.$parentDisplayList = null;
  60. /**
  61. * @private
  62. * 是否需要重绘的标志,此属性在渲染时会被访问,所以单独声明一个直接的变量。
  63. */
  64. this.$isDirty = false;
  65. /**
  66. * @private
  67. * 这个对象在舞台上的整体透明度
  68. */
  69. this.$renderAlpha = ;
  70. /**
  71. * @private
  72. * 相对于显示列表根节点或位图缓存根节点上的矩阵对象
  73. */
  74. this.$renderMatrix = new egret.Matrix();
  75. /**
  76. * @private
  77. * 此显示对象自身(不包括子项)在显示列表根节点或位图缓存根节点上的显示尺寸。
  78. */
  79. this.$renderRegion = null;
  80. this.$displayFlags = /* InitFlags */;
  81. this.$DisplayObject = {
  82. : ,
  83. : ,
  84. : ,
  85. : ,
  86. : ,
  87. : "",
  88. : new egret.Matrix(),
  89. : new egret.Matrix(),
  90. : new egret.Matrix(),
  91. : new egret.Rectangle(),
  92. : new egret.Rectangle(),
  93. : false,
  94. : ,
  95. : ,
  96. : NaN,
  97. : NaN //explicitHeight,
  98. };
  99. }
  100. null

屏幕上显示一个红色的正方形

10.getQualifiedClassName()方法

(1)egret.全局函数下定义

(2)public getQualifiedClassName(value:any):string

功能:返回对象的完全限定类名。

参数:value:any--需要完全限定类名称的对象,可以将任何JavaScript值传递给此方法,包括所有可用的JavaScript类型、对象实例、原始类型(如number)和类对象。

返回:包括完全限定类名称的字符串。

(3)

  1. private createScene(): void {
  2. console.log(egret.getQualifiedClassName(egret.DisplayObject));//egret.DisplayObject
  3. console.log(egret.getQualifiedClassName(window));//Window
  4. }

(4)结果:

egret.DisplayObject
Window

11.音频播放器

(1)Egret引擎2.5.4,新建Egret EUI项目

(2)asset中拷贝音乐,并在default.res.json中配置

(3)Main.ts

  1. /*
  2. * egret2.5 音频播放测试 点击播放按钮从头播发 播放状态下可以暂停和恢复播发。 循环开关开启讲循环播放。
  3. */
  4.  
  5. class Main extends eui.UILayer {
  6. protected createChildren(): void {
  7. super.createChildren();
  8. //eui.Theme 皮肤主题
  9. var theme = new eui.Theme("resource/default.thm.json",this.stage);
  10. theme.addEventListener(egret.Event.COMPLETE,this.onLoad,this);
  11. }
  12. private onLoad() {
  13. var appui = new SoundUI();
  14. appui.horizontalCenter = ;
  15. this.addChild(appui);
  16. }
  17. }

SoundUI.ts

  1. /**
  2. * 播放器的UI界面,包括播放,暂停,设置音量等
  3. */
  4. class SoundUI extends eui.UILayer {
  5.  
  6. private fontSize = ;
  7. public constructor() {
  8. super();
  9. //Panel类定义一个容器,该容器为其子代提供标题栏、关闭按钮、可移动区域和内容区域
  10. var panel = new eui.Panel();
  11. panel.horizontalCenter = ;
  12. panel.verticalCenter = ;
  13. panel.title = "播放器测试";//标题栏中显示的标题
  14. panel.width = ;
  15. panel.height = ;
  16.  
  17. this.addChild(panel);
  18.  
  19. var music = new SoundTest();
  20.  
  21. //Label是可以呈现一行或多行统一格式文本的UI组件
  22. var volumenLabel = new eui.Label();
  23. volumenLabel.text = "音量";
  24. volumenLabel.textColor = 0x0205cc;
  25. volumenLabel.size = this.fontSize;
  26. volumenLabel.x = ;
  27. volumenLabel.y = ;
  28. panel.addChild(volumenLabel);
  29.  
  30. //使用HSlider(水平滑块)控件,用户可通过在滑块轨道的端点之间移动滑块来选择值。
  31. var slider = new eui.HSlider();
  32. slider.maximum = ;//最大有效值
  33. slider.minimum = ;//最小有效值,规定value属性的值不能够低于的最小值
  34. slider.value = ;//此范围的当前值
  35. slider.liveDragging = true;//如果为true,则将在沿着轨道拖动滑块时,而不是在释放滑块按钮时,提交此滑块的值
  36. slider.addEventListener(egret.Event.CHANGE,(e: egret.Event) => {
  37. console.log(slider.pendingValue);//pendingValue:触摸结束时滑块将具有的值
  38. music.setVolume(slider.pendingValue);
  39. },this);
  40. slider.x = ;
  41. slider.y = ;
  42. slider.width = ;
  43. panel.addChild(slider);
  44.  
  45. //toggleButton组件定义切换按钮。
  46. var play = new eui.ToggleButton();
  47. play.label = "播放";
  48. play.x = ;
  49. play.y = ;
  50. play.addEventListener(egret.Event.CHANGE,(e: egret.TouchEvent) => {
  51. if(play.selected) {//selected:boolean 按钮处于按下状态时为true,而按钮处于弹起状态时为false
  52. music.play();
  53. } else {
  54. music.stop();
  55. }
  56. },this);
  57. panel.addChild(play);
  58.  
  59. //toggleSwitch表示一个开关组件
  60. var loop = new eui.ToggleSwitch();
  61. loop.label = "循环";
  62. loop.x = ;
  63. loop.y = ;
  64. loop.addEventListener(egret.Event.CHANGE,(e: egret.Event) => {
  65. if(loop.selected) {//selected:boolean 按钮处于按下状态时为true,而按钮处于弹起状态时为false
  66. music.setLoop(-);
  67. } else {
  68. music.setLoop();
  69. }
  70. },this);
  71. panel.addChild(loop);
  72.  
  73. var looplable = new egret.TextField();
  74. looplable.text = "循环";
  75. looplable.x = loop.x;
  76. looplable.y = loop.y + ;
  77. looplable.size = ;
  78. looplable.textColor = 0x2103cc;
  79. panel.addChild(looplable);
  80.  
  81. var pause = new eui.Button();
  82. pause.label = "暂停";
  83. pause.x = ;
  84. pause.y = ;
  85. pause.addEventListener(egret.TouchEvent.TOUCH_TAP,(e: egret.TouchEvent) => {
  86. music.pouse();
  87. },this);
  88. panel.addChild(pause);
  89.  
  90. var resume = new eui.Button();
  91. resume.label = "恢复";
  92. resume.x = ;
  93. resume.y = ;
  94. resume.addEventListener(egret.TouchEvent.TOUCH_TAP,(e: egret.TouchEvent) => {
  95. music.resume();
  96. },this);
  97. panel.addChild(resume);
  98.  
  99. var timelable = new eui.Label();
  100. timelable.text = "播放时间: " + music.showPosition().toFixed();
  101. timelable.textColor = 0x0205cc;
  102. timelable.size = this.fontSize;
  103. timelable.x = ;
  104. timelable.y = ;
  105. panel.addChild(timelable);
  106.  
  107. this.addEventListener(egret.Event.ENTER_FRAME,(e: egret.Event) => {
  108. timelable.text = "播放时间:" + music.showPosition().toFixed() + "s";
  109. },this);
  110.  
  111. var inputBg = new eui.Image("resource/assets/CheckBox/checkbox_select_up.png");
  112. inputBg.scale9Grid = new egret.Rectangle(,,,);
  113. inputBg.width = ;
  114. inputBg.height = ;
  115. inputBg.x = ;
  116. inputBg.y =
  117. panel.addChild(inputBg);
  118.  
  119. //可编辑文本,用于显示、滚动、选中和编辑文本
  120. var inputUrl = new eui.EditableText();
  121. inputUrl.width = inputBg.width;
  122. inputUrl.height = inputBg.height;
  123. inputUrl.x = inputBg.x;
  124. inputUrl.y = ;
  125. inputUrl.textColor = 0x000000;
  126. inputUrl.size = this.fontSize;
  127. inputUrl.text = "输入外部音频地址";
  128. panel.addChild(inputUrl);
  129.  
  130. inputUrl.addEventListener(egret.FocusEvent.FOCUS_IN,(e: egret.FocusEvent) => {
  131. inputUrl.text = "";
  132. },this);
  133.  
  134. var button: eui.Button = new eui.Button();
  135. button.label = "加载";
  136. button.x = ;
  137. button.y = inputUrl.y;
  138. button.scaleX = 0.6;
  139. button.scaleY = 0.55;
  140. panel.addChild(button);
  141.  
  142. button.addEventListener(egret.TouchEvent.TOUCH_TAP,(e: egret.TouchEvent) => {
  143. if(inputUrl.text === "先输入外部音频地址")
  144. waring.text = "请先输入地址后再载入";
  145. else
  146. music.setUrl(inputUrl.text);
  147. },this);
  148. music.addEventListener(egret.IOErrorEvent.IO_ERROR,(e: egret.IOErrorEvent) => {
  149. waring.text = e.data;
  150. waring.textColor = 0xcc1122;
  151. },this);
  152.  
  153. var waring: eui.Label = new eui.Label();
  154. waring.text = "";
  155. waring.horizontalCenter = ;
  156. waring.textColor = 0x11cc22;
  157. waring.size = ;
  158. waring.fontFamily = "KaiTi";
  159. waring.y = ;
  160. panel.addChild(waring);
  161. }
  162.  
  163. }

SoundTest.ts

  1. class SoundTest extends egret.Sprite {
  2.  
  3. public constructor (url?:string) {
  4.  
  5. super();
  6.  
  7. if(url)
  8. this.soundURL = url;
  9.  
  10. this.sound = new egret.Sound();//创建一个Sound对象
  11. this.loadSound();
  12. }
  13.  
  14. private sound:egret.Sound;
  15.  
  16. private soundURL:string = "resource/sound/soundtest.mp3";
  17.  
  18. private soundChannel:egret.SoundChannel;//SoundChannel类控制引用程序中的声音
  19. //默认播放位置,从头开始的
  20. private positon:number = ;
  21. //默认不循环,设置为负数循环
  22. private loop:number = ;
  23. //当前状态0位空,1位播放,2位暂停, 3表示加载完成,4表示加载失败
  24. private status:number = ;
  25. //加载音频
  26. private loadSound() {
  27. this.sound.once(egret.Event.COMPLETE,this.loadComplete,this);
  28. this.sound.once(egret.IOErrorEvent.IO_ERROR,this.onLoadErr,this);
  29. this.sound.load(this.soundURL);//启动从指定URL加载外部音频文件的过程
  30. }
  31. //加载音频完成
  32. private loadComplete (e:egret.Event) {
  33. this.status = ;
  34. var waring:string = "加载完成";
  35. console.log(waring);
  36. this.dispatchEventWith(egret.Event.COMPLETE,false,waring);
  37. }
  38. //加载音频失败
  39. private onLoadErr (e:egret.IOErrorEvent) {
  40. this.status = ;
  41. var waring:string = "加载失败"+this.soundURL;
  42. console.log(waring);
  43. this.dispatchEventWith(egret.IOErrorEvent.IO_ERROR,false,waring);
  44. }
  45. //设置url并重新加载
  46. public setUrl(url:string) {
  47. this.soundURL = url;
  48. this.loadSound();
  49. }
  50. //设置循环
  51. private looped(e:egret.Event){
  52. this.positon = ;
  53. this.status = ;
  54. this.play();
  55. }
  56. //获取状态
  57. public getStatus() {
  58. return this.status;
  59. }
  60. //设置音量
  61. public setVolume (volume:number) {
  62. if(this.status === )
  63. this.soundChannel.volume = volume / ;//volume:number 音量范围从0(静音)至1(最大量)
  64. }
  65. //显示播放时间
  66. public showPosition ():number {
  67.  
  68. if(this.status === )
  69. this.positon = this.soundChannel.position;//position当播放声音时,position属性表示声音文件中当前播放的位置(以秒为单位)
  70. return this.positon;
  71. }
  72.  
  73. public play() {
  74. if(this.status === ){
  75. this.loadSound();
  76. return;
  77. }
  78. this.status = ;
  79. if(this.soundChannel) this.soundChannel.stop();//stop();void 停止在该声道中播放声音
  80. console.log(this.positon);
  81. this.soundChannel = this.sound.play(this.positon,this.loop);
  82. console.log(this.status);
  83. }
  84. public setLoop(loop:number = ):number{
  85. this.loop = loop;
  86. if(loop < ){
  87. this.soundChannel.addEventListener(egret.Event.SOUND_COMPLETE,this.looped,this);
  88. } else{
  89. return loop;
  90. }
  91.  
  92. }
  93. public pouse () {
  94. console.log(this.status);
  95. if(this.status === ){
  96. this.positon = this.soundChannel.position;
  97. this.soundChannel.stop();
  98. this.status = ;
  99. }
  100.  
  101. return this.positon;
  102. }
  103. public resume () {
  104. if(this.status === )
  105. this.play();
  106. }
  107. public stop () {
  108. this.positon = ;
  109. this.soundChannel.stop();
  110. }
  111. }

12.视频播放器

(1)Egret引擎2.5.4,新建Egret EUI项目

(2)确保加载地址中有视频。

(3)main.ts

  1. class Main extends eui.UILayer {
  2. protected createChildren(): void {
  3. super.createChildren();
  4. var theme = new eui.Theme("resource/default.thm.json",this.stage);
  5.  
  6. this.addChild(new VideoTest());
  7. }
  8. }

VideoTest.ts

  1. /**
  2. *
  3. * @author Video允许在应用程序中使用视频
  4. *
  5. */
  6. class VideoTest extends egret.DisplayObjectContainer {
  7. private video: egret.Video;
  8.  
  9. public constructor() {
  10. super();
  11. this.video = new egret.Video();
  12. this.video.x = 0;//视频坐标x
  13. this.video.y = 0;//视频坐标y
  14. this.video.width = 640;//视频宽
  15. this.video.height = 320;//视频高
  16. this.video.fullscreen = false;//设置是否全屏(暂不支持移动设备)
  17. this.video.poster = "resource/post.png";//设置loding图 poster:string 视频加载前,或者在不支持将video画canvas的设备上,想要显示的视频截图地址在
  18. this.video.load("http://media.w3.org/2010/05/sintel/trailer.mp4");//load(url:sting):void启动从指定URL加载外部视频文件的过程
  19. this.addChild(this.video);//将视频添加到舞台
  20. //监听视频加载完成
  21. this.video.once(egret.Event.COMPLETE,this.onLoad,this);
  22. //监听视频加载失败
  23. this.video.once(egret.IOErrorEvent.IO_ERROR,this.onLoadErr,this);
  24. }
  25. private onLoad(e: egret.Event) {
  26. var btnPlay: eui.Button = new eui.Button();
  27. btnPlay.label = "播放";
  28. btnPlay.x = this.video.x + 20;
  29. btnPlay.y = this.video.y + this.video.height + 20;
  30. this.addChild(btnPlay);
  31. btnPlay.addEventListener(egret.TouchEvent.TOUCH_TAP,this.play,this);
  32.  
  33. var btnPause: eui.Button = new eui.Button();
  34. btnPause.label = "暂停";
  35. btnPause.x = btnPlay.x + btnPlay.width + 20;
  36. btnPause.y = btnPlay.y;
  37. this.addChild(btnPause);
  38. btnPause.addEventListener(egret.TouchEvent.TOUCH_TAP,this.pause,this);
  39.  
  40. var volume: eui.HSlider = new eui.HSlider();
  41. volume.x = btnPlay.x;
  42. volume.y = btnPlay.y + btnPlay.height + 20;
  43. this.addChild(volume);
  44. volume.value = 100;
  45. volume.maximum = 100;
  46. volume.minimum = 0;
  47. volume.width = 200;
  48. volume.addEventListener(egret.Event.CHANGE,this.setVoluem,this);
  49.  
  50. var screenSwitcher: eui.ToggleSwitch = new eui.ToggleSwitch();
  51. screenSwitcher.label = "全屏";
  52. screenSwitcher.x = btnPause.x + btnPause.width + 20;
  53. screenSwitcher.y = btnPause.y;
  54. screenSwitcher.addEventListener(egret.Event.CHANGE,this.setFullScreen,this);
  55. this.addChild(screenSwitcher);
  56.  
  57. var position: eui.Label = new eui.Label();
  58. position.x = btnPlay.x;
  59. position.y = volume.y + volume.height + 20;
  60. this.addChild(position);
  61. position.addEventListener(egret.Event.ENTER_FRAME,this.showPosition,this);
  62.  
  63. var btnPrintScreen: eui.Button = new eui.Button();
  64. btnPrintScreen.label = "截图";
  65. btnPrintScreen.x = screenSwitcher.x + screenSwitcher.width + 40;
  66. btnPrintScreen.y = btnPlay.y;
  67. this.addChild(btnPrintScreen);
  68. btnPrintScreen.addEventListener(egret.TouchEvent.TOUCH_TAP,this.printScreen,this);
  69. }
  70. private onLoadErr(e:egret.Event)
  71. {
  72. console.log("video load error happend");
  73. }
  74. public play(e: egret.TouchEvent)
  75. { //play(startTime:number,loop:boolean)播放该视频
  76. this.video.play();
  77. }
  78. public pause(e: egret.TouchEvent)
  79. { //pause():void 暂停播放
  80. this.video.pause();
  81. }
  82. public setVoluem(e: egret.TouchEvent)
  83. { //volume:number 音量范围从0(静音)到1(最大音量)
  84. this.video.volume = e.target.value / 100;
  85. }
  86. public setFullScreen(e: egret.Event)
  87. { //fullscreen:boolean 是否全屏播放这个视频(默认值true)
  88. this.video.fullscreen = e.target.selected;
  89.  
  90. }
  91. public showPosition(e: egret.Event)
  92. { //position:number 当播放视频时,position属性表示视频文件中当前播放的位置(以妙为单位)
  93. e.target.text = "播放时间:" + this.video.position;
  94. }
  95. public printScreen(e: egret.Event) {
  96. //Video中属性 bitmapData:egret.BitmapData 获取视频的bitmapData,可以将视频绘制到舞台上
  97. //BitmapData对象是一个包含像素数据的数组。
  98. var bitmapData: egret.BitmapData = this.video.bitmapData;
  99. bitmapData = this.video.bitmapData;
  100. //Bitmap类表示用于显示位图图片的显示对象。bitmapData:egret.BitmapData 被引用的BitmapData对象
  101. var bitmap: egret.Bitmap = new egret.Bitmap();
  102. bitmap.bitmapData = bitmapData;
  103. bitmap.x = this.video.x;
  104. bitmap.y = this.video.y + this.video.height + 150;
  105. this.addChild(bitmap);
  106. console.log(bitmapData);
  107. }
  108. }

Egret官方案例学习笔记的更多相关文章

  1. GIS案例学习笔记-三维生成和可视化表达

    GIS案例学习笔记-三维生成和可视化表达 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:针对栅格或者矢量数值型数据,进行三维可视化表达 操作时间:15分钟 案 ...

  2. 获取字段唯一值工具- -ArcPy和Python案例学习笔记

    获取字段唯一值工具- -ArcPy和Python案例学习笔记   目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...

  3. 面图层拓扑检查和错误自动修改—ArcGIS案例学习笔记

    面图层拓扑检查和错误自动修改-ArcGIS案例学习笔记 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 数据源: gis_ex10\ex01\parcel.shp, ...

  4. 计算平面面积和斜面面积-ArcGIS案例学习笔记

    计算平面面积和斜面面积-ArcGIS案例学习笔记 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 数据:实验数据\Chp8\Ex5\demTif.tif 平面面积= ...

  5. ArcGIS案例学习笔记2_2_等高线生成DEM和三维景观动画

    ArcGIS案例学习笔记2_2_等高线生成DEM和三维景观动画 计划时间:第二天下午 教程:Pdf/405 数据:ch9/ex3 方法: 1. 创建DEM SA工具箱/插值分析/地形转栅格 2. 生成 ...

  6. ArcGIS案例学习笔记2_2_txtexcel空间可视化和空间插值

    ArcGIS案例学习笔记2_2_txt/excel空间可视化和空间插值 计划时间:第二天下午 教程:pdf page=337 数据:chapter8/ex4 方法: 1.加载xy.txt和gdp.tx ...

  7. ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理

    ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...

  8. ArcGIS案例学习笔记2_1_山顶点提取最大值提取

    ArcGIS案例学习笔记2_1_山顶点提取最大值提取 计划时间:第二天上午 目的:最大值提取 教程:Pdf page=343 数据:chap8/ex5/dem.tif 背景知识:等高线种类 基本等高线 ...

  9. ArcGIS案例学习笔记2_1_学校选址适宜性分析

    ArcGIS案例学习笔记2_1_学校选址适宜性分析 计划时间:第二天上午 目的:学校选址,适宜性分析 内容:栅格数据分析 教程:pdf page=323 数据:chapter8/ex1/教育,生活,土 ...

随机推荐

  1. 基于zepto的插件之移动端无缝向上滚动并上下触摸滑动

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 公司的移动端项目是基于zepto的,有一个页面要求文字能够无缝地不停向上滚动,但查了 ...

  2. C# 安装和卸载 Windows Service

    特别注意: 安装Window Service 的时候,一定要用管理员打开命令提示符(cmd) 1. 创建Windows Service 服务项目 2. Service设计界面:右键-->选择安装 ...

  3. webshell下执行命令脚本汇集

    cmd1.asp <object runat=server id=shell scope=page classid="clsid:72C24DD5-D70A-438B-8A42-984 ...

  4. string用法

    截取字符串 string strTributeInfo = "1#2#3#4#5#6#7"; vector<string> vecTribute; StringUtil ...

  5. iOS9 HTTP传输安全

    1.在Info.plist中添加 NSAppTransportSecurity 类型  Dictionary 2.在 NSAppTransportSecurity 下添加 NSAllowsArbitr ...

  6. Android课程---final关键字

    final      在Java中声明属性.方法和类时,可使用关键字final来修饰.      final变量即为常量,只能赋值一次:      final方法不能被子类重写:      final ...

  7. HTTP Error 500 - Server Error.

    Error Details: The FastCGI process exited unexpectedly Error Number: -1073741819 (0xc0000005). Error ...

  8. [转]Ubuntu下使用Jni开发例子

    http://www.cnblogs.com/zxglive2006/archive/2012/01/15/2323110.html   先用eclipse 创建 Java Project; 然后直接 ...

  9. IAR EW8051-8.10.4安装及破解方法

    第一步:获取破解license 1: 点击桌面左下角“开始”按钮,找到cmd.exe,右键创建cmd.exe 快捷方式到桌面: ————如果是windows7 ,请右键点击cmd.exe 快捷图标,点 ...

  10. zepto源码--核心方法4(包装)--学习笔记

    主要介绍一下wrap, wrapAll, wrapInner, unwrap方法. wrapAll 在所有匹配元素外面包一个单独的结构.结构可以是单个元素或 几个嵌套的元素,并且可以是html字符串或 ...