2011-03-30 43 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