2011-03-19 49 views
2

我使用flash as3。下一個點的顏色或形狀

我有一些形狀,我畫在屏幕上。他們使用:

graphics.beginFill(0x00ff00); 
graphics.drawRect(0,0,50,50); 
graphics.endFill(); 

繪製它們。每種形狀都有不同的顏色以獲得樂趣(不同的beginFill)。

我如何在鼠標指針下方移動鼠標時獲得形狀的顏色?

我看到兩個選擇,到目前爲止,但不知道怎麼做他們任:鼠標點 下
獲得色彩得到的形狀屬性的顏色(首選)

我不知道如何做任何這些...任何提示?

回答

2

S1 =影片剪輯的實例名牽着你的第一個形狀
S2 =影片剪輯持有的實例名您第二形狀
S3 =的movieclip保持你的第三形狀

(必須是不同的movieclip)

等等的實例名...

所以你需要改變這些值。

如果您需要任何解釋剛落評論,我會幫你

否則,你可以簡單地複製/粘貼此代碼:

 
import flash.events.MouseEvent; 
import flash.display.Bitmap; 
import flash.display.BitmapData;

var myColor:String;

s1.addEventListener(MouseEvent.MOUSE_OVER, storeColor1); s2.addEventListener(MouseEvent.MOUSE_OVER, storeColor2); s3.addEventListener(MouseEvent.MOUSE_OVER, storeColor3);

function storeColor1(e:MouseEvent):void { var BmD:BitmapData = new BitmapData(s1.width, s1.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s1); s1.addChild(Bm); myColor = BmD.getPixel(s1.mouseX,s1.mouseY).toString(16);

while(myColor.length < 6) 
{ 
    myColor = "0" + myColor; 
} 

trace(myColor);} 

功能storeColor2(E:的MouseEvent):無效 { var BmD:BitmapData = new BitmapData(s2.width,s2.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s2); s2.addChild(Bm); myColor = BmD.getPixel(s2.mouseX,s2.mouseY).toString(16);

while(myColor.length < 6) 
{ 
    myColor = "0" + myColor; 
} 

trace(myColor);} 

功能storeColor3(E:MouseEvent)方法:無效 { VAR BMD:的BitmapData =新的BitmapData(s3.width,s3.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s3); s3.addChild(Bm); myColor = BmD.getPixel(s3.mouseX,s3.mouseY)。的toString(16);

while(myColor.length < 6) { myColor = "0" + myColor; } trace(myColor);}

順便說一句,這僅僅是一些代碼,我在5分鐘內寫給你它是如何工作的想法。這根本不是優化的代碼。

+0

對於任何閱讀此內容的人來說,它比問題所需要的更復雜,但您可以從位圖數據部分找出解決方案。謝謝Zrean – David19801 2011-03-20 12:55:08

+1

一個簡單的問題得到一個簡單的答案。如果你發佈了一個更復雜的代碼,我會修改代碼的答案。但目前的代碼適用於上面發佈的問題。 – SimplyZ 2011-03-20 18:24:44

0

您可以獲得您所在地區的BitmapData,然後使用getPixel方法,該方法將返回該像素的顏色。

1

最簡單的方法是創建自己的類,這樣可以將顏色(甚至是隨機的)保存在變量中,並處理不同的鼠標事件(使用圖形需要從MovieClip擴展)。類,或者,而不是處理鼠標itslef,當鼠標懸停在你的精靈上時發送你自己的事件。

另一種方法是將你的矩形繪製成位圖對象,然後通過鼠標位置獲取像素顏色。

也許你可以給你想要達到什麼樣的更多詳細資料(也許你想避免使用類)

+0

+1 @Nebu創建一個擴展Sprite的類。有一個存儲隨機顏色的變量。有一個使用隨機顏色繪製矩形的drawRectangle方法。爲鼠標懸停的事件創建一個偵聽器addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler),;在mouseOverHandler中,將形狀顏色作爲參數dispatchEvent(new ShapeOverEvent(ShapeOverEvent.OVER,myColour))派發一個自定義事件;偵聽ShapeOverEvent。在父母的OVER。 – 2011-03-19 17:25:04

相關問題