Actionscript 3 Ye olde管道流动画

Actionscript 3 Ye olde管道流动画,actionscript-3,flash,Actionscript 3,Flash,我试图通过一个“管道”网格来编写一个流动画(基本颜色,没有什么特别的)。 (想象一个5*5的平铺屏幕) 由于管道是在运行时完全动态创建的,因此动画也必须编写脚本。 目前,我没有想到如何在actionscript中实现这一点,而不用预先生成掩码 谢谢你的提示 您希望以与管道游戏相同的方式,直观地“模拟”一些液体(例如水)通过管道的流动吗 好吧 您是否愿意使用位图数据(像素)来创建此效果 下面是我将如何处理这件事 创建一个短脚本以逐渐填充矩形(块)像素 即 这只是我头脑中的一个例子(不会编译) 这

我试图通过一个“管道”网格来编写一个流动画(基本颜色,没有什么特别的)。 (想象一个5*5的平铺屏幕) 由于管道是在运行时完全动态创建的,因此动画也必须编写脚本。 目前,我没有想到如何在actionscript中实现这一点,而不用预先生成掩码


谢谢你的提示

您希望以与管道游戏相同的方式,直观地“模拟”一些液体(例如水)通过管道的流动吗

好吧

您是否愿意使用位图数据(像素)来创建此效果

下面是我将如何处理这件事

创建一个短脚本以逐渐填充矩形(块)像素

这只是我头脑中的一个例子(不会编译) 这样做的目的是为每个瓷砖保持正确的起点和终点。。 您可以像使用任何遮罩一样轻松设置动画


您可以将每种类型的平铺定义为点向量,然后通过将平铺位置添加到每个点,从一个点迭代到另一个点。

要动态填充曲线,您可能需要对贝塞尔曲线使用此闭合公式:

//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;
}

这将为曲线样式流设置动画

您好,谢谢。然而,我的问题更多的是弯曲的项目。。。我可以计算并绘制一条曲线,但要填充这条曲线目前对我来说有点困难。这是一个非常基本的示例-该步骤可以帮助您计算完成动画所需的帧数。我把它修好了
//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;
}