2011-11-30 46 views
0

(Flash Professional,AS3)AS3 colorTransform over multiple frames?

我正在製作一個自定義頭像系統,您可以在其中選擇各種風格和顏色。例如,我有一個有10個髮型的「髮型」動畫片段。每個框架都有一個不同髮型的動畫片段(HairStyle1,HairStyle2等)。我也有一個colorPicker來改變顏色。

這裏是我的代碼:

var hairColor:ColorTransform; 
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform; 
hairColor.color = 0xCCCC00; 
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor; 

這正確地更改初始顏色。我有一個「nextHair」按鈕來將mc_myAvatar.hair推進到下一幀。當我點擊按鈕時,我收到一條錯誤消息,說我有一個空對象引用。我添加了一個跟蹤,並且mc_myAvatar.hair.colorLayer在第2幀上爲空。爲什麼?我已經明確在第2幀中將HairStyle2命名爲「colorLayer」。

我認爲問題與我使用相同名稱的不同類/動畫片段有關,但我不知道如何解決問題...

我在我的hairStyle movieclips下面添加了一個方形movieclip,將其命名爲「colorLevel」,並從我的hairStyle剪輯中刪除了該名稱。當我點擊下一個按鈕時,正方形可以正確地保持幀與幀之間的顏色。然而,有一個正方形對我沒有什麼好處。 :(

我試圖將hairStyle圖層轉換爲蒙版。但是,這樣做會導致另一個「空對象」錯誤 - mc_myAvatar.hair.colorLayer在第1幀後爲空。我甚至嘗試「跨越」我的colorLevel在所有框架(沒有關鍵幀),認爲這會給我只有一個movieclip工作,沒有運氣,同樣的錯誤!

這是怎麼回事爲什麼我得到這些空對象,當他們被明確定義在我的影片剪輯?

我也開到一個更好的方式做多幀和顏色方面的建議。

+0

我自己有這個問題。這可能是因爲你的框架沒有完全加載。幾秒鐘後你有沒有嘗試過打電話? – Frank

+0

是的!你是對的。這就是發生的事情。點擊「nextHair」按鈕後,我創建了一個新的按鈕和函數來強制colorTransform。現在,我該如何實現自動化?是否有幀加載/完成的eventListener? (我所有的剪​​輯都是內部的。)如果您想將其作爲答案,我會將其標記爲「已接受」。 – user359519

回答

1
function miClick(e:MouseEvent) { 
    content.gotoAndStop(e.currentTarget.parent.name); 

    if(e.currentTarget.parent.name == "2") { 
     content.addEventListener(Event.EXIT_FRAME, this.hdExitFrame); 
     productMenu.alpha = 1; 
     trace(content.products); 
    } else { 
     productMenu.alpha = 0; 
    } 
} 

function hdExitFrame(e:Event) { 
    trace(e.target.currentFrame + ", " + e.target.products); 
    content.removeEventListener(Event.EXIT_FRAME, this.hdExitFrame); 
} 

我測試過這個,content.products在miClick中爲null,但是在hdExitFrame中,它不是。希望這可以幫助。

+0

謝謝,弗蘭克!你搖滾! :) – user359519