2017-09-06 13 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' 내부에 들어갈 수 있습니까? 'trace '가 출력되는 것을 보시겠습니까? –

+0

예 추적을 얻지 만 필터가 변경되지 않습니다. –

답변

0

:

여기 내 코드입니다 Graphic Effects Learning Guide for Flash: Filters

각 필터는 고유 특성의 집합이 있습니다. filters 속성을 사용하여 필터를 가져오고 설정하더라도 참조 대신 필터 개체가 중복되어 이 반환되지만 필터는 일반 배열 개체와 마찬가지로 액세스되고 수정 될 수 있습니다 ( ).

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

이전 코드는 필터 배열의 복사본을 반환하기 때문에, 는 중복을 수정합니다. 대신에 다음 ActionScript 코드를 사용하도록에는 blurX 속성이 필요 수정하려면 :

// 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; 
    } 
}