나는 약간의 난처함을 가지고있다. 특정 사운드가 재생되면 MovieClip 내부에서 함수를 호출해야합니다. 사운드는 내가 가져온 외부 클래스의 사운드 채널을 통해 재생됩니다. 재생이 완벽하게 작동합니다.소리가 나지 않는다 (AS3)
여기 내 외부 클래스 인 Sonus와 관련된 코드입니다.
public var SFXPRChannel:SoundChannel = new SoundChannel;
var SFXPRfishbeg:Sound = new sfxpr_fishbeg();
var SFXPRfishmid:Sound = new sfxpr_fishmid();
var SFXPRfishend3:Sound = new sfxpr_fishend3();
var SFXPRfishend4:Sound = new sfxpr_fishend4()
public function PlayPrompt(promptname:String):void
{
var sound:String = "SFXPR" + promptname;
SFXPRChannel = this[sound].play();
}
이
따라서 내가 통해 내 프로젝트에 액세스, 문서 클래스 "OSR"에서 가져 오기를 통해 소위 "osr.Sonus ---"내 프로젝트에서, 내가 가진 다음과 같다 코드 행.
osr.Sonus.SFXPRChannel.addEventListener(Event.SOUND_COMPLETE, promptIsFinished);
function prompt():void
{
var level = osr.Gradua.Fetch("fish", "arr_con_level");
Wait(true);
switch(level)
{
case 1:
osr.Sonus.PlayPrompt("fishbeg");
break;
case 2:
osr.Sonus.PlayPrompt("fishmid");
break;
case 3:
osr.Sonus.PlayPrompt("fishend3");
break;
case 4:
osr.Sonus.PlayPrompt("fishend4");
break;
}
}
function Wait(yesno):void
{
gui.Wait(yesno);
}
function promptIsFinished(evt:Event):void
{
Wait(false);
}
osr.Sonus.PlayPrompt (...)와 gui.Wait (...) 모두 내가 오류없이 프로젝트의이 부분에 다른 문맥에서 사용으로 완벽하게 작동합니다.
기본적으로 사운드 재생이 끝나면 기다려야합니다 (거짓). 호출되지만 이벤트 리스너는 SOUND_COMPLETE 이벤트를 "들음"하는 것으로 보이지 않습니다. 나는 어딘가에서 실수를 했습니까?
내 프로젝트 구조로 인해 Sonus 내에서 적절한 대기 (...) 기능을 호출 할 수 없습니다.
도움 말?
불행히도, 내가 말했듯이, 나는 Sonus 내부에서 Wait (false)를 호출 할 수 없습니다. 나는 프로젝트 자체 내에서 비슷한 기능을 사용하여 이것을 직접 해봐야 할 것 같다. 모두 고마워. – CodeMouse92
글쎄 반드시 그렇게 할 필요는 없습니다. 해당 switch 문 내에서 PlayPrompt를 호출하면 해당 범위에서 SFXPRChannel에 액세스 할 수 있으므로 switch 문 내에서 PlayPrompt를 호출 한 다음 스위치가 실행 된 직후 리스너를 추가 할 수 있습니다. – scriptocalypse
글쎄, 아니, 내 프로젝트가 그런 방식으로 설정 되었기 때문에 세그먼트가 필요에 따라 숨겨져 무대에 표시된 영화 클립에 있습니다. 각각에는 "gui"객체가 있는데, Wait (false)가 참조하는 함수가 들어 있습니다. 어떤 시점에서 어느 영화 클립이 그 대기 (거짓) 신호의 대상이 될지를 알 수있는 방법이 없으므로 문제입니다. 그래도 고마워. – CodeMouse92