2011-03-30 37 views
0

我有這個在運行時加載的movieclip叫做cHolder。我首先應用色彩,當它是鼠標時,不會有色調。我如何應用補間來使色調的變化顯得更加漸進?謝謝!AS3補間色調變化

 var imageLoader = new Loader(); 
     imageLoader.load(new URLRequest(projectDP));   
     var origColor: Color = new Color(); 
     origColor.setTint(0x000000, 0.8); 
     cv.cHolder.transform.colorTransform = origColor; 
     cv.cHolder.addChild(imageLoader); 
     this.addChild(cv); 


     cv.cHolder.addEventListener(MouseEvent.MOUSE_OVER, onRoll); 
     cv.cHolder.addEventListener(MouseEvent.MOUSE_OUT, onOut); 
      function onRoll(e:Event):void 
     { 
      origColor.setTint(0, 0); 
      e.currentTarget.transform.colorTransform = origColor; 
     }   

      function onOut(e:Event):void 
     { 

      origColor.setTint(0x000000, 0.8); 
      e.currentTarget.transform.colorTransform = origColor; 
     } 

回答

3

我推薦使用補間引擎。你可以使用Flash Tween,但我更喜歡使用任何可用的引擎,例如TweenMax

補間色調,你會做這樣的事情:

import com.greensock.*; 
import com.greensock.plugins.*; 
TweenPlugin.activate([TintPlugin]); 

var color:uint = 0x0; 
var imageLoader = new Loader(); 
    imageLoader.load(new URLRequest(projectDP));   
    var origColor: Color = new Color(); 
    origColor.setTint(0x000000, 0.8); 
    cv.cHolder.transform.colorTransform = origColor; 
    cv.cHolder.addChild(imageLoader); 
    this.addChild(cv); 


    cv.cHolder.addEventListener(MouseEvent.MOUSE_OVER, onRoll); 
    cv.cHolder.addEventListener(MouseEvent.MOUSE_OUT, onOut); 
     function onRoll(e:Event):void 
    { 
     //origColor.setTint(0, 0); 
     //e.currentTarget.transform.colorTransform = origColor; 
     TweenLite.to(e.currentTarget, 1, {tint:null}); 
    }   

     function onOut(e:Event):void 
    { 

     //origColor.setTint(0x000000, 0.8); 
     //e.currentTarget.transform.colorTransform = origColor; 
     TweenLite.to(e.currentTarget, 1, {tint:0x000000});   
    } 
+0

+1使用GreenSock是一個夢幻般的補間動畫引擎 – Chris 2011-03-30 09:37:15

+0

感謝goliatone!我使用TweenLite的TintPlugin和ColorTransformPlugin。 – LeonBrain 2011-03-31 06:43:58