Have questions? Discuss this Flash / AS3 tutorial with others on the forums.
The Flash Player does a good job of allowing you to focus on creating cool content that works on a wide range of devices. Despite that, there are a handful of Flash features that not all devices support. An example of this is using the webcam on a device that doesn't actually have a webcam.
To help you gracefully handle situations where what you expect and what the device your content will be viewed on supports are not the same, you have the flash.system.Capabilities API.
The following is an example that uses this API to show you what Flash features your system supports:
The above list uses almost all of the functions found in the Capabilities API to return whether a feature is supported or provide information on system settings such as the CPU, OS, Flash Player version, etc.
You can download the source code (Flash CS5.5 and CS4) for the above project or just glance at the various functions starting with Capabilities I used below:
- public function WhatToSupport() {
- // constructor code
- this.addEventListener(Event.ADDED_TO_STAGE, DetermineCapabilities);
- }
- private function DetermineCapabilities(e:Event)
- {
- SetEnabledOrDisabled(Capabilities.avHardwareDisable, cameraMicrophone);
- SetEnabledOrDisabled(Capabilities.hasAccessibility, accessibility);
- SetEnabledOrDisabled(Capabilities.hasAudio, audioPlayback);
- SetEnabledOrDisabled(Capabilities.hasAudioEncoder, encodingAudio);
- SetEnabledOrDisabled(Capabilities.hasEmbeddedVideo, embeddedVideo);
- SetEnabledOrDisabled(Capabilities.hasIME, imeInstalled);
- SetEnabledOrDisabled(Capabilities.hasMP3, mp3decoder);
- SetEnabledOrDisabled(Capabilities.hasPrinting, printing);
- SetEnabledOrDisabled(Capabilities.hasScreenBroadcast, screenbroadcast);
- SetEnabledOrDisabled(Capabilities.hasScreenPlayback, screenplayback);
- SetEnabledOrDisabled(Capabilities.hasStreamingAudio, streamingAudio);
- SetEnabledOrDisabled(Capabilities.hasStreamingVideo, streamingVideo);
- SetEnabledOrDisabled(Capabilities.hasTLS, sslSockets);
- SetEnabledOrDisabled(Capabilities.hasVideoEncoder, encodingVideo);
- SetEnabledOrDisabled(Capabilities.isDebugger, debugVersion);
- SetEnabledOrDisabled(Capabilities.isEmbeddedInAcrobat, embeddedPDF);
- SetEnabledOrDisabled(Capabilities.localFileReadDisable, hardDrive);
- SetEnabledOrDisabled(Capabilities.supports32BitProcesses, thirtyTwoBit);
- SetEnabledOrDisabled(Capabilities.supports64BitProcesses, sixtyFourBit);
- touchScreen.text = Capabilities.touchscreenType;
- flashVersion.text = Capabilities.version;
- cpu.text = Capabilities.cpuArchitecture;
- language.text = Capabilities.language;
- manufacturer.text = Capabilities.manufacturer;
- h264idc.text = Capabilities.maxLevelIDC;
- osValue.text = Capabilities.os;
- pixelaspectratio.text = Capabilities.pixelAspectRatio.toString();
- runtimeEnvironment.text = Capabilities.playerType;
- screenColor.text = Capabilities.screenColor;
- screenDPI.text = Capabilities.screenDPI.toString();
- horizontalResolution.text = Capabilities.screenResolutionX.toString();
- verticalResolution.text = Capabilities.screenResolutionY.toString();
- }
- private function SetEnabledOrDisabled(supported:Boolean, yesOrNoInstance:MovieClip)
- {
- if (supported)
- {
- yesOrNoInstance.gotoAndStop(1);
- }
- else
- {
- yesOrNoInstance.gotoAndStop(2);
- }
- }
I am not going to describe the various functions in this article, for Adobe's Documentation on this is fantastic. Just read the documentation and refer to the source code and example you see in this page for some guidance to see how it is used.
Conclusion
There you have it - an introduction to the easy-to-use Capabilities API via a sample project and Adobe's documentation. If you are ever using a feature whose existence is dependent on the device your content will be viewed on, strongly consider checking to see if the feature exists and giving users some notice about why your content won't work as expected for them!
Need Help?
If you have questions, need some assistance on this topic, or just want to
chat - please drop by our friendly forums
and post your question. There are a lot of knowledgeable and witty people who
would be happy to help you out. Plus, we have a
large collection of smileys
you can use
![]()
Share
Did you enjoy reading this and found it useful? If so, please share it with your friends:
If you didn't like it, I always like to hear how I can do better next time. Please feel free to contact me directly at kirupa[at]kirupa.com.
Cheers!
|











