0

だから私は音楽ビジュアライザーを作っていて、グラフィックスのラインスタイルを事前定義された色に設定しようとしています! しかし、しようとするとエラーが発生します

var lineColor:Color = new Color(120,120,12);
graphics.lineStyle(lineThickness, lineColor);

1067: 型 fl.motion:Color の値が関連のない型 uint に暗黙的に強制されています。

それで、私は試しました

var lineColor:Color = new Color(120,120,12);
graphics.lineStyle(lineThickness, lineColor.color);

しかし、lineColor.color常に 0 を返します! 私は何をしますか?カラーオブジェクトを取得して、それをグラフィックス用の互換性のある16進数にするAPIが組み込まれていないなんて信じられません!

どんな助けでも大歓迎です!

4

1 に答える 1

2

メソッドを使用して 16 進値を返すだけです。

function get_uint_from_colour(red:int, green:int, blue:int) {

    return red << 16 | green << 8 | blue;

}

あなたの例では:

graphics.lineStyle(lineThickness, get_uint_from_colour(120, 120, 12));

事前定義されたオブジェクトのセットを使用する必要があるというコメントに応えて、Color(ある時点で) それらを型に変換する必要があります。uintこれは、メソッドで受け入れられるデータ型であるためlineStyleです。

私の提案は、オブジェクトget_uint_from_colourを受け入れるようにメソッドを調整することです。Colorそのようです:

function get_uint_from_colour(colour:Color) {

    return int(colour.redMultiplier) << 16 | int(colour.greenMultiplier) << 8 | int(colour.blueMultiplier);

}

だからあなたのコードで:

graphics.lineStyle(lineThickness, get_uint_from_colour(lineColor));

関数をよりよく説明していると感じたため、元のメソッドの名前を変更したことに注意してください

また、Colorオブジェクトは、標準の 16 進数カラーよりも多くの情報を保持できることに注意してください。この余分な情報は、変換の過程で失われます。

于 2013-08-02T15:10:23.087 に答える