2017-09-06 46 views
1

我將斜角濾鏡應用於MovieClip。後來在我的代碼中,當我嘗試更改過濾器屬性時,它似乎不起作用。無法修改MovieClip濾鏡屬性

這裏是我的代碼:

for (var i: int = 0; i < myMovieClip.filters.length; i++) { 
    if (myMovieClip.filters[i] is BevelFilter) { 
     trace("done"); 
     myMovieClip.filters[i].highlightColor = 0xFF0000; 
     myMovieClip.filters[i].shadowColor = 0x0000FF; 
     break; 
    } 
} 
+0

什麼你看到結果了嗎?它是否在'if'裏面?你看到「蹤跡」被輸出嗎? –

+0

是的,我得到的痕跡,但過濾器不會改變 –

回答

0

據土坯本指南:Graphic Effects Learning Guide for Flash: Filters

每個過濾器都有一套獨特的,以它的屬性。雖然 使用filters屬性獲取和設置篩選器會返回 重複的篩選器對象而不是參考,但篩選器可以被 訪問和修改,就像常規數組對象一樣。

// This will not work 
my_mc.filters[0].blurX = 20; 

由於前面的代碼片段返回濾鏡陣列的一個副本, 它修改副本。爲了修改blurX屬性, 需要使用下面的ActionScript代碼來代替:

// This will work 
var filterList:Array = my_mc.filters; 
filterList[0].blurX = 20; 
my_mc.filters = filterList; 

如此看來,你需要更改您的代碼是這樣的:

var filtersList:Array = myMovieClip.filters; 
for (var i: int = 0; i < filtersList.length; i++) { 
    if (filtersList[i] is BevelFilter) { 
    trace("done"); 
    filtersList[i].highlightColor = 0xFF0000; 
    filtersList[i].shadowColor = 0x0000FF; 
    myMovieClip.filters = filtersList; 
    break; 
    } 
}