2017-09-06 6 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

何あなたは見ますか?それは 'もし'の中に入るのだろうか? 'trace 'が出力されていますか? –

+0

はいトレースは取得されますが、フィルタは変更されません –

答えて

0

は、ここに私のコードですGraphic Effects Learning Guide for Flash: Filters

各フィルタはそれに固有のプロパティのセットを持っています。 filtersプロパティを使用してフィルタを取得および設定すると、参照の代わりに フィルタオブジェクトの複製が返されますが、フィルタは通常の配列オブジェクトと同様にアクセスされ、変更されます。

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

前のコードスニペットは、filters配列のコピーを返すので それは、重複を変更します。 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; 
    } 
} 
関連する問題