最近应客户要求,一个面板需要可调整宽度,编码到是很简单,就是找不到合适的Resize的Cursor,所有就想想到DataGrid调整列宽度的时候不是会显示一个Resize光标吗,那么是不是可以和DataGrid用一样的Cursor呢,一查API,DataGrid里面用的是stretchCursor Style,而这个stretchCursor默认值是mx.skins.halo.DataGridStretchCursor,可是mx.skins.halo并没有这个所谓的DataGridStretchCursor,TNND,trace了下,竟然是[class _DataGridStyle__embed_css_Assets_swf_cursorStretch_1564262968],而Flex框架里面的Default.css的定义又是:

 

DataGrid
{
  stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
}

 

看样子是官方的文档有问题了,不过,这倒没关系,不能直接应用,绕下就是了,通过DataGrid获取就是了,下面是获取并设置Cursor的代码:

import mx.managers.CursorManager;
import mx.managers.CursorManagerPriority;
import mx.controls.DataGrid;
...
var dg:DataGrid=new DataGrid();
this.addChild(dg);
stretchCursorClass = dg.getStyle("stretchCursor");
this.removeChild(dg);
CursorManager.setCursor(stretchCursorClass,CursorManagerPriority.HIGH);

只所有要先addChild又removeChild,是因为只有将DataGrid添加到Disaplay中才会实例化stretchCursor。