2012-01-17 9 views
0

私はthis tutorialからこのスクリプトを手に入れました。私はそれをAS2からAS3に変換しようとしましたが、変位フィルタは何らかの理由で一度しか適用されないようです。その後、ビットマップは...なぜこのperlinnoise変位フィルタは更新されないのですか?

var myBitmap:BitmapData = new BitmapData(1000,600,false,0); 
    var pt = new Point(0,0); 
    var mpoint = new Point(0,0); 
    var myDispl = new DisplacementMapFilter(myBitmap, mpoint,1,2,10,30); 
    var myList = new Array(); 
    myList.push(myDispl); 
    water_mc.filters = myList; 
    var i = 1; 
    this.addEventListener("enterFrame", perlin); 

    function perlin(evt) 
    { 
     var filterList = water_mc.filters; 
     var offset = new Array(); 
     offset[1] = new Object(); 
     offset[1].x = i * 15; 
     offset[1].y = i/8 * 15; 
     filterList.mapBitmap = myBitmap; 
     myBitmap.perlinNoise(45,5,3,50,true,false, 7,true,offset); 

     water_mc.filters = filterList; 
     i++; 
    } 

答えて

1

が更新されていないあなたはENTER_FRAMEハンドラ内のフィルタに変更を加えていないので、フィルタ毎回を適用する必要がいけません。また、DisplacementMapFilterをムービークリップに直接適用することもできます。貼り付けたコードをいくつか変更しました。

//waterImage is a Bitmap Object. If you embed the object it will be a bitmap so no issues 
// typecast it if necessary. If you use a loader to load your image, then you can get the bitmap 
// using loader.content after the loader has done loading. 
var mpoint = new Point(0,0); 
var myDispl = new DisplacementMapFilter(null, mpoint,1,2,10,30); 
waterImage.filters = [myDispl]; 
var i = 1; 
this.addEventListener("enterFrame", perlin); 

function perlin(evt) 
{ 
    waterImage.bitmapData.perlinNoise(45,5,3,50,true,false, 7,true,[i*15,(i/8)*15]); 
    i++; 
} 
+0

これは機能していないようです。何か不足しています...完全なコードを表示できますか?あなたのコードにはwaterImageとmyBitmapはまったく何ですか? –

+0

コードの前のコメントを読んだことがありますか?私はwaterImageが何であるか説明しました。 私のコードの前にエラーがありました。私はこれを修正するために変更を加えました。混乱させて申し訳ありません。 – ganaraj

0

この

this.addEventListener("enterFrame", perlin);

が正しくありません。

Actionscript 3は、AS2のように"enterFrame"を使用しません。あなたが探している行はこれです:

this.addEventListener(Event.ENTER_FRAME, perlin);

あなたは、これが適切に動作するため、適切なクラス、flash.events.Eventをインポートする必要があります。さらに、これはフレームスクリプトですか、それともドキュメントクラス定義の一部ですか?どこに置くかによって、コードを正しく書いていることを確認してください。

+0

これは当てはまりません。 "enterFrame"は正常に動作します。 –