佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1289|回复: 3

Flash AS 2.0的超级大bug

[复制链接]
发表于 16-9-2007 11:27 PM | 显示全部楼层 |阅读模式
Flash 的DataGrid存在着一个bug,那就是使用了鼠标点击事件(mouse Event)处理DataGrid的鼠标点击,再直接呼叫 ExternalInterface.call,例如 ExternalInterface.call("openwin", url)(通过javascript 打开一个窗口)或者弹出一个警告视窗,那么DataGrid就会发生失去焦点(lost focus)的事情。多次点击过后,整个flash就会死掉。然后cpu的使用率是99%。
目前使用的Style是(不知道是否与style有直接的关联)
                gridobj.setStyle("borderStyle", "alert");
                gridobj.setStyle("themeColor", 0x0083C1);
                gridobj.setStyle("fontFamily", "Verdana");
                gridobj.resizableColumns = true;
                gridobj.setStyle("backgroundColor", 0xD5D5FF);
                gridobj.setStyle("headerColor", 0xCCCCCC);
                gridobj.setStyle("hGridLines", true);
                gridobj.setStyle("headerTextColor", 0xFFFFFF);
                gridobj.setStyle("hGridLineColor", 0x507DA6);
                gridobj.setStyle("vGridLineColor", 0x507DA6);
                gridobj.setStyle("alternatingRowColors", [0xF9FFFD, 0xF2F2F2]);
                gridobj.setStyle("selectionColor", 0xB5B5B5);
                gridobj.setStyle("rollOverColor", 0xCFF5DC);
                gridobj.setStyle("fontSize",10);
不知道是否与这些style有关,虽然可以通过其他方法避免这个问题发生,然而无可否认的是这的确是一个严重的bug。
回复

使用道具 举报


ADVERTISEMENT

发表于 19-9-2007 11:17 PM | 显示全部楼层
沒什麼用component, 不過下次有機會用的時候會來看看, 謝啦

請問你是在cell中使用ExternalInterface嗎? 有加上Combobox? 還是直接點擊?
回复

使用道具 举报

 楼主| 发表于 21-9-2007 10:36 PM | 显示全部楼层
原帖由 super-tomato 于 19-9-2007 11:17 PM 发表
沒什麼用component, 不過下次有機會用的時候會來看看, 謝啦

請問你是在cell中使用ExternalInterface嗎? 有加上Combobox? 還是直接點擊?


Datagrid是没有内置的Combobox,除非有人要 render(中文好像称为渲染)格子的方法去做。

先是
1)gridobj.addEventListener("cellPress", scope);

接着
2)
public function cellPress(evtObj){
  var temp = new Array();
  temp[0] = evtObj;
  onClick.apply(this,temp);
}

3)过后就

public function onClick(){ //制造鼠标双击事件
  //trace (arguments.length);
  var dt = new Date();
  var now:Number = dt.getTime();
  
  if ((now - mouseEvent.keyDownobj.clickInterval)<1000){
   //trace ("interval smaller 1000";
   if (mouseEvent.keyDownobj.itemIndex != arguments[0].itemIndex){
                mouseEvent.keyDownobj.itemIndex = -1;     
    return;
   }
   var temp = new Array();
   temp.push(arguments[0]);
   for (var i:Number=0;i<mouseEvent.keyDownobj.arg.length;i++){
    temp.push (mouseEvent.keyDownobj.arg);
   }
   mouseEvent.keyDownobj.scope[mouseEvent.keyDownobj.cbkstr].apply(null,temp);
            mouseEvent.keyDownobj.clickInterval = now - 1000;
            mouseEvent.keyDownobj.itemIndex = -1;   
   return;
  }
  else{
   //trace ("interval greater 1000";
            mouseEvent.keyDownobj.itemIndex = arguments[0].itemIndex;
      mouseEvent.keyDownobj.clickInterval = now;   
  }
}

4)双击事件后马上执行 ExternalInterface.call("openwin", url)(openwin是在浏览器里打开视窗的Javascript程序function).Datagrid在其点击的Effect执行完毕前突然间失去失焦(Lostfocus),结果datagrid将会不收控制的根据鼠标往上或往下移动,例如鼠标移动到datagrid上端的时候Datagrid的scroll将会不断的往上移动。
5)多点几次,浏览器因为系统资源严重消耗,连同flash一起进入无响应状态。如果观察CPU的使用率,那是99~100%;
回复

使用道具 举报

 楼主| 发表于 12-10-2007 01:32 AM | 显示全部楼层
最新发现,这个bug 只会出现在IE 那里. 只要按在IE里对任何datagrid的cell,作 press 动作, 不要放,拖到外面brower外放开,再回去,那么datagrid 的scroll就会不受控制的根据鼠标乱动.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 10-10-2025 07:14 AM , Processed in 0.113067 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表