0

我有一个火球的动画。我可以选择使用位图(最好是因为它使我的 swf 运行更顺畅)或使用一大组对象(10-20 个不同的图纸)。我使用装饰工具制作的,看起来棒极了!

无论如何,制作一个新的很烦人。另外,当我尝试制作一个新的时,它看起来并不像我的第一个那么好。我打算制作几种不同颜色的火球。如果我能以某种方式过滤整个符号的颜色,那就太好了fireball1,但我正在努力这样做。

我尝试了以下代码,但无论出于何种原因,它只是让我的火球完全消失了。我可能会感到困惑,因为我正在将我Fireball1班级的所有这些新孩子添加到我的数组中。另外,这是我的时间线图片的链接,我认为这可能有助于了解我的火球是什么样子http://tinypic.com/view.php?pic=fd7oyh&s=5

private var fireball1:Fireball1;
private var gameTimer:Timer;
private var army1:Array; //included the arrays in case it effects it somehow
private var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(colorMatrix);
private var colorMatrix:Array = new Array(
        [[0, 0, 1, 0, 0], 
        [0, 1, 0, 0, 0], 
        [1, 0, 0, 0, 0],
        [0, 0, 0, 1, 0]]);

public function PlayScreen(){
    army1 = new Array();
    var newFireball1 = new Fireball1( -100, 0 );
    army1.push(newFireball1);
    addChild(newFireball1);

    gameTimer = new Timer(50);
    gameTimer.start();
    addEventListener(TimerEvent.TIMER, onTick)
}

public function onTick():void
{
    var newFireball1:Fireball1 = new Fireball1( randomX, -15 );
newFireball1.filters = [colorFilter];
    army1.push( newFireball1 );
addChild( newFireball1 );
}
4

1 回答 1

1

您需要在实例化对象array之前定义矩阵。ColorMatrixFilter此外,ColorMatrixFilter期望一维array. 请参阅文档,该文档建议使用concat似乎可以解决问题的语法。

尝试使用以下内容更新您的代码:

// Matrix should be a one dimensional array
var colorMatrix:Array = new Array();
colorMatrix = colorMatrix.concat([0, 0, 1, 0, 0]), 
colorMatrix = colorMatrix.concat([0, 1, 0, 0, 0]), 
colorMatrix = colorMatrix.concat([1, 0, 0, 0, 0]),
colorMatrix = colorMatrix.concat([0, 0, 0, 1, 0]);

// Matrix needs to be defined before it's added to the ColorMatrixFilter
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(colorMatrix);
于 2013-08-24T00:30:27.037 回答