2010-03-04 5 views
0

J'étudie Pixel Bender. J'ai un filtre qui est le paramètre que je veux tween. pour autant que je sache, pour interpoler un paramètre de pixel bender, j'ai besoin d'interpoler un objet numérique et d'affecter l'objet numérique interpolation comme valeur de tableau pour les données de shader.Filtre Tweening Pixel Bender utilisant la valeur numérique avec la classe Tween basique dans Actionscript 3.0

je suis convaincu que ce qui suit fonctionnerait, mais il semble que la classe Number ne dispose pas d'une propriété de valeur, donc je ne sais pas ce que la propriété à utiliser lors de la mise en place d'une nouvelle interpolation de l'objet Numéro:

import fl.transitions.*; 
import fl.transitions.easing.* 

var shader:Shader; 
var shaderFilter:ShaderFilter; 
var motionTween:Tween; 
var tweenNumber:Number = new Number(0.0); 
var loader:URLLoader = new URLLoader(); 

loader.dataFormat = URLLoaderDataFormat.BINARY; 
loader.addEventListener(Event.COMPLETE, dataLoaded); 
loader.load(new URLRequest("PBFilter.pbj")); 

function dataLoaded(e:Event):void 
    { 
    loader.removeEventListener(Event.COMPLETE, dataLoaded); 
    shader = new Shader(e.target.data); 
    shaderFilter = new ShaderFilter(shader); 
    flower.filters = [shaderFilter]; 

    motionTween = new Tween(tweenNumber, "value", Bounce.easeOut, 0.0, 100.0, 5, true); 
    motionTween.addEventListener(TweenEvent.MOTION_CHANGE, updateFilter); 
    } 

function updateFilter(e:TweenEvent):void 
    { 
    shader.data.amount.value = [tweenNumber]; 
    myMovieClip.filters = [shaderFilter]; 
    } 
+0

Rien à faire avec la question, mais vous pouvez déclarer tweenNumber comme 'var tweenNumber: Number = 0.0;' – Patrick

Répondre

3

peut-être que vous pouvez ajouter un getter et setter pour votre tweening dans votre classe de test:

//... 
public function get amount():Number { 
return tweenNumber; 
} 
public function set amount(value:Number):void { 
tweenNumber=value; 
} 
//... 
motionTween = new Tween(this, "amount", Bounce.easeOut, 0.0, 100.0, 5, true); 
motionTween.addEventListener(TweenEvent.MOTION_CHANGE, updateFilter); 
//... 

- ou faire la mise à jour dans votre setter

//... 
public function get amount():Number { 
return tweenNumber; 
} 
public function set amount(value:Number):void { 
tweenNumber=value; 
shader.data.amount.value = [value]; 
myMovieClip.filters = [shaderFilter]; 
} 
//... 
motionTween = new Tween(this, "amount", Bounce.easeOut, 0.0, 100.0, 5, true); 
//... 
+0

oh je vois. j'écrivais les arguments tween incorrectement. Tween (ceci, "tweenNumber", ...) fonctionne bien. Merci. – TheDarkIn1978

Questions connexes