2011-12-13 3 views
0

を変更した後、ムービークリップにベベルフィルタを追加するにはどうすればAS3 - 私はその色

var blue:ColorTransform = new ColorTransform(); 
blue.color = 0xFF00B8E7; 
MovieClip.transform.colorTransform = blue; 

とともに色を変更したとき、私はこれを追加

var myBevel:BevelFilter = new BevelFilter(); 
myBevel.type = BitmapFilterType.INNER; 
myBevel.distance = 3; 
myBevel.highlightColor = 0xFFFFFF; 
myBevel.shadowColor = 0x000000; 
myBevel.blurX = 5;  
myBevel.blurY = 5; 
MovieClip.filters = [myBevel]; 

結果は、色のみが変更されました。

私が変更した新しい色の上または上にこの斜めをどのように追加できますか?

私はどこからでも見て、私の問題には答えられませんでした。
私はあなたがここにいることを願って、私を助けることができます!
ベベルは、私はあなたが変換を適用する順番と

myBevel.highlightColor = 0xFFFFFF; 
myBevel.shadowColor = 0x000000; 

答えて

0

colorTransformは、すべての子やフィルタを含むムービークリップ全体に適用されます。あなたがドロップシャドウを試してみると、私の言いたいことが分かります。

メソッド#1: ベベルフィルタを使用して親オブジェクトを作成し、ムービークリップをcolorTransformでアタッチできます。

var parentObject:Sprite = new Sprite(); 
    addChild(parentObject); 

    var mc:Sprite = new Sprite(); 
    mc.graphics.beginFill(0xFFFF00); 
    mc.graphics.drawCircle(100,100, 100); 
    mc.graphics.endFill(); 

    var blue:ColorTransform = new ColorTransform(); 
    blue.color = 0xFF00B8; 

    var myBevel:BevelFilter = new BevelFilter(); 
    myBevel.type = BitmapFilterType.INNER; 
    myBevel.distance = 3; 
    myBevel.highlightColor = 0xFFFFFF; 
    myBevel.shadowColor = 0x000000; 
    myBevel.blurX = 5; 
    myBevel.blurY = 5; 

    parentObject.filters = [myBevel]; 
    parentObject.addChild(mc); 
    mc.transform.colorTransform = blue; 

方法#2: ベベルを処理するために、親オブジェクトを避けるために、私はあなたが探しているものを達成するためのAdjustColorで2 ColorMatrixFiltersを使用。 3つのフィルタ、1つはオブジェクトを白に、もう1つは必要な色に、もう1つは最後のベベルフィルタになります。 FlexまたはFlashDevelopのようなFlash以外のIDEを使用している場合は、fl.motion.AdjustColorパッケージの「Common/Configuration/ActionScript 3.0/libs/flash.swc」からライブラリにflash.swcをインクルードする必要があります。クラス。

var mc:Sprite = new Sprite(); 
    mc.graphics.beginFill(0xFF0000); 
    mc.graphics.drawCircle(100, 100, 100); 
    mc.graphics.endFill(); 
    addChild(mc); 

    // White out the entire shape first 
    var whiteAC:AdjustColor = new AdjustColor(); 
    whiteAC.brightness = 100; 
    whiteAC.contrast = 100; 
    whiteAC.saturation = -100; 
    whiteAC.hue = 0;    
    var whiteMatrix:Array = whiteAC.CalculateFinalFlatArray(); 
    var whiteCMF:ColorMatrixFilter = new ColorMatrixFilter(whiteMatrix); 

    // Now use ColorMatrixFilter to change color 
    var colorMatrix:Array = hexToMatrix(0x0000FF); 
    var colorCMF:ColorMatrixFilter = new ColorMatrixFilter(colorMatrix); 

    // Create bevel 
    var myBevel:BevelFilter = new BevelFilter(); 
    myBevel.type = BitmapFilterType.INNER; 
    myBevel.distance = 3; 
    myBevel.highlightColor = 0xFFFFFF; 
    myBevel.shadowColor = 0x000000; 
    myBevel.blurX = 5; 
    myBevel.blurY = 5; 

    mc.filters = [whiteCMF, colorCMF, myBevel]; 

    function hexToMatrix (hex:uint, alpha:Number = 1) 
    { 
     var r:Number = ((hex & 0xFF0000) >> 16); 
     var g:Number = ((hex & 0x00FF00) >> 8); 
     var b:Number = ((hex & 0x0000FF)); 

     var matrix:Array = []; 
     matrix = matrix.concat([r, 0, 0, 0, 0]); // red 
     matrix = matrix.concat([0, g, 0, 0, 0]); // green 
     matrix = matrix.concat([0, 0, b, 0, 0]); // blue 
     matrix = matrix.concat([0, 0, 0, alpha, 0]); // alpha 
     return matrix; 
    } 
+0

しかし、私はparentObjectを持っていません。私は色を変更し、斜角を追加するだけの1つの形(カスタム)です。 – bmbl87

+0

あなたが言ったように変更しようとしましたが、まだ動作しません。 – bmbl87

+0

私はちょうどあなたのコードでもエラーをキャッチしました。色は有効な色ではありません。最後のE7を取り除く。 0xFF00B8 :) –

0

実験指定され服用していない、私は変わっ新色としてすべての色を取ることのように思え:

...; 
myMovieClip.transform.colorTransform = blue; 
...; 
myMovieClip.filters = [myBevel]; 

をVS:

...; 
myMovieClip.filters = [myBevel]; 
...; 
myMovieClip.transform.colorTransform = blue; 

ベベルは、カラー変換で何をしていても、独自の塗りつぶしを提供している可能性があります。ベベルのshadowAlphahighlightAlphaのプロパティを試してみてください。それらを0.1に設定して、ムービークリップが青い影になっているかどうかを確認します。

+0

効果がありません。私はあなたが言ったことを行ったが、何も変わっていない。それはまだ黒の代わりに青、他のアイデアを取る? – bmbl87

関連する問題