PDA

Просмотр полной версии : как запускать звук из подгружаемой библиотеке (.swf)


HN4E7O
15.03.2010, 15:30
Делаю игру во FLEX на нескольких языках. Так как звуков много и некоторые из них довольно большого размера, то моя идея создать для каждого языка swf cо звуками в билиотеке,загрузить эту swf изначально, и при необходимости запускать звук из библиотеки.

Перерыл гугль и флэшер, но так и не нашёл каким образом вызывать звук из подгружаемой библиотеке во флексе.

Помогите чем можете... пжалуйста !!!

wvxvw
15.03.2010, 16:02
Звyки линкуются к классам, соответственно:
(new (myLoadedSWF.loaderInfo
.applicationDomain.getDefinition(
"SomeSoundClass") as Class)()).play();

HN4E7O
15.03.2010, 16:25
Звыки линкуются к классам, соответственно:
(new (myLoadedSWF.loaderInfo
.applicationDomain.getDefinition(
"SomeSoundClass") as Class)()).play();


не знаю правильно я вас понял или нет, но так не работает

public var soundLoader:Loader = new Loader();
soundLoader.load("library.swf");
soundLoader.addEventListener(Event.COMPLETE, onSoundInit);

private function onSoundInit(e:Event){
var miSound:Class = new (soundLoader.loaderInfo.applicationDomain.getDefinition("Sound_1") as Class)(); // Sound_1 название класса в библиотек тип flash.media.Sound
var sound:Sound = new miSound() as Sound;
sound.play();
}



я вас правильно понял ?

wvxvw
15.03.2010, 16:26
var miSound:Class - > var miSound:Sound
Почитайте про ApplicationDomain и что он делает.

HN4E7O
15.03.2010, 16:55
var miSound:Class - > var miSound:Sound
Почитайте про ApplicationDomain и что он делает.

почитал.. три раза... и вроде фсё понятно

пробую проверить наличие класса и подгружаемом клипе и не находит...
trace(loadinfo.applicationDomain.hasDefinition("Sound_1")+"" )//возвращает false
но он там есть.. в самом клипе пробую
var sound_1:Sound_1 = new Sound_1();
sound_1.play();

и работает, как сам по себе так и во флексе...
не пойму где туплю :confused:

wvxvw
15.03.2010, 21:24
Что такое loadinfo? Я так понимаю, должно быть loaderInfo? А вы уверены, что у того объекта loaderInfo получили? А уверены, что тот ApplicationDomain откуда вы пытаетесь получить класс разрешает вам это сделать? А написали ли полное имя класса?