2014-02-07 29 views
1

我知道我可以用手在Flash應用顏色過濾,然後將其複製到其他影片剪輯動態,就像這樣:獲取/比較閃光的彩色濾光片動態

newMovieClip.filters = oldMovieClip.filters; 

我喜歡現在做的能夠檢查兩個動畫片段是否具有相同的過濾器。
事情是這樣的:

if (newerMovieClip.filters == oldMovieClip.filters) 

...這永遠是假,即使兩個具有相同的過濾器。我知道如果我使用colorTransform,我可以使這個工作,但我不能在這種情況下。圖形具有線條和陰影,這些線條和陰影都可以改變顏色,並且亮度/色調/對比度都很重要,因此濾鏡是關鍵。 (我在做什麼:在用戶通過從我製作的調色板中選擇一個過濾的按鈕來「着色」的菜單中有服裝項目,當他們點擊該項目並且它尚未在該顏色的頭像上時,我如果它已經在頭像和相同的顏色,我希望它脫落...因此過濾器檢查)

回答

0

編輯:我看到現在,你只是處理與一個彩色濾光片。啊。我明白現在要做什麼。

如果這是每個Movieclip上唯一的過濾器,這可以使事情變得更容易一些。

在這種情況下,我們可以通過moiveclip.filters獲取每個影片剪輯的每一個的ColorMatrixFilter [0]

則:

function compareColorFilters(a:ColorMatrixFilter, b:ColorMatrixFilter) : Boolean 
{ 
    var length:uint = (a.matrix.length > b.matrix.length)?a.matrix.length:b.matrix.length; 
    for(var i:uint = 0; i < length; ++i) 
    { 
     if(a.matrix[i] != b.matrix[i]) { return false; } 
    } 
return true; 
} 

然後進行比較的影片剪輯將

if(compareColorFilters(ColorMatrixFilter(oldClip.filters[0]), ColorMatrixFilter(newClip.filters[0])) { 
     //do stuff 
} 

由於你可以看到你從每個moveiClip獲得每個ColorMatrixFilters。然後比較矩陣(這只是一個數組)元素。如果矩陣相同......顏色,亮度和色調也完全相同。如果因此而感到困惑,請發表評論。

希望這會有所幫助!

-Travis

+0

謝謝特拉維斯!所有我比較的東西都有一個濾色器,所以是的,我需要更具體。我想比較確切的色調/亮度/對比度/飽和度值,並確定它們是相同還是略有不同。你能詳細說明最後一點嗎?什麼是設置名稱字段? –

+0

好吧,當我第一次打字時,我會很快讀到答案。我更新了我的答案,可以幫助你! – Travis

+0

OMIGOSH它工作!我特此聲明你是一位天才!只是一個編輯,我不得不將「空白」改回原來的「布爾」〜謝謝!這將使我的生活在未來的所有項目中變得更加輕鬆! –