2010-03-04 22 views
0

我正在學習Pixel Bender。我有一個過濾器誰是參數我想補間。據我所知,爲了調出像素彎曲參數,我需要補間一個數字對象,並將補間數字對象指定爲着色器數據的數組值。補間動畫Pixel Bender過濾器使用數字值與Actionscript 3.0中的基本吐溫類

我相信下面的工作,但似乎Number類不具有價值的財產,所以我不知道該用什麼屬性設置彌補數量對象一個新補的時候:

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

沒有問題,但你可以聲明tweenNumber爲'var tweenNumber:Number = 0.0;' – Patrick 2010-03-04 11:24:41

回答

3

也許你可以添加你補間一個getter和setter到您的測試類:

//... 
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); 
//... 

- 或做更新到您的二傳手

//... 
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

哦,我明白了。我錯誤地寫了吐溫參數。吐溫(這,「tweenNumber」,...)工作正常。謝謝。 – TheDarkIn1978 2010-03-04 12:09:56