Звук в библиотеке для flash9

Не знает, часом, кто-нибудь как проиграть звуковой файл из библиотеки?
Неохота грузить звуки из внешних файлов.

Нашел как

Нашел как использовать звук, причем никакого шаманства, просто надо быть внимательней
привожу код:

packege game.sounds;

import flash.media.Sound;

class Sound0 extends Sound {}

class NewClass {
  public function new() {
    var s:Sound = new Sound0();
    s.play();
  }
}

Как оказалось камень здесь был (была зарыта собака) в том, что класс Sound0 находится в пакейдже game.sounds.
А компилировал библиотеку без этого момента, и когда указал, что имя звука в библиотеке будет game.sounds.Sound0 как оно тут же заработало без лишних вопросов.

---
Werdn ЯR

re:

сам делал это пока только с Flex, с haXe надобности не было.

может быть тебе чем-то помогут эти ветки:
http://lists.motion-twin.com/pipermail/haxe/2006-October/005172.html
http://osflash.org/pipermail/swfmill_osflash.org/2007-April/001263.html

ещё подумалось, а нельзя ли в haXe использовать для этого ресурсы? Сомнительно, но вдруг. )

Не то слегка.

Не то слегка. Там написано для максимум 8-й версии, для AS2.0, а мне интересно для 3.0. И ресурсы все-таки внешние файлы.
Не проблема создать библиотеку и приклеить к коду, проблема в получении доступа к содержимому.
В AS2.0 есть у Sound-а метод attachSound, а в 3.0 нет такого, подразумевается что для всех объектов в библиотеке созданы классы.
пытался сделать так:

extern class MySnd extends Sound {}
...
  var s:Sound = new MySnd();
...

так оно ругается
Reference Error #1065 aaa.bbb::MySound is not defined
насколько я понял не находит такого класса
если убираю extern (гдето в статейках видел, только про шрифты)
пишет при попытке проиграть - invalid sound.

можно еще попробовать сделать как в методе attach класса flash.Lib, может получится
---
Werdn ЯR

AS3

В AS3 я делал это совсем просто. У меня была старая swf-библиотека со звуками и я использовал её в Flex проекте. Для этого сделал класс SoundLibrary (хотя отдельный класс можно было бы и не делать, мне было просто так удобнее), в который через Embed включил нужные звуки из этой библиотеки:

[Embed(source='libs/my_sounds.swf', symbol='msg')]
private var msgSoundCls :Class;
...

Потом остаётся только сделать что-нибудь типа:

var msgSound :SoundAsset = new msgSoundCls() as SoundAsset;
...
msgSound.play();

Думаю, что в haXe всё это вполне реализуемо, единственная разница в том, что вместо Embed нужно использовать другую технику.

А ссылки я давал больше в смысле того, что там люди что-то писали об ограничениях в работе swfmill со звуковыми файлами, предполагая, что твой вопрос связан с этим. Возможно неправильно понял.

Очередная

Очередная попытка провалилась:

var c:Class<Void> = ApplicationDomain.currentDomain.getDefinition("Sound0");
trace(c);
//не могу создать экземпляр класса, хоть и пишет в трейсе [class Sound0]
var s:Sound = untyped __new__(c); //Взял из класса flash.Lib
//Пишет "test.swf contains invalid data."

Может проблема в звуковом файле?
swfmill его проглатил, флеш 8-й тоже.
---
Werdn ЯR

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.