在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