<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1511584671219632789</id><updated>2008-04-27T15:43:00.217-07:00</updated><title type='text'>Hidden APIs of Flash, Flex, Flash Player, and AIR</title><link rel='alternate' type='text/html' href='http://api.onflex.org/'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://api.onflex.org/atom.xml'/><author><name>Ted Patrick</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1511584671219632789.post-2412630678850560794</id><published>2007-10-22T09:03:00.000-07:00</published><updated>2007-10-22T10:01:49.492-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='capabilities'/><title type='text'>Capabilities API - Know more about your users</title><content type='html'>Often, we develop applications which need to know about client-machine's capabilities in order to provide optimal experience. For example, we might need to know following in different scenarios:-&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;What is client's screen-resolution?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What is client's Operating-System (OS)?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What is Adobe Flash runtime (Flash Player or AIR) version?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What is system-language (English or German etc) of the machine?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What is player type (Standalone or browser-plugin)?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Does client have audio/video support?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Does client support accessibility aids (screen-readers etc)?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Does client support SSL/TLS transport?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Is client allowed to use Microphone/Webcam (in restricted/administrated environments - corporates/institutes etc)?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Adobe Flash runtimes (Flash Player and AIR) provide &lt;a href="http://livedocs.adobe.com/flex/201/langref/flash/system/Capabilities.html"&gt;Capabilities&lt;/a&gt; API to know all these (above and more) about client-machine. You can use various static &lt;a href="http://livedocs.adobe.com/flex/201/langref/flash/system/Capabilities.html#propertySummary"&gt;properties&lt;/a&gt; to determine various capabilities of client machine.&lt;br /&gt;&lt;br /&gt;For example:-&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//To know horizontal-screen-resolution&lt;br /&gt;var screenResolutionX:Number = Capabilities.screenResolutionX;&lt;br /&gt;&lt;br /&gt;//To know vertical screen-resolution&lt;br /&gt;var screenResolutionY:Number = Capabilities.screenResolutionY;&lt;br /&gt;&lt;br /&gt;//To know operating-system - returns "Window &lt;X&gt;", "Linux" or "MacOS".&lt;br /&gt;//Where &lt;X&gt; could be different versions (2000 or XP etc) of MS-Windows.&lt;br /&gt;var operatingSystem:String =  Capabilities.os;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Check out the &lt;a href="http://livedocs.adobe.com/flex/201/langref/flash/system/Capabilities.html"&gt;Capabilities&lt;/a&gt; API to learn all about it.</content><link rel='alternate' type='text/html' href='http://api.onflex.org/2007/10/capabilities-api-know-more-about-your.html' title='Capabilities API - Know more about your users'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1511584671219632789&amp;postID=2412630678850560794' title='0 Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/2412630678850560794'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/2412630678850560794'/><author><name>Abdul</name></author></entry><entry><id>tag:blogger.com,1999:blog-1511584671219632789.post-1433860308152853373</id><published>2007-10-22T05:37:00.000-07:00</published><updated>2007-10-22T06:10:14.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='uri'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>URL (URI) encoding/decoding</title><content type='html'>ActionScript developers has been using &lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#escape()"&gt;escape()&lt;/a&gt;/&lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#unescape()"&gt;unescape()&lt;/a&gt; functions to encode/decode Uniform Resource Identifiers (URI). Technically, escape() works differently.&lt;br /&gt;&lt;br /&gt;Adobe Flash Player 9 introduced some API (global or top-level) functions &lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#encodeURI()"&gt;encodeURI&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#decodeURI()"&gt;decodeURI&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#encodeURIComponent()"&gt;encodeURIComponent&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/201/langref/package.html#decodeURIComponent()"&gt;decodeURIComponent&lt;/a&gt; to work with URI encoding. &lt;br /&gt;&lt;br /&gt;It is recommended to use these new functions for URI encoding/decoding.&lt;br /&gt;&lt;br /&gt;I thought of writing the difference between escape() and new API functions but following blog posts would explain better than me.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blog.openboxsoftware.com/2006/04/javascript-escape-vs-encodeuricomponent/"&gt;escape () vs encodeURIComponent ()&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://xkr.us/articles/javascript/encode-compare/"&gt;Comparaing escape(), encodeURI() and encodeURIComponent()&lt;/a&gt;&lt;/&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Note: Above links are in context of JavaScript and Browser, I am expecting (assuming) behavior of ActionScript functions in Flash Player should not be different, since all of these follow same &lt;a href="http://www.w3.org/TR/uri-clarification/"&gt;standard(s)&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://api.onflex.org/2007/10/url-uri-encodingdecoding.html' title='URL (URI) encoding/decoding'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1511584671219632789&amp;postID=1433860308152853373' title='0 Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/1433860308152853373'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/1433860308152853373'/><author><name>Abdul</name></author></entry><entry><id>tag:blogger.com,1999:blog-1511584671219632789.post-6109220138697862702</id><published>2007-10-12T02:46:00.000-07:00</published><updated>2007-10-12T03:57:52.138-07:00</updated><title type='text'>flash.net.SharedObject</title><content type='html'>&lt;span style="font-style:italic;"&gt;"Cookies are to the Browser as SharedObject is to Flash Player/AIR." &lt;/span&gt;&lt;br /&gt; &lt;br /&gt;SharedObject allows you to persist data in object form on the client side in Flash Player or AIR. It is an incredibly simple class with some profound implications when used properly. Since Flash Player 6 you have been able to persist data using SharedObject to disk on the end users machine, you cannot write arbitrary files but you can store up to 100K of data in object form which is pretty cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/labs/flex3/langref/flash/net/SharedObject.html"&gt;API DOCUMENTATION&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;EXAMPLE:&lt;/span&gt;&lt;br /&gt;var so:SharedObject = SharedObject.getLocal("scores");&lt;br /&gt;so.data.highScore = new Number(892343);&lt;br /&gt;so.data.lowScore = new Number(5934);&lt;br /&gt;so.data.recentScore = new Number(382234);&lt;br /&gt;so.data.gamerName = new String("adobeted");&lt;br /&gt;so.flush();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MORE:&lt;/span&gt;&lt;br /&gt;You create or open a SharedObject using the getLocal method with a unique path or domain. SharedObjects can only be read on domains where they are set so they have a handy security implication that is being used at Bank of America, Yahoo and other sites for extra security on web transactions. The security model for SharedObject is located here&lt;br /&gt;&lt;br /&gt;Once you have a SharedObject instance you simply write data into the &lt;span style="font-weight:bold;"&gt;data&lt;/span&gt; object. When the Flash Player/AIR instance quits all SharedObject data is flushed to disk but you can force writing to disk using the &lt;span style="font-weight:bold;"&gt;flush()&lt;/span&gt; method.&lt;br /&gt;&lt;br /&gt;SharedObject data can also be synchronized using the RTMP protocol and are the primary data exchange technique for use with Flash Communication Server. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;USES:&lt;/span&gt;&lt;br /&gt;- Tracking users with a GUID&lt;br /&gt;- Persisting username for login fields&lt;br /&gt;- Storing UI state&lt;br /&gt;- Storing history for local user&lt;br /&gt;- Synchronizing data between clients (FMS via RTMP)&lt;br /&gt;- Store any data between requests&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Hidden APIS&lt;/span&gt;&lt;br /&gt;I am firing up the "Hidden API" Blog. If you are interested in contributing to Hidden APIS, please contact me at &lt;a href="mailto:ted@adobe.com"&gt;ted@adobe.com&lt;/a&gt;. I am looking for various opinions on the different APIS as my perspective is far from the only one that matters. I think we can all learn a ton about the lower level features of Flash Player/AIR/Flex/Flash here sharing how the various APIS are used. Hidden APIS should be a fun long term project and now that I have time, lets get this party started.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;&lt;br /&gt;Ted :)</content><link rel='alternate' type='text/html' href='http://api.onflex.org/2007/10/flashnetsharedobject.html' title='flash.net.SharedObject'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1511584671219632789&amp;postID=6109220138697862702' title='1 Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/6109220138697862702'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/6109220138697862702'/><author><name>Ted Patrick</name></author></entry><entry><id>tag:blogger.com,1999:blog-1511584671219632789.post-975976992166389746</id><published>2007-05-02T15:54:00.000-07:00</published><updated>2007-05-02T16:02:57.425-07:00</updated><title type='text'>mx.*, fl.*, and flash.*</title><content type='html'>Just to make sure everyone is on the same page there are different class paths to denote the different API's and what they at a high level.&lt;br /&gt;&lt;br /&gt;mx.* --&gt; These are Flex related classes.&lt;br /&gt;fl.* --&gt; These are Flash related classes.&lt;br /&gt;flash.* --&gt; These contain the intrinsic classes in both Flash Player and the Apollo Runtime.&lt;br /&gt;&lt;br /&gt;Typically you will see them like so:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/langref/mx/charts/AreaChart.html"&gt;mx.charts.AreaCharts&lt;/a&gt; --&gt; This class is an AreaChart using Flex Charting Components&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/Button.html"&gt;fl.controls.Button&lt;/a&gt; --&gt; This class is a Button Class from the AS3 components in Flash CS3.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/langref/flash/net/Socket.html"&gt;flash.net.Socket &lt;/a&gt;--&gt; This class provides binary socket support in Flash Player and Apollo. These intrinsic classes are built into the Flash Player and Apollo Runtime. These are typically fairly low level classes but are very useful if you know how to use them.&lt;br /&gt;&lt;br /&gt;More to come!&lt;br /&gt;&lt;br /&gt;Ted :)</content><link rel='alternate' type='text/html' href='http://api.onflex.org/2007/05/mx-fl-and-flash.html' title='mx.*, fl.*, and flash.*'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1511584671219632789&amp;postID=975976992166389746' title='5 Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/975976992166389746'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/975976992166389746'/><author><name>Ted Patrick</name></author></entry><entry><id>tag:blogger.com,1999:blog-1511584671219632789.post-262275727544286322</id><published>2007-05-02T15:30:00.000-07:00</published><updated>2007-05-02T15:49:34.340-07:00</updated><title type='text'>Hidden APIs of Flash, Flex, Flash Player, and Apollo</title><content type='html'>Hidden APIs? No Way! In Flash, Flex, Flash Player, and Apollo? You are kidding right? This blog was created to document the many great classes and APIs within Flex, Flash, Flash Player, and Apollo. These APIs are largely hidden to most developers and highlighting them will surface the features for use. It is actually pretty shocking to me to know that many of the best features of the Flash Platform remain largely hidden from view. Time to change that one API at a time.&lt;br /&gt;&lt;br /&gt;I am looking for some help with the Hidden API blog both as an author and out in the community. The plan is to get 10-20 great authors from around the community to cover the APIs they know on Flash, Flex, Flash Player , and Apollo. Additionally we are going to track all articles referencing the API post so if you have a different take on an API/Method/Property/Event, your blog post can extend the one here.&lt;br /&gt;&lt;br /&gt; I will kick things off this week with a few APIs that are a must know in the land of Flash.&lt;br /&gt;&lt;br /&gt;The Hidden API blog can be found:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://api.onflex.org"&gt;api.onflex.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://api.onflash.org"&gt;api.onflash.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://api.onapollo.org"&gt;api.onapollo.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More to come!&lt;br /&gt;&lt;br /&gt;Ted :)</content><link rel='alternate' type='text/html' href='http://api.onflex.org/2007/05/hidden-apis-of-flash-flex-flash-player.html' title='Hidden APIs of Flash, Flex, Flash Player, and Apollo'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1511584671219632789&amp;postID=262275727544286322' title='6 Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/262275727544286322'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1511584671219632789/posts/default/262275727544286322'/><author><name>Ted Patrick</name></author></entry></feed>