0

「パイプ」のグリッドを介してフローアニメーション(基本的な色、派手なものは何もない)をスクリプト化しようとしています。(5*5 のタイル張りの画面を考えてみてください) パイプは実行時に完全に動的に作成されるため、アニメーションもスクリプト化する必要があります。現時点では、事前に生成されたマスクなしで、アクションスクリプトでこれを行う方法について頭から離れています。

すべてのヒントをありがとう!

4

2 に答える 2

0

パイプゲームで行われるのと同じスタイルで、パイプを通る液体 (水など) の流れを視覚的に「シミュレート」したいとお考えですか?

http://www.mclelun.com/img/blog/120411_pipe_02.jpg

大丈夫...

この効果を作成するために bitmapData (ピクセル) を使用しますか?

これが私がそれについて行く方法です..

ピクセルの長方形 (ブロック) を徐々に塗りつぶす短いスクリプトを作成します。

すなわち

var animateOn  : Boolean = true;
var startPoint : Point = new Point(beginX , beginY); 
var endPoint   : Point = new Point(finishX, finishY);
var step : Number = 1 / Point.Distance(startPoint, endPoint);
var currentPos : Number = 0;
onEnterFrame(e : Event):void
{
   var p : point = Point.interpolate(startPoint, endPoint, currentPos);
   bitmap.drawRect(p.x - 2, p.y - 2, 4, 4, someColor);
   currentPos += step; 
}

これは頭​​のてっぺんの例にすぎません (コンパイルされません) アイデアは、各タイルの正しい startPoint と endPoint をフィードし続けることです. マスクを使用せずに、簡単にアニメーション化できます。

タイルの各タイプを点のベクトルとして定義し、タイルの位置を各点に追加することで、ある点から別の点に反復できます。

于 2012-08-13T19:12:04.343 に答える
0

曲線を動的に塗りつぶすには、ベジエ曲線に次の閉じた式を使用することをお勧めします。

//start point
var s = new Point(x0, y0);
//cont point
var c = new Point(x1, y1);
//end point
var e = new Point(x2, y2);

var step : Number = 1 / (Point.distance(startPoint, controlPoint) +  Point.distance(controlPoint, endPoint));
var t : Number = 0.0;

private function onEnterFrame(e : Event):void
{
    var p : Point = new Point();
    p.x = (s.x * (1-t) + c.x * t) * (1 - t) + (c.x * (1-t) + e.x * t) * t;
    //do the same for y axis
    drawSomething(p.x, p.y);
    t+= step;
}

これにより、曲線スタイルのフローがアニメーション化されます

于 2012-08-14T18:08:10.913 に答える