2010-02-25 7 views
1

내 AS2 플래시 게임에서 진행하기 전에 여러 사운드 파일을 재생하고 "onSoundComplete"메시지/기능을 기다립니다.Flash AS2 - 빠진 사운드 카드 처리

시스템에 사운드 카드가 없거나 장치 관리자에서 사용할 수없는 경우 문제가 발생합니다. 모든 것이 작동하고 있습니다 (오류없이 onLoad 핸들러가 "true"가됩니다). 연주되었으므로 내 이벤트가 실행되지 않습니다.

사운드 카드에 연결하여이 문제를 해결할 계획이었습니다. 사운드 카드가 감지되지 않으면 "onSoundComplete"기능을 수동으로 실행하기 전에 몇 초 기다리는 타이머를 시작하십시오.

유일한 문제는 안정적인 방법으로 시스템에 사운드 카드가 있는지 확인하는 방법을 찾을 수 없다는 것입니다!

이 BTW - AS3가 NULL의의 SoundChannel을 다시 전달하여 아주 능숙하게이 문제를 처리 할 것 - 불행하게도 내가 AS2.0에 갇혀 있어요

+0

지금 당장은 시스템에 사운드가 있는지를 확인할 수있는 유일한 신뢰할 수있는 방법은 짧은 볼륨의 사운드를 짧은 볼륨으로 재생하고 onSoundComplete 기능이 실행되는지 확인하는 것입니다. 그런 해킹은 나를 조금만 죽게합니다. – n3wtz

답변

1

당신은 위해 System.capabilities을 사용할 수 있어야는

여기

은 대한 예입니다 오디오 : http://www.actionscript.org/forums/showthread.php3?t=39727 : 여기

var userAudio:Boolean = System.capabilities.hasAudio; 
trace("YOUR SYSTEM HAS AUDIO:"); 
trace(userAudio); 

은 모든 속성이다

// Camera and Microphone check 
var userCamMic:Boolean = System.capabilities.avHardwareDisable; 
trace("YOUR CAMERA AND MICROPHONE ARE ENABLED:"); 
trace(userCamMic); 
// Flash player supports communication to Accessibility Aids 
var userAccess:Boolean = System.capabilities.hasAccessibility; 
trace("YOUR FLASH PLAYER SUPPORTS COMMUNICATION TO ACCESSIBILITY AIDS:"); 
trace(userAccess); 
// Checking to see if you have audio 
var userAudio:Boolean = System.capabilities.hasAudio; 
trace("YOUR SYSTEM HAS AUDIO:"); 
trace(userAudio); 
// Checking to see if you have an audio encoder for streaming 
var userAudioEnc:Boolean = System.capabilities.hasAudioEncoder; 
trace("YOUR SYSTEM HAS AN AUDIO ENCODER, THUS ALLOWING STREAMING:"); 
trace(userAudioEnc); 
// Checking to see if your system has embedded video capabilities 
var userEmbVideo:Boolean = System.capabilities.hasEmbeddedVideo; 
trace("YOUR SYSTEM ALLOWS FOR EMBEDDED VIDEO:"); 
trace(userEmbVideo); 
// Checking to see if your system has an MP3 decoder 
var userMP3:Boolean = System.capabilities.hasMP3; 
trace("YOUR SYSTEM HAS AN MP3 DECODER:"); 
trace(userMP3); 
// Checking to see if your system supports printing 
var userPrint:Boolean = System.capabilities.hasPrinting; 
trace("YOUR SYSTEM SUPPORTS PRINTING:"); 
trace(userPrint); 
// Checking to see if your system supports development of screen broadcast 
// applications to be run through Flash Communication Server 
var userScrnBrd:Boolean = System.capabilities.hasScreenBroadcast; 
trace("YOUR SYSTEM SUPPORTS DEVELOPMENT OF SCREEN BROADCAST APPLICATIONS TO BE RUN 
THROUGH FLASH COMMUNICATION SERVER:"); 
trace(userScrnBrd); 
// Checking to see if your system supports playback of screen broadcast 
// applications that are running from Flash Communication Server 
var userScrnPlay:Boolean = System.capabilities.hasScreenPlayback; 
trace("YOUR SYSTEM SUPPORTS PLAYBACK OF SCREEN BROADCAST APPLICATIONS THAT ARE 
RUNNING FROM FLASH COMMUNICATION SERVER:"); 
trace(userScrnPlay); 
// Checking to see if your system can play streaming audio 
var userStrmAud:Boolean = System.capabilities.hasStreamingAudio; 
trace("YOUR SYSTEM CAN PLAY STREAMING AUDIO:"); 
trace(userStrmAud); 
// Checking to see if your system can play streaming video 
var userStrmVid:Boolean = System.capabilities.hasStreamingVideo; 
trace("YOUR SYSTEM CAN PLAY STREAMING VIDEO:"); 
trace(userStrmVid); 
// Checking to see if your system can encode streaming video 
var userVidEnc:Boolean = System.capabilities.hasVideoEncoder; 
trace("YOUR SYSTEM CAN ENCODE STREAMING VIDEO:"); 
trace(userVidEnc); 
// Checking to see if your player is officially released (false) or a debugging version (true) 
var userDebug:Boolean = System.capabilities.isDebugger; 
trace("YOUR PLAYER IS A DEBUGGING VERSION:"); 
trace(userDebug); 
// What language is your player running 
var userLang:String = System.capabilities.language; 
trace("YOUR PLAYER IS RUNNING ON THIS LANGUAGE (see Actionscript 'Reference' for language list. 
Example: 'en' is English):"); 
trace(userLang); 
// Checking to see if player is attempting to read anything from hard disk 
var userLocFile:Boolean = System.capabilities.localFileReadDisable; 
trace("YOUR PLAYER IS ATTEMPTING TO READ FROM YOUR HARD DISK:"); 
trace(userLocFile); 
// Checking to see the manufacturer of your Flash player 
var userManu:String = System.capabilities.manufacturer; 
trace("YOUR FLASH PLAYER IS MANUFACTURED BY:"); 
trace(userManu); 
// Checking to see what operating system user is running 
var userOS:String = System.capabilities.os; 
trace("YOUR OPERATING SYSTEM IS:"); 
trace(userOS); 
// Checking the pixel aspect ratio of user screen 
var userPAR:Number = System.capabilities.pixelAspectRatio; 
trace("THE PIXEL ASPECT RATIO OF YOUR SCREEN IS:"); 
trace(userPAR); 
// Checking to see what player the user system is using 
var userPlayType:String = System.capabilities.playerType; 
trace("THE PLAYER YOUR SYSTEM IS RUNNING IS:"); 
trace(userPlayType); 
// Checking to see what color user screen is running 
var userScrnCol:String = System.capabilities.screenColor; 
trace("YOUR SYSTEM IS RUNNING THIS COLOR (color, gray, bw):"); 
trace(userScrnCol); 
// Checking to see what the users screen DPI is 
var userDPI:Number = System.capabilities.screenDPI; 
trace("YOUR SCREEN DPI (DOTS PER INCH) IS:"); 
trace(userDPI); 
// User screen resolution 
var userScreenX:Number = System.capabilities.screenResolutionX; 
var userScreenY:Number = System.capabilities.screenResolutionY; 
trace("YOUR MONITOR RESOLUTION IS:"); 
trace(userScreenX+" x "+userScreenY); 
// Creating URL code for users system capabilites 
var userServStr:String = System.capabilities.serverString; 
trace("THE URL CODE FOR YOUR USER SYSTEM CAPABILITIES IS:"); 
trace(userServStr); 
// Checking to see what Flash player version user is running 
var userVersion:String = System.capabilities.version; 
trace("YOUR FLASH PLAYER VERSION IS:"); 
trace(userVersion); 
// Checking to see if user has disabled windowless mode 
var userWinDis:Boolean = System.capabilities.windowlessDisable; 
trace("YOU HAVE DISABLED WINDOWLESS MODE:"); 
trace(userWinDis); 
// Checking to super domain or exact domain is set 
var userExacSet:Boolean = System.exactSettings; 
trace("YOU HAVE SUPER DOMAIN SETTINGS:"); 
trace(userExacSet); 
+0

이상하게도 장치 관리자에서 사운드 카드를 비활성화하더라도 System.capabilities.hasAudio는 "true"입니다. – n3wtz

+0

System.capabilities.hasAudio는 데스크톱 플레이어에서 항상 true이기 때문에이 대답은 작동하지 않습니다. System.capabilities는 시스템이 아닌 * player *의 기능을보고합니다. http://stackoverflow.com/questions/4511146/check-if-users-flash-player-has-audio-capabilities-capabilities-hasaudio를 참조하십시오. – Sam

관련 문제