2011-03-14 33 views
0

我知道在as3中不可能重載運算符,並且一直使用get和set功能(這是輝煌的imho),但現在我正在創建一個顏色類。as3變通辦法中的運算符過載

我想要做的是一個顏色類,然後子類型rgb,hsl,hsv等......我的問題是當我做這些變量時我該如何做到這一點,所以當我讀到他們的價值時顯示爲uint?

例如我想能夠做到這一點。

var myRGBcolour:RGB = new RGB(14,21,42); 
someSprite.graphics.beginFill(myRGBcolour);  //for those of you who don't know, 
               //this function expects a uint 

我該如何做到這一點? 我之前讀過關於函數的價值,但是從我所能理解的內容來看,只有在你說了類似myRGBcolour.valueOf()之類的東西時,纔會使用它,但是這樣會打敗整個目的,所以我不妨做一個myRGBcolour.toUint()函數。

提前致謝。

+0

使用,因此你想通過你的類作爲一個參數,並自動成爲一個uint?也請解釋一下,創建和使用toUint函數的缺點是什麼? – 2011-03-14 19:53:11

+0

我同意EyeSeeEm--爲什麼要調用顏色類的方法來打敗整個目的? – redhotvengeance 2011-03-14 20:05:05

+0

對不起,我的問題並不清楚,我只是覺得可能有比使用getter函數更簡單的方法。我想那裏沒有一個。感謝大家的幫助。歡呼聲 – vvMINOvv 2011-03-14 20:41:25

回答

2

你可以嘗試覆蓋的valueOf並提出具體的投:

someSprite.graphics.beginFill(0+myRGBcolour); // 0+ is similar to 0x 

或者如果你喜歡:

someSprite.graphics.beginFill(myRGBcolour+0); 

這種結構在Fingers

+0

美麗!謝謝@Kasztan – vvMINOvv 2011-11-08 17:39:11

+0

順便說一句:我寫了一篇關於AS3中的運算符重載的文章:http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/ – Kasztan 2012-01-24 18:31:08

+0

謝謝,但這似乎是你的「新O()+ 0」;「在結束anwyays ...大聲笑 – vvMINOvv 2012-01-24 18:33:50

2

beginFill()需要一個uint,所以你必須給它一個。我認爲有一個toUint方法聽起來像是最好的計劃,或者擁有一個get屬性。