2004/11/16 | [教程]为V2组件(list\tree\datagrid)增加双击事件
类别(我闪推荐) | 评论(7) | 阅读(343) | 发表于 08:06
看到老外的一篇教程,还不错。推荐给大家,自己也做个记号。首先在第一桢输入:

// Double-Click Hack for List-based components
// Nov. 15, 2004 - Darron Schall
// create quick reference to ScrollSelectList's prototype

var sslp = _global.mx.controls.listclasses.ScrollSelectList.prototype;
// only run this code once.., make sure that $oldOnRowPress is not
// defined to avoid inifinite recursion when onRowPress is called

if (!sslp.$oldOnRowPress) {
sslp.DOUBLE_CLICK_INTERVAL = 300;
// in milliseconds, how close two clicks must
// be received to register as a double click
// save a reference to the onRowPress function since we need to overwrite it to add
// functionality, and we don't want to lose the original.

sslp.$oldOnRowPress = sslp.onRowPress;
// add doubleClick event to the ScrollSelectList class
sslp.onRowPress = function(rowIndex) {
// if the user pressed the samw row within the time limit, fire off
if (getTimer()-this.lastPressedTime<this.DOUBLE_CLICK_INTERVAL && this.lastPressedRow == rowIndex) {
this.dispatchEvent({target:this, type:"doubleClick", row:rowIndex});
} else {
// not a double click - record their click time and the row selected to prepare
// for double click
// only allow double clicks under the proper conditions

if (this.enabled && this.selectable) {
this.lastPressedTime = getTimer();
this.lastPressedRow = rowIndex;
} else {
// not really necessary, but just in case.. make sure
// doubleClick doesn't accidentally fire

this.lastPressedTime = 0;
this.lastPressedRow = -1;
}
// invoke the old method that we just overwrote - using apply to get the scope correct
this.$oldOnRowPress.apply(this, [rowIndex]);
}
};
}
delete sslp;

拖入List组件,命名为“list”

// drag v2 list component onto stage and name it "list"
// place above code on frame 1 followed by below code:

list.dataProvider = [{label:"test"},{label:"test2"},{label:"test3"}];
list.addEventListener("doubleClick", mx.utils.Delegate.create(this, onItemSelected));
function onItemSelected(eventObj) {
  // do something with the selected item
  trace("double click");
}

这样就OK了,继承list类的list\tree\datagrid组件均可实现双击~ ^-^

[From darron schall] 原文:http://www.darronschall.com/weblog/archives/000135.cfm

0

评论Comments