egret牧场小游戏遇到的坑

技术总结:

针对向后端发送请求->后端给予响应->获取后端返回的数据(一般都是json格式的字符串或数组),数据在应用ajax或http请求,都会及时的返回数据,但是可能会需要将数据对应的显示对象及时显示到显示列表中。尝试过N种方式,最后找到了!!! 

重点:需要准确的找到显示对象的位置,也就是说他在由哪个类管理的显示列表中。在那个类中写一个助手类(1.用来执行删除显示列表(也可以就是:当前类)的所有对象,2.删除后再创建一个当前类(用于重新渲染数据,总不能删除所有显示对象后,不显示任何对象了吧~)【这样,数据对应的显示对象就能成功渲染到显示列表(当前类)上了】)

例如:

这个类是index.html指定的主类

class Main extends egret.DisplayObjectContainer {

public constructor(){

super();

this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddStage,this);

}

private onAddStage(){

var a:Animal = new Animal();

this.addChild(a);

}

}

数据对应显示对象所在的类:

class Animal extends egret.DisplayObjectContainer {

public constructor(){

super();

this.onAddStage();

}

private onAddStage(){

var group:egret.Sprite = new egret.Sprite();

this.addChild(group);

var bit:egret.Bitmap = new egret.Bitmap();

//animal_png是我资源组中的图片

bit.texture = RES.getRes(''animal_png");

group.addChild(bit);

//将group资源组当做事件发送者

group.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.Handler,this);

}

//重点(数据重新渲染的地方)

private Handler(){

this.removeChildren();//先从显示列表中删除此所有显示对象

var a:Animal = new  Animal();//正常这个类就是进行数据通讯的,为了写着简便,数据通讯的地方就没写出来......

this.addChild(a);

}

}

 

你可能感兴趣的:(egret)