粗略演示
这是代码
function ringhtClickMenu(container, window) {
if (container.orientation === stack) {
window.addEventListener(blur, function (event) {
window.hide();
});
container.addEventListener(mouseup, function (event) {
if (event.button === 2 && event.detail === 1) {
window.frameLocation = [event.screenX, event.screenY];
window.show();
}
});
} else if (container.orientation === row || undefined) {
container.orientation = stack;
ringhtClickMenu(container, window);
} else {
return alert(已设置orientation,请单独打组,再把orientation设置为stack, + \n + 再监听组.);
}
}
function myMenu() {
var $win = new Window(palette, undefined, undefined, { borderless: true });
var button1 = $win.add(button, undefined, 1);
var button2 = $win.add(button, undefined, 2);
var button3 = $win.add(button, undefined, 3);
var button4 = $win.add(button, undefined, 4);
button1.onClick = function () {
$win.hide();
alert(1);
};
button2.onClick = function () {
$win.hide();
alert(2);
};
button3.onClick = function () {
$win.hide();
alert(3);
};
button4.onClick = function () {
$win.hide();
alert(4);
};
return $win;
}
var win = new Window(palette);
var group = win.add(group);
group.size = [360, 240];
group.graphics.backgroundColor = group.graphics.newBrush(group.graphics.BrushType.SOLID_COLOR, [1, 0, 1]);
ringhtClickMenu(group, myMenu());
win.show();
想问下orientation设置为stack是为什么?如果不是stack会出现什么问题吗
因为是2个window,如果不设置成stack,那么新window会出现在旧window的下面,设置成stack,那么新window会出现在旧window的上面,但是本身是2个window,有遮挡关系,所以加一个失焦事件,点了别处就会消失,来解决遮挡关系
更正一下,两者可能并无直接关系,是我当时监听的组控件,不设置成stack,会不出现在上面,是我个人遇到的问题,让我主管认为要设置成stack,如果是监听普通的控件,可以把设置成stack的代码给删了