今天刚接触下flex,满是好奇,正好项目上需要, 顺便学习了下。当时我遇到的一个问题是flash在firefox上运行正常,但是在IE7和Safari上运行则会出现显示不正常的问题,比如我当时遇到的情况是将某条记录assign给某个人,然后这个记录应该在表格中消失(要求不要刷新页面),但实际上它并没有马上去掉,而是要重新加载这个flash的时候,这条记录才会消失不见。后来逐步跟踪才发现是因为在flex调用删除方法时,异步执行了刷新列表的方法,因为此时记录尚未删除, 导致刷新列表的方法没有起到作用。也就说要让执行‘刷新列表’的方法后才继续向下执行。 怎么才能执行这样的方法呢? 我查了相关资料,AS3.0中网络通信是通过URLLoader和URLRequest来加载外部文件, 需要三个过程来实现:
1、使用URLRequest创建通信请求对象。
2、使用通信请求对象,创建URLLoader载入对象,并发出请求的要求。
3、监听URLLoader对象,在响应完成事件后,返回要处理的数据。
因此这里把原来调用刷新列表的方法放到“删除方法”响应完成事件之后,再进行调用,这样就会避免因为删除方法还没有执行完,就执行了刷新的方法。具体的修改如下:
var csrListRequest:URLRequest = new URLRequest();
csrListRequest.method="GET";
csrListRequest.url = domain;// domain is the delete request url.
var csrListLoader:URLLoader = new URLLoader();
csrListLoader.addEventListener(Event.COMPLETE, function(e:Event):void
{
// invoke refresh functions.
});
csrListLoader.load(csrListRequest);
参考资料:
http://edu.docin.com/product-1546330.html;