Flash AS2 - справиться с отсутствующей звуковой картой - PullRequest
1 голос
/ 25 февраля 2010

В моей игре AS2 Flash я играю несколько звуковых файлов и жду сообщения / функции onSoundComplete, прежде чем продолжить.

Проблема в том, что в системе нет звуковой карты (или она отключена в диспетчере устройств) - все работает так, как будто работает (ошибок нет, обработчик onLoad получает значение "true"), но звук никогдафактически играются, и, как таковое, мое событие никогда не запускается.

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

Единственная проблема заключается в том, что я не могу надежно найти способ определить, есть ли звуковая карта в системе!

btw -AS3, кажется, справляется с этим довольно хорошо, передавая обратно звуковой канал NULL - к сожалению, я застрял в AS2.0

1 Ответ

1 голос
/ 25 февраля 2010

Вы должны иметь возможность использовать System.capabilities

Вот пример для аудио:

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

Вот все свойства от: http://www.actionscript.org/forums/showthread.php3?t=39727:

// 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);
...