0

Pixel Bender を勉強しています。トゥイーンしたいパラメーターのフィルターがあります。私の知る限り、ピクセル ベンダー パラメーターをトゥイーンするには、数値オブジェクトをトゥイーンし、トゥイーン数値オブジェクトをシェーダー データの配列値として割り当てる必要があります。

私は次のように動作すると確信していましたが、Number クラスには値プロパティがないようです。そのため、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];
    }
4

1 に答える 1

3

おそらく、トゥイーン用のゲッターとセッターをテスト クラスに追加できます。

//...
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);
//...
于 2010-03-04T11:29:31.010 に答える