在Flex中,我试图设计类似于在 http://www.freeimagehosting.net/uploads/f14d58b49e.jpg如何管理鼠标点击不规则的按钮形状Flex中
鼠标在上传的图片3个按键/点击图片应该只在红色区域合作的按钮。 如何管理Flex中的鼠标点击或不规则按钮形状?
日Thnx ...阿图尔
在Flex中,我试图设计类似于在 http://www.freeimagehosting.net/uploads/f14d58b49e.jpg如何管理鼠标点击不规则的按钮形状Flex中
鼠标在上传的图片3个按键/点击图片应该只在红色区域合作的按钮。 如何管理Flex中的鼠标点击或不规则按钮形状?
日Thnx ...阿图尔
检查了这一点:flexlib>图像映射。
从基于矢量图形(例如,一个在Illustrator制造)stackOverflow
使用按钮外观两者,每个状态保存为文档中的命名为符号,然后导出为SWF。参考皮肤如下:
.stepButton {
upSkin: Embed(source="myfile.swf", symbol="StepButton");
downSkin: Embed(source="myfile.swf", symbol="StepButtonDown");
overSkin: Embed(source="myfile.swf", symbol="StepButtonOver");
disabledSkin: Embed(source="myfile.swf", symbol="StepButtonDisabled");
}
Flash将自动确定从可见部分的命中区域。这个例子(不叫“myfile.swf”)现在在我们的应用程序中工作。
创建3种儿童类也从画布继承创建ArrowButtonsHolder类。例如LeftArrowButton,MiddleArrowButton,RightArrowButton
公共类LeftArrowButton:帆布{ 保护覆盖功能的updateDisplayList(参数unscaledWidth:数字,unscaledHeight属性:编号):无效 { super.updateDisplayList(参数unscaledWidth,unscaledHeight属性);
// draw your arrow here
// use graphics to do it
graphics.beginFill(0xFF0000);
graphics.lineStyle(1, 0x000000);
graphics.moveTo(0, 0);
graphics.lineTo(30, 0);
graphics.lineTo(50, 25);
graphics.lineTo(30, 50);
graphics.lineTo(0, 50);
graphics.lineTo(0, 0);
graphics.endFill();
}
}
你还可以创建通用类arrowButton之上,并继承另3从类和重写绘图功能
通过覆盖createChildren()添加这个3子按钮对象ArrowButtonsHolder:无效方法
public class ArrowButtonsHolder:Canvas {
// ...
private var leftArrowButton:LeftArrowButton;
private var middleArrowButton:MiddleArrowButton;
private var rightArrowButton:RightArrowButton;
// ...
protected override function createChildren():void {
super();
// create buttons
leftArrowButton = new LeftArrowButton();
middleArrowButton = new LeftArrowButton();
rightArrowButton = new LeftArrowButton();
// add them to canvas
addChild(leftArrowButton);
addChild(middleArrowButton);
addChild(rightArrowButton);
// position these button by adjusting x, y
leftArrowButton.x = 0;
middleArrowButton.x = 50;
rightArrowButton.x = 100;
// assign event listeners
leftArrowButton.addEventListener(MouseEvent.CLICK, onLeftArrowButtonClick);
middleArrowButton.addEventListener(MouseEvent.CLICK, onMiddleArrowButtonClick);
rightArrowButton.addEventListener(MouseEvent.CLICK, onRightArrowButtonClick);
}
private onLeftArrowButtonClick(event:MouseEvent):void
{
trace("Left button clicked");
}
// .. etc for another 2 methods implemented here
}
PS:在我的代码中可能会出现大量的语法错误,但是您应该总体了解如何去做
谢谢!它有帮助 – Atul 2010-03-01 20:56:07