as3 - динамический доступ к атрибутам класса - PullRequest
0 голосов
/ 20 декабря 2009
public class SndFx
{
    [Embed(source="Sounds/01.mp3")]
    public static const s01:Class;
    public static const s01s:Sound = new s01() as Sound;

    [Embed(source="Sounds/02.mp3")]
    public static const s02:Class;
    public static const s02s:Sound = new s02() as Sound;

    [etc...]
}

Могу ли я получить доступ к этим атрибутам динамически? У меня есть ряд звуков, которые я хочу сыграть, и я хочу сделать что-то вроде этого:

SndFx["s"+numberStr+"s"].play();

1 Ответ

2 голосов
/ 20 декабря 2009

Я не знаю, как это сделать, хотя я не уверен, что это на самом деле невозможно. Но обходным путем было бы иметь синглтон с типичным статическим методом для доступа к экземпляру.

SndFx.getInstance()['s'+numberStr+'s'].play();

Однако лучший подход - заполнить массив или даже вектор Flash Player 10 вашими объектами Sound и получить доступ к объектам, использующим это.

SndFx.soundEffectsArray[parseInt(numberStr)].play();

Это позволяет проверить, находится ли проанализированное целое число вне границ, и т. Д.

...