Essentials of Adobe Flash

baldknobdasypygalΛογισμικό & κατασκευή λογ/κού

4 Ιουλ 2012 (πριν από 5 χρόνια και 2 μήνες)

4.701 εμφανίσεις

PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information.
PDF generated at: Thu, 13 May 2010 23:03:06 UTC
Essentials of Adobe Flash

Contents
Articles
Adobe Flash
1
Action Message Format
14
ActionScript
16
ActionScrip 3
26
ActionScript code protection
26
Adobe Flash Media Live Encoder
31
Adobe Shockwave
34
Sandro Corsaro
37
FHTML
38
Fdb
39
Flash Chart
39
Flash Gallery
41
Adobe Flash Lite
42
Flash MP3 Player
45
Adobe Flash Player
47
Flash Video
54
Flash animation
59
Flash intro
64
FusionCharts
64
FutureSplash Animator
66
FutureWave Software
67
GameSWF
68
Gnash
69
JStart
72
Joe Paradise
73
Jugglor
75
Local Shared Object
76
MTASC
80
Magic gopher
81
Ming library
82
Open Dialect
83
Real Time Messaging Protocol
84
SWF2EXE Software
87
SWFFit
89

SWFObject
90
SWFTools
92
SWX Format
93
Scalable Inman Flash Replacement
94
Screensaver Creator
96
SWF
97
Swfdec
100
swfmill
101
Toufee
102
References
Article Sources and Contributors
104
Image Sources, Licenses and Contributors
107
Article Licenses
License
108

Adobe Flash
1
Adobe Flash
Developer(s)
Adobe Systems (formerly by Macromedia)
Written in
C++
Operating
system
Microsoft Windows, Mac OS X, Linux, Solaris, Symbian, Windows Mobile
Type
Multimedia
License
Proprietary EULA
Website
Adobe Flash Platform Homepage [1]
Adobe Flash (formerly Macromedia Flash) is a multimedia platform used to add animation, video, and interactivity
to web pages. Flash is frequently used for advertisements and games. More recently, it has been positioned as a tool
for the so-called "Rich Internet Application" ("RIA").
Flash manipulates vector and raster graphics to provide animation of text, drawings, and still images. It supports
bidirectional streaming of audio and video, and it can capture user input via mouse, keyboard, microphone, and
camera. Flash contains an Object-oriented language called ActionScript.
Flash content may be displayed on various computer systems and devices, using Adobe Flash Player, which is
available free for common web browsers, some mobile phones and a few other electronic devices (using Flash Lite).
History
Originally acquired by Macromedia, Flash was introduced in 1996, and is currently developed and distributed by
Adobe Systems. The precursor to the Flash application was SmartSketch, a drawing application for pen computers
running the PenPoint OS developed by Jonathan Gay, who began working on it in college and extended the idea for
Silicon Beach Software and its successors.[2] [3] When PenPoint failed in the marketplace, SmartSketch was ported to
Microsoft Windows and Mac OS. With the Internet becoming more popular, SmartSketch was re-released as
FutureSplash, a vector-based web animation in competition with Macromedia Shockwave. In 1995, SmartSketch
was further modified with frame-by-frame animation features and re-released as FutureSplash Animator on multiple
platforms.[4] The product was offered to Adobe and used by Microsoft in its early work with the Internet (MSN). In
1996, FutureSplash was acquired by Macromedia and released as Flash, contracting "Future" and "Splash".
Format
Flash files are in the SWF format, traditionally called "ShockWave Flash" movies, "Flash movies," or "Flash
games", usually have a .swf file extension, and may be used in the form of a Web-page plug-in, strictly "played" in a
standalone Flash Player, or incorporated into a self-executing Projector movie (with the .exe extension in Microsoft
Windows). Flash Video files[5] have a .flv file extension and are either used from within .swf files or played through
a flv-aware player, such as VLC, or QuickTime and Windows Media Player with external codecs added.
The use of vector graphics combined with program code allows Flash files to be smaller — and thus for streams to
use less bandwidth — than the corresponding bitmaps or video clips. For content in a single format (such as just text,
video, or audio), other alternatives may provide better performance and consume less CPU power than the
corresponding Flash movie, for example when using transparency or making large screen updates such as
photographic or text fades.

Adobe Flash
2
In addition to a vector-rendering engine, the Flash Player includes a virtual machine called the ActionScript Virtual
Machine (AVM) for scripting interactivity at run-time, support for video, MP3-based audio, and bitmap graphics. As
of Flash Player 8, it offers two video codecs: On2 Technologies VP6 and Sorenson Spark, and run-time support for
JPEG, Progressive JPEG, PNG, and GIF. In the next version, Flash is slated to use a just-in-time compiler for the
ActionScript engine.
Flash Player is a browser plugin, and cannot run within a usual e-mail client, such as Outlook. Instead, a link must
open a browser window. A Gmail labs feature allows playback of YouTube videos linked in emails.
Flash Video
Until the advent of HTML5, getting browsers to display video was a platform-specific issue, due to lack of a Web
standard for video and a common video codec, so developers employed Flash's proprietary technology, which makes
multimedia embedded in this way either unavailable or notoriously difficult to access for those without the Flash
Player.
A web standard for video is in development for HTML 5.
Flash Audio
Flash Audio is most commonly encoded in MP3 or AAC (Advanced Audio Coding) however it does also support
ADPCM, Nellymoser (Nellymoser Asao Codec) and Speex audio codecs. Flash allows sample rates of
11,22,44.1 kHz. It does not support 48 kHz audio sample rate which is the standard Tv, DVD sample rate.
On August 20, 2007, Adobe announced on its blog that with Update 3 of Flash Player 9, Flash Video will also
support some parts of the MPEG-4 international standards.[6] Specifically, Flash Player will have support for video
compressed in H.264 (MPEG-4 Part 10), audio compressed using AAC (MPEG-4 Part 3), the F4V, MP4 (MPEG-4
Part 14), M4V, M4A, 3GP and MOV multimedia container formats, 3GPP Timed Text specification (MPEG-4 Part
17) which is a standardized subtitle format and partial parsing support for the 'ilst' atom which is the ID3 equivalent
iTunes uses to store metadata. MPEG-4 Part 2 and H.263 will not be supported in F4V file format. Adobe also
announced that they will be gradually moving away from the FLV format to the standard ISO base media file format
(MPEG-4 Part 12) owing to functional limits with the FLV structure when streaming H.264. The final release of the
Flash Player supporting some parts of MPEG-4 standards had become available in Fall 2007.[7]
Authoring tools
Adobe Flash CS5 Professional (11.0.0.485) under Windows 7.
Developer(s)
Adobe Systems (formerly by Macromedia)
Written in
C++
Operating
system
Microsoft Windows and Mac OS X
Type
Multimedia

Adobe Flash
3
License
Proprietary EULA
Website
Adobe Flash Professional Homepage [8]
The Adobe Flash Professional multimedia authoring program is used to create content for the Adobe Engagement
Platform, such as web applications, games and movies, and content for mobile phones and other embedded devices.
History
Release
Year
Description
FutureSplash
Animator
1996
initial version of Flash with basic editing tools and a timeline
Macromedia
Flash 1
1996
a Macromedia re-branded version of the FutureSplash Animator
Macromedia
Flash 2
1997
Released with Flash Player 2, new features included: the object library
Macromedia
Flash 3
1998
Released with Flash Player 3, new features included: the movieclip element, JavaScript
plug-in integration, transparency and an external stand alone player
Macromedia
Flash 4
1999
Released with Flash Player 4, new features included: internal variables, an input field,
advanced ActionScript, and streaming MP3
Macromedia
Flash 5
2000
Released with Flash Player 5, new features included: ActionScript 1.0 (based on
ECMAScript, making it very similar to JavaScript in syntax), XML support, Smartclips (the
precursor to components in Flash), HTML text formatting added for dynamic text
Macromedia
Flash MX
2002
Released with Flash Player 6, new features included: a video codec (Sorenson Spark),
Unicode, v1 UI Components, compression, ActionScript vector drawing API
Macromedia
Flash MX
2004
2003
Released with Flash Player 7, new features included: Actionscript 2.0 (which enabled an
object-oriented programming model for Flash, although it lacked the Script assist function of
other versions, meaning Actionscript could only be typed out manually), behaviors,
extensibility layer (JSAPI), alias text support, timeline effects. Macromedia Flash MX
Professional 2004 included all Flash MX 2004 features, plus: Screens (forms for non-linear
state-based development and slides for organizing content in a linear slide format like
PowerPoint), web services integration, video import wizard, Media Playback components
(which encapsulate a complete MP3 and/or FLV player in a component that may be placed in
an SWF), Data components (DataSet, XMLConnector, WebServicesConnector,
XUpdateResolver, etc.) and data binding APIs, the Project Panel, v2 UI components, and
Transition class libraries.
Macromedia
Flash 8
2005
Macromedia Flash Basic 8, a less feature-rich version of the Flash authoring tool targeted at
new users who only want to do basic drawing, animation and interactivity. Released with
Flash Player 8, this version of the product has limited support for video and advanced
graphical and animation effects. Macromedia Flash Professional 8 added features focused on
expressiveness, quality, video, and mobile authoring. New features included Filters and blend
modes, easing control for animation, enhanced stroke properties (caps and joins), object-based
drawing mode, run-time bitmap caching, FlashType advanced anti-aliasing for text, On2 VP6
advanced video codec, support for alpha transparency in video, a stand-alone encoder and
advanced video importer, cue point support in FLV files, an advanced video playback
component, and an interactive mobile device emulator.

Adobe Flash
4
Adobe Flash
CS3
Professional
2007
Flash CS3 is the first version of Flash released under the Adobe name. CS3 features full
support for ActionScript 3.0, allows entire applications to be converted into ActionScript,
adds better integration with other Adobe products such as Adobe Photoshop, and also
provides better Vector drawing behavior, becoming more like Adobe Illustrator and Adobe
Fireworks.
Adobe Flash
CS4
Professional
2008
Contains inverse kinematics (bones), basic 3D object manipulation, object-based animation, a
text engine, and further expansions to ActionScript 3.0. CS4 allows the developer to create
animations with many features absent in previous versions.
Adobe Flash
CS5
Professional
2010
Flash CS5 was released on April 12, 2010 and launched for trialling and normal buying on
April 30, 2010. Flash CS5 Professional includes support for publishing iPhone applications.[9]
However, on April 8, 2010 Apple changed the terms of its Developer License to effectively
ban the use of the Flash-to-iPhone compiler[10] and on April 20, 2010 Adobe announced that
they will be making no additional investments in targeting the iPhone and iPad in Flash
CS5.[11] Other features of Flash CS5 are a new text engine (TLF), further improvement to
inverse kinematics, and the Code Snippets panel.
Third-party tools
Open Source projects like Ajax Animator [12] and the (now defunct) UIRA aim to create a flash development
environment, complete with a graphical user environment. Alternatively, programs such as swfmill, SWFTools, and
MTASC provide tools to create SWF files, but do so by compiling text, actionscript or XML files into Flash
animations. It is also possible to create SWF files programmatically using the Ming library, which has interfaces for
C, PHP, C++, Perl, Python, and Ruby. haXe is an open source, high-level object-oriented programming language
geared towards web-content creation that can compile Flash files.
Many shareware developers produced Flash creation tools and sold them for under US$50 between 2000 and 2002.
In 2003 competition and the emergence of free Flash creation tools had driven many third-party Flash-creation
tool-makers out of the market, allowing the remaining developers to raise their prices, although many of the products
still cost less than US$100 and support ActionScript. As for open source tools, KToon can edit vectors and generate
SWF, but its interface is very different from Macromedia's. Another, more recent example of a Flash creation tool is
SWiSH Max made by an ex-employee of Macromedia. Toon Boom Technologies also sells a traditional animation
tool, based on Flash.
In addition, several programs create .swf-compliant files as output from their programs. Among the most famous of
these are Screencast tools, which leverage the ability to do lossless compression and playback of captured screen
content in order to produce demos, tutorials, or software simulations of programs. These programs are typically
designed for use by non-programmers, and create Flash content quickly and easily, but cannot actually edit the
underlying Flash code (i.e. the tweening and transforms, etc.) Screencam is perhaps the oldest screencasting
authoring tool to adopt Flash as the preferred output format, having been developed since the mid-90s. That
screencasting programs have adopted Flash as the preferred output is testament to Flash's presence as a ubiquitous
cross-platform animation file format.
Other tools are focused on creating specific types of Flash content. Anime Studio is a 2D animation software
package specialized for character animation which creates SWF files. Express Animator is similarly aimed
specifically at animators. Question Writer publishes its quizzes to Flash file format.
Users who are not programmers or web designers will also find on-line tools that allow them to build full
Flash-based web sites. One of the oldest services available (1998) is FlashToGo [13]. Such companies provide a wide
variety of pre-built models (templates) associated to a Content Management System that empowers users to easily
build, edit and publish their web sites. Other sites, that allows for greater customization and design flexibility are
Wix.com and CirclePad.

Adobe Flash
5
Adobe wrote a software package called Adobe LiveMotion, designed to create interactive animation content and
export it to a variety of formats, including SWF. LiveMotion went through two major releases, but failed to gain any
notable user base.
In February 2003, Macromedia purchased Presedia, which had developed a Flash authoring tool that automatically
converted PowerPoint files into Flash. Macromedia subsequently released the new product as Breeze, which
included many new enhancements. In addition, (as of version 2) Apple's Keynote presentation software also allows
users to create interactive presentations and export to SWF.
Installed user base
Flash as a format has become very widespread on the desktop market and created a market dominance. General web
statistics company estimates availability at 95%,[14] while Adobe claims that 98 percent of US Web users and 99.3
percent of all Internet desktop users have the Flash Player installed,[15] [16] with 92%-95%[17] (depending on region)
having the latest version. Numbers vary depending on the detection scheme and research demographics.
The Adobe Flash Player exists for a variety of systems and devices: Windows, Mac OS 9/X, Linux, Solaris, HP-UX,
Pocket PC/Windows CE, OS/2, QNX, Symbian, Palm OS, BeOS, and IRIX, although the performance is typically
best on Windows (see Performance). For compatibility with devices (embedded systems), see Macromedia Flash
Lite.
Among mobile devices, Flash has less penetration because of Apple's policy of not bundling or allowing third party
runtimes. The iPhone has captured more than 60% of global smartphone web traffic, and the iPod touch makes up
more than 95% of all "Mobile Internet Device" traffic. This severely impairs Adobe's ability to market Flash as being
a ubiquitous mobile platform. However, Flash support has been announced for a number of competing mobile
platforms, including the next version of Android.[18]
64-bit support
Adobe provides an experimental 64-bit build of Flash Player 10. It is only for Linux, and only for x86-64
processors.[19] [20] The first release of a 64-bit Adobe Flash Player was on November 11, 2008.[21]
Adobe decided to support 64-bit Linux due to numerous requests[19] . Although it is possible to run 32-bit browser
plugins in a 32-bit browser on a 64-bit system, alternatively by using an intermediate layer between browser and
plugin (such as nspluginwrapper), the solution was impractical for users.[22] Adobe expects final 64-bit support for
Windows, Macintosh and Linux in an upcoming major release of Adobe Flash Player.[19] The official 32-bit player is
still distributed in 64-bit Linux distributions e.g. Ubuntu, OpenSUSE, of which some users have reported problems
with the 32-bit player on some websites.[23] [24] [25] Affected users can install the 64-bit player manually.[26]
Flash blocking in web browsers
Some web browsers default to not play Flash content before the user clicks on it, e.g. Konqueror, K-Meleon.
Equivalent "Flash blocker" extensions also exist for many popular browsers: Firefox has NoScript and Flashblock,
Opera has an extension also called Flashblock. Using Opera Turbo requires user clicks to play flash content. Internet
Explorer has Foxie, which contains a number of features, one of them also named Flashblock. WebKit-based
browsers under Mac OS X have ClickToFlash.[27]

Adobe Flash
6
Related file formats and extensions
Extension
Explanation
.swf
.swf files are completed, compiled and published files that cannot be edited with Adobe Flash. However, many '.swf decompilers' do exist. Attempting to
import .swf files using Flash allows it to retrieve some assets from the .swf, but not all.
.FXG
FXG is an unified xml file format being developed by Adobe for Flex, Flash, Photoshop and other applications.
.fla
.fla files contain source material for the Flash application. Flash authoring software can edit FLA files and compile them into .swf files. The Flash source
file format is currently a binary file format based on the Microsoft Compound File Format. In Flash Pro CS5, the fla file format is a zip container of an
XML-based project structure.
.xfl
.xfl files are XML-based project files that are equivalent to the binary .fla format. Flash authoring software uses XFL as an exchange format in Flash CS4. It
imports XFL files that are exported from InDesign and AfterEffects. In Flash Pro CS5, the xfl file is a key file which opens the "uncompressed FLA" file,
which is a hierarchy of folders containing XML and binary files.
.as
.as files contain ActionScript source code in simple source files. FLA files can also contain Actionscript code directly, but separate external .as files often
emerge for structural reasons, or to expose the code to versioning applications. They sometimes use the extension .actionscript
.mxml
.mxml files are used in conjunction with ActionScript files (and .css files), and offer a markup-language-style syntax (like HTML) for designing the GUI in
Flex. Each MXML file creates a new class that extends the class of the root tag, and adds the nested tags as children (if they are descendants of
UIComponent) or members of the class.
.swd
.swd files are temporary debugging files used during Flash development. Once finished developing a Flash project these files are not needed and can be
removed.
.asc
.asc files contain Server-Side ActionScript, which is used to develop efficient and flexible client-server Macromedia Flash Communication Server MX
applications.
.abc
.abc files contain actionscript bytecode used by the Actionscript Virtual Machine AVM (Flash 8 and prior), and AVM2 (Flash 9 or later).
.flv
.flv files are Flash video files, as created by Adobe Flash, ffmpeg, Sorenson Squeeze, or On2 Flix. The audio and video data within FLV files are encoded in
the same way as they are within SWF files.
.f4v
.f4v files are similar to MP4 files and can be played back by Flash Player 9 Update 3 and above. F4V file format is second container format for Flash video
and it differs from FLV file format. It is based on the ISO base media file format.[28] [29]
.f4p
.f4p files are F4V files with digital rights management.[29]
.f4a
.f4a files are F4V files that contain only audio streams.[29]
.f4b
.f4b files are F4V audio book files.[29]
.swc
.swc files are used for distributing components; they contain a compiled clip, the component's ActionScript class file, and other files that describe the
component.
.jsfl
.jsfl files are used to add functionality in the Flash Authoring environment; they contain JavaScript code and access the Flash JavaScript API.
.swt
.swt files are 'templatized' forms of .swf files, used by Macromedia Generator
.flp
.flp files are XML files used to reference all the document files contained in a Flash Project. Flash Projects allow the user to group multiple, related files
together to assist in Flash project organization, compilation and build.
.spl
.spl files are FutureSplash documents.
.aso
.aso files are cache files used during Flash development, containing compiled ActionScript byte code. An ASO file is recreated when a change in its
corresponding class files is detected. Occasionally the Flash IDE does not recognize that a recompile is necessary, and these cache files must be deleted
manually. They are located in %USERPROFILE%\Local Settings\Application Data\Macromedia\Flash8\en\Configuration\Classes\aso on Win32 / Flash8.
.sol
.sol files are created by Adobe Flash Player to hold Local Shared Objects (data stored on the system running the Flash player).

Adobe Flash
7
Competition
Microsoft Silverlight
In recent years, Microsoft Silverlight has emerged as a strong competitor to Flash. While not yet as prevalent on web
sites as Flash, Silverlight has been used to provide video streaming for many high profile events, including the 2008
Summer Olympics in Beijing,[30] the 2010 Winter Olympics in Vancouver,[31] and the 2008 conventions for both
major political parties in the United States.[32] Silverlight is also used by Netflix for its instant video streaming
service.[33]
Open standard alternatives
The W3C's SVG and SMIL standards are seen as the closest competitors of Flash.[34] Adobe formerly developed and
distributed the 'Adobe SVG Viewer' client plug-in for MS Internet Explorer, but discontinued support and
distribution on January 1, 2009.[35] It has been noted by industry commentators that this was probably no
coincidence at a time when Adobe moved from competing with Macromedia's Flash to owning the technology
itself.[36] Meanwhile, Opera has supported SVG since version 8 and Safari has since version 3,[37] and Mozilla
Firefox's built-in support for SVG continues to grow.[38] [39]
UIRA was a free software project that intended to become a complete replacement for Adobe Flash. The project
collapsed in mid 2007, though people are now discussing reviving or continuing it,[40] and a few other projects like
Ajax Animator [12] still exist.
HTML 5 is gaining ground as a competitor to Flash: the canvas element enables animation, and scripting can be
synchronized with audio and video element timeupdate events.
Third-party implementation
Specifications
In October 1998, Macromedia disclosed the Flash Version 3 Specification to the world on its website. It did this in
response to many new and often semi-open formats competing with SWF, such as Xara's Flare and Sharp's Extended
Vector Animation formats. Several developers quickly created a C library for producing SWF. In February 1999, the
company introduced MorphInk 99, the first third-party program to create SWF files. Macromedia also hired
Middlesoft to create a freely available developers' kit for the SWF file format versions 3 to 5.
Macromedia made the Flash Files specifications for versions 6 and later available only under a non-disclosure
agreement, but they are widely available from various sites.
In April 2006, the Flash SWF file format specification was released with details on the then newest version format
(Flash 8). Although still lacking specific information on the incorporated video compression formats (On2, Sorenson
Spark, etc.), this new documentation covered all the new features offered in Flash v8 including new ActionScript
commands, expressive filter controls, and so on. The file format specification document is offered only to developers
who agree to a license agreement that permits them to use the specifications only to develop programs that can
export to the Flash file format. The license forbids the use of the specifications to create programs that can be used
for playback of Flash files. The Flash 9 specification was made available under similar restrictions.[41]
In June 2009, Adobe launched the Open Screen Project (Adobe link [42]), which made the SWF specification
available without restrictions. Previously, developers couldn't use the specification for making SWF-compatible
players, but only for making SWF-exporting authoring software. The specification still omits information on codecs
such as Sorenson Spark, however.[43]

Adobe Flash
8
Playback
Since Flash files do not depend on an open standard such as SVG, this reduces the incentive for non-commercial
software to support the format, although there are several third party tools which use and generate the SWF file
format. Flash Player cannot ship as part of a pure open source, or completely free operating system, as its
distribution is bound to the Macromedia Licensing Program [44] and subject to approval.
There is, as of late 2008, no complete free software replacement which offers all the functionality of the latest
version of Adobe Flash Player.
Gnash is an active project that aims to create a free player and browser plugin for the Adobe Flash file format and so
provide a free alternative to the Adobe Flash Player under the GNU General Public License. Despite potential patent
worries because of the proprietary nature of the files involved,[45] Gnash supports most SWF v7 features and some
SWF v8 and v9.[46] [47] Gnash runs on Windows, Linux and other operating systems on 32-bit, 64-bit and other
architectures.
Swfdec is another open-source flash player available for Linux, FreeBSD and OpenBSD. See also SWFOpener.
Scaleform GFx is a commercial alternative Flash player that features full hardware acceleration using the GPU and
has high conformance up to Flash 8 and AS2. Scaleform GFx is licensed as a game middleware solution and used by
many PC and console 3D games for user interfaces, HUDs, mini games, and video playback.
rtmpdump [48] is an open source software implementation of an RTMP client, Flash's own streaming protocol.
rtmpdump was removed from Sourceforge on request by Adobe.[49]
flvstreamer [50] is an open source software implementation of an RTMP client, Flash's own streaming protocol. It is a
fork of rtmpdump which has all the cryptographic support (i.e. RTMPE and SWF verification) removed from the
code.
Critcism
Security
Of the 321 holes Symantec documented in 2009 affecting browser plug-ins, 134 were for ActiveX technologies, 84
were for Java SE (Standard Edition), 49 were for Adobe Reader, 27 were for QuickTime, 23 were for Adobe Flash
Player, and 4 for Firefox extensions.[51]
Flash's security record[52] has caused several security experts to recommend to not install Flash or to block it[53] .
The US-CERT recommends to block Flash using NoScript[54] . Charlie Miller recommended "not to install Flash"[55]
at the computer security conference CanSecWest. As of March 27, 2010, The Flash Player has 75 CVE entries[56] ,
34 of which have been ranked with a high severity (leading to arbitrary code execution), and 40 ranked medium. In
February 2010, Adobe officially apologized[57] for not fixing a known crash for over 1 year.
Symantec's Internet Security Threat Report[58] states that a remote code execution in Adobe Reader and Flash
Player[59] was the second most attacked vulnerability in 2009. The same report also recommends to employ browser
add-ons to wherever possible to disable Adobe Flash Player when visiting untrusted sites. McAfee predicts that
Adobe software, especially Reader and Flash, will be the primary target for attacks in 2010[60] . Adobe applications
had already become the most popular client-software targets for attackers during the last quarter of 2009[61] .
Local Shared Objects ("Flash cookies")
Like the HTTP cookie, a flash cookie (also known as Local Shared Object) can be used to save application data.
Flash cookies are not shared across domains. An August 2009 study by the Social Science Research Network found
that 50% of websites using Flash were also employing flash cookies, yet privacy policies rarely disclosed them, and
user controls for privacy preferences were lacking.[62] Most browsers' cache and history suppress or delete functions
do not affect Flash Player's writing Local Shared Objects to its own cache, and the user community is much less

Adobe Flash
9
aware of the existence and function of Flash cookies than HTTP cookies[63] . Thus, users having deleted HTTP
cookies and purged browser history files and caches may believe that they have purged all tracking data from their
computers when in fact Flash browsing history remains. Adobe's own Flash Website Storage Settings panel [64], a
submenu of Adobe's Flash Settings Manager web application [65], and other editors and toolkits can manage settings
for and delete Flash Local Shared Objects[66] .
Performance

Any Flash player has to be able to animate on top of video renderings, which makes hardware accelerated video
rendering at least not as straightforward as with a purpose built multimedia player.[67] Therefore, even when only
displaying video, Flash players are more resource intensive than dedicated video player software.

Comparisons have shown Adobe Flash Player to perform better on Windows than Mac OSX and Linux with the
same hardware.[68] [69]
Accessibility
Using Flash tends to break conventions associated with normal HTML pages. Selecting text, scrolling,[70] form
control and right-clicking act differently than with a regular HTML webpage. Many such interface unexpectancies
are fixable by the designer. Usability expert Jakob Nielsen published an Alertbox in 2000 entitled, Flash: 99% Bad
which listed issues like this.[71] Some problems have been improved upon since Nielsen's complaints:

Text size can be controlled using full page zoom, found in many modern browsers.

It has been possible for authors to include alternative text in Flash since Flash Player 6. This accessibility feature
is compatible only with certain screen readers and only under Windows.[72]
The US Justice Department has stated in regard to the Americans with Disabilities Act of 1990:[73]
Covered entities under the ADA are required to provide effective communication, regardless of whether
they generally communicate through print media, audio media, or computerized media such as the
Internet. Covered entities that use the Internet for communications regarding their programs, goods, or
services must be prepared to offer those communications through accessible means as well.
Open web versus proprietary plugins
A website of the popular company, as seen by the
visitor using the system without the proper Flash
plugin support.
The proprietary nature of Flash is a concern to advocates of open
standards and free software. Its widespread use has, according to some
such observers, harmed the otherwise open nature of the World Wide
Web.[74] A response may be seen in Adobe's Open Screen Project.
Representing the free software movement, Richard Stallman stated in a
speech in October 2004 that:[75]
The use of Flash in websites is a major problem for our
community.
Stallman's argument then was that no free players were comparatively
good enough. As of February 2010, Gnash and Swfdec have seen very
limited success in competing with Adobe's player. Many important and
popular websites require users to have a Flash player, sometimes with no fallback for non-Flash web users.
Therefore, the lack of a good free Flash player is arguably an obstacle to enjoying the web with free software, and
the aforementioned ubiquity of Flash makes the problem very evident for anyone who tries. The continual high
ranking of Gnash on the Free Software Foundation's list of high priority projects[76] might indicate the severity of the
problem, as judged by the free software community.

Adobe Flash
10
Recent developments
Adobe Labs (previously called Macromedia Labs) is a source for news and pre-release versions of emerging
products and technologies from Adobe. Most innovations, such as Flash 9, Flex 3, and ActionScript 3.0 have all been
discussed and/or trialled on the site.
One area Adobe is focusing on (as of February 2009) is the deployment of Rich Internet Applications (RIAs). To this
end, they released Adobe Integrated Runtime (AIR), a cross-platform runtime environment which can be used to
build, using Adobe Flash, rich Internet applications that can be deployed as a desktop application. It recently
surpassed 100 million installations worldwide.[77] . This is mainly due to the fact that it is installed silently when
Acrobat Reader is installed. Many users are unaware of its residence on their system.
Two additional components designed for large-scale implementation have been proposed by Adobe for future
releases of Flash: first, the option to require an ad to be played in full before the main video piece is played; and
second, the integration of digital rights management (DRM) capabilities. This way Adobe can give companies the
option to link an advertisement with content and make sure that both are played and remain unchanged.[78] The
current status of these two projects is unclear.
Flash Player for smart phones is expected to be available to handset manufacturers at the end of 2009.[79]
Open Screen Project
On May 1, 2008 Adobe announced Open Screen Project, which hopes to provide a consistent application interface
across devices such as personal computers, mobile devices and consumer electronics.[80] When the project was
announced, several goals were outlined: the abolition of licensing fees for Adobe Flash Player and Adobe Integrated
Runtime, the removal of restrictions on the use of the Shockwave Flash (SWF) and Flash Video (FLV) file format,
the publishing of application programming interfaces for porting Flash to new devices and the publishing of The
Flash Cast protocol and Action Message Format (AMF), which let Flash applications receive information from
remote databases.[80]
As of February 2009, the specifications removing the restrictions on the use of SWF and FLV/F4V specs have been
published.[81] The Flash Cast protocol—now known as the Mobile Content Delivery Protocol—and AMF protocols
have also been made available,[81] with AMF available as an open source implementation, BlazeDS. Work on the
device porting layers is in the early stages. Adobe intends to remove the licensing fees for Flash Player and Adobe
AIR for devices at their release for the Open Screen Project.
The list of mobile device providers who have joined the project includes Palm, Motorola and Nokia,[82] who,
together with Adobe, have announced a $10 million Open Screen Project fund.[83]
See also
Adobe Flash

SWF file format, the files generated by the Flash application and played by Flash Player.

ActionScript

ActionScript code protection

Adobe Flash Player, the runtime that executes and plays back Flash movies.

Adobe Flash Lite, a lightweight version of Flash Player for devices that lack the resources to run regular Flash
movies such as mobile phones, some laptop computers and other portable devices.

Flash Video

Saffron Type System, the anti-aliased text-rendering engine used in version 8 onwards.

Local Shared Object

SWFObject, a JavaScript library used to embed Flash content into webpages.

Flash CMS, content management for Flash content.

Adobe Flash
11
Other

Ogg Theora in HTML 5

HTML5 video

Microsoft Silverlight

JavaFX

OpenLaszlo

Synfig
External links

Adobe Flash Platform Blog [84] - official news channel about Adobe Flash

Adobe Flash for MS WinXP/Vista and Mac OS X [85]

Flash plug-in for MS Windows 9x / Macintosh OSX 10.1-10.3 / Red Hat Enterprise Linux 3 and 4 [86]
Communities

Adobe's Flash Forum [87]

FlexFlashForum.com - Flash Forum [88]

Actionscript.org - Community Resource / Tutorials [89]
References
[1]
http:/ / www. adobe. com/ flashplatform/
[2]
Waldron, Rick (2006-08-27). "The Flash History" (http:/ / www. flashmagazine. com/ 413. htm). Flashmagazine. . Retrieved 2001-06-18.
[3]
Gay, Jonathan (2001). "The History of Flash" (http:/ / www. adobe. com/ macromedia/ events/ john_gay/ page02. html). Adobe Systems Inc..
. Retrieved 2009-10-18.
[4]
"Grandmasters of Flash: An Interview with the Creators of Flash" (http:/ / coldhardflash. com/ 2008/ 02/
grandmasters-of-flash-an-interview-with-the-creators-of-flash. html). ColdHardFlash.com. . Retrieved 2008-02-12.
[5]
FLV and F4V Video File Format Specification Version 9 (http:/ / www. adobe. com/ devnet/ flv/ pdf/ video_file_format_spec_v9. pdf)
F4V is based on ISO base media file format standard: freely available ISO standards (http:/ / standards. iso. org/ ittf/
PubliclyAvailableStandards/ c051533_ISO_IEC_14496-12_2008. zip), and also available via subscription (http:/ / www. iso. org/ iso/
catalogue_detail?csnumber=41828)
[6]
"What just happened to video on the web" (http:/ / www. kaourantin. net/ 2007/ 08/ what-just-happened-to-video-on-web_20. html). Adobe. .
[7]
Adobe Press release on MPEG-4 support in Flash Player 9 (http:/ / www. adobe. com/ aboutadobe/ pressroom/ pressreleases/ 200708/
082107FlashPlayer. html)
[8]
http:/ / www. adobe. com/ products/ flash/ flashpro/
[9]
"Adobe Labs - Adobe Flash Professional CS5: Applications for iPhone" (http:/ / labs. adobe. com/ technologies/ flashcs5/ appsfor_iphone/ ).
Adobe. . Retrieved 2010-03-02.
[10]
"New iPhone Developer Agreement Bans the Use of Adobe’s Flash-to-iPhone Compiler" (http:/ / daringfireball. net/ 2010/ 04/
iphone_agreement_bans_flash_compiler). Daring Fireball. . Retrieved 2010-04-22.
[11]
"On Adobe, Flash CS5 and iPhone Applications" (http:/ / www. mikechambers. com/ blog/ 2010/ 04/ 20/
on-adobe-flash-cs5-and-iphone-applications/ ). Mike Chambers. . Retrieved 2010-04-22.
[12]
http:/ / osflash. org/ ajaxanimator
[13]
http:/ / www. flashtogo. com/
[14]
"Web Browser Plugin Market Share" (http:/ / statowl. com/ plugin_overview. php). StatOwl. . Retrieved 2009-08-18.
[15]
98%: NPD study (http:/ / www. macromedia. com/ software/ player_census/ npd/ )
[16]
99.3%: Millward Brown survey, conducted June 2009. "Flash Player Statistics" (http:/ / www. adobe. com/ products/ player_census/
flashplayer/ ). Adobe Systems. . Retrieved 2009-06-04.
[17]
"Adobe Flash Player Version Penetration" (http:/ / www. adobe. com/ products/ player_census/ flashplayer/ version_penetration. html).
Adobe Systems. . Retrieved 2009-06-04.
[18]
"Andy Rubin says Flash is coming in Froyo version of Android operating system" (http:/ / www. androidcentral. com/
andy-rubin-says-flash-coming-froyo-version-android-operating-system)
[19]
http:/ / labs. adobe. com/ technologies/ flashplayer10/ faq. html
[20]
http:/ / blogs. adobe. com/ penguin. swf/ 2008/ 11/
[21]
Huang, Emmy (2008-11-17). "SWF 10 spec available AND Flash Player alpha for 64-bit Linux on Labs" (http:/ / weblogs. macromedia.
com/ emmy/ archives/ 2008/ 11/ swf_10_spec_available_and_flash_player_alpha_for_64-bit_linux_on_labs. html). Adobe Systems. .

Adobe Flash
12
[22]
"Linus struggles with Flash Player" (https:/ / bugzilla. redhat. com/ show_bug. cgi?id=439858). Fedora bugtracker. . Retrieved 2009-02-21.
[23]
Installing Adobe Flash 64 bit in Ubuntu 9.10 Karmic Koala (http:/ / adammichaelroach. com/ blog/
110309-installing-adobe-flash-64-bit-ubuntu-910-karmic-koala)
[24]
http:/ / nocturn. vsbnet. be/ content/ flash-problems-64-bit-linux
[25]
http:/ / www. mat-wright. com/ 2010/ 02/ flash-player-10-for-64-bit-linux. html
[26]
http:/ / nxadm. wordpress. com/ 2009/ 04/ 26/ install-64-bit-adobe-flash-player-on-ubuntu-904/
[27]
"ClickToFlash" (http:/ / rentzsch. github. com/ clicktoflash/ ). . Retrieved 2009-10-18.
[28]
Adobe Systems Incorporated (November 2008) (PDF). Video File Format Specification, Version 10 (http:/ / www. adobe. com/ devnet/ flv/
pdf/ video_file_format_spec_v10. pdf). Adobe Systems Incorporated. . Retrieved 2009-08-03.
[29]
New File Extensions and MIME Types (http:/ / www. kaourantin. net/ 2007/ 10/ new-file-extensions-and-mime-types. html)
[30]
"Microsoft Silverlight Gets a High Profile Win: 2008 Beijing Olympics" (http:/ / techcrunch. com/ 2008/ 01/ 06/
microsoft-silverlight-gets-a-high-profile-win-2008-bejing-olympics/ ). . Retrieved 2010-02-23.
[31]
"Microsoft Wins The 2010 Olympics For Silverlight" (http:/ / www. businessinsider. com/
microsoft-wins-the-2010-olympics-for-silverlight-2009-3). . Retrieved 2010-02-23.
[32]
"Microsoft Working to Make Political Conventions Unconventional" (http:/ / www. microsoft. com/ presspass/ features/ 2008/ aug08/
08-19conventions. mspx). . Retrieved 2010-02-23.
[33]
"Netflix Begins Roll-Out of 2nd Generation Media Player for Instant Streaming on Windows PCs and Intel Macs" (http:/ / netflix.
mediaroom. com/ index. php?s=43& item=288). . Retrieved 2010-02-23.
[34]
XML.com: Picture Perfect (http:/ / www. xml. com/ pub/ a/ 2001/ 09/ 12/ svg. html)
[35]
"Adobe to Discontinue Adobe SVG Viewer" (http:/ / www. adobe. com/ svg/ eol. html). Adobe Systems. . Retrieved 2007-06-18.
[36]
"Adobe, ‘Rich Internet Applications’ and Standards" (http:/ / www. webstandards. org/ 2005/ 04/ 19/
adobe-rich-internet-applications-and-standards/ ). Web Standards Project. April 19, 2005. . Retrieved 2010-02-25.
[37]
"Opera" (http:/ / wiki. svg. org/ Opera). Svg wiki. Svg.org. 2006-12-27. . Retrieved 2007-06-18.
[38]
Quint, Antoine (2006-07-13). "First Firefox 2.0 Beta Released" (http:/ / svg. org/ story/ 2006/ 7/ 13/ 85643/ 0175). Svg.org. . Retrieved
2007-06-18.
[39]
"SVG improvements in Firefox 3" (https:/ / developer. mozilla. org/ en/ docs/ SVG_improvements_in_Firefox_3). Mozilla Developer
Center. Mozilla. 2008-06-17. . Retrieved 2008-07-20.
[40]
"UIRA, Unfreeze" (http:/ / www. unfreeze. net/ ?page_id=52). unfreeze.net. 2008-04-20. . Retrieved 2008-04-21.
[41]
"Adobe File Format Specification FAQ" (http:/ / www. adobe. com/ licensing/ developer/ fileformat/ faq/ ). Adobe Systems. . Retrieved
2007-11-15.
[42]
http:/ / www. adobe. com/ openscreenproject/ faq/
[43]
"Free Flash community reacts to Adobe Open Screen Project" (http:/ / www. openmedianow. org/ ?q=node/ 21). . Retrieved 2008-11-29.
[44]
http:/ / www. macromedia. com/ software/ flash/ open/ licensing/
[45]
Hudson, Paul (July 2008). "Quick as a Gnash". Linux Format (107): 48–49. "What happened is this little thing called "software patents".
When you use MP3 or FLV, they're proprietary. And although we use FFMPEG and Gstreamer - we actually support all these codecs - we
can't distribute Gnash that way. ...of course the OLPC project cannot legally redistribute the codecs. ...Gnash fully supports patent-free codecs
such as Ogg Vorbis and Theora and Direc and stuff — Rob Savoye.".
[46]
"Gnash Introduction" (http:/ / www. gnu. org/ software/ gnash/ ). Free Software Foundation, Inc.. 2008-06-26. . Retrieved 2008-07-20.
[47]
Rob Savoye, Ann Barcomb (June 2007). "Gnash Manual version 0.4.0" (http:/ / www. gnu. org/ software/ gnash/ manual/ gnash.
html#flashsupport). Free Software Foundation. . Retrieved 2007-08-15.
[48]
http:/ / rtmpdump. mplayerhq. hu/
[49]
"Adobe requests rtmpdump removed from Sourceforge" (http:/ / www. chillingeffects. org/ anticircumvention/ notice.
cgi?NoticeID=25159). 2009-05-08. . Retrieved 2009-11-20.
[50]
http:/ / savannah. nongnu. org/ projects/ flvstreamer
[51]
http:/ / news. cnet. com/ 8301-27080_3-20002879-245. html
[52]
"Security bulletins and advisories" (http:/ / www. adobe. com/ support/ security/ #flashplayer). . Retrieved 2010-03-27.
[53]
"Expert says Adobe Flash policy is risky" (http:/ / news. cnet. com/ 8301-27080_3-10396326-245. html). 2009-11-12. . Retrieved
2010-03-27.
[54]
"Securing Your Web Browser" (http:/ / www. us-cert. gov/ reading_room/ securing_browser/ ). . Retrieved 2010-03-27.
[55]
"Pwn2Own 2010: interview with Charlie Miller" (http:/ / www. oneitsecurity. it/ 01/ 03/ 2010/ interview-with-charlie-miller-pwn2own/ ).
2010-03-01. . Retrieved 2010-03-27.
[56]
"SecurityFocus search results for Adobe Flash Player Vulnerabilities" (http:/ / www. securityfocus. com/ cgi-bin/ index. cgi?o=0& l=100&
c=12& op=display_list& vendor=Adobe& title=Flash Player). . Retrieved 2010-03-27.
[57]
"Flash Bug Report" (http:/ / blogs. adobe. com/ emmy/ archives/ 2010/ 02/ flash_bug_repor. html). 2010-02-06. . Retrieved 2010-03-27.
[58]
"Internet Security Threat Report: Volume XV: April 2010" (http:/ / www4. symantec. com/ Vrt/ wl?tu_id=SUKX1271711282503126202).
Symantec. April 2010. pp. 37,40,42. . Retrieved 2010-05-09.
[59]
"Adobe Acrobat, Reader, and Flash Player Remote Code Execution Vulnerability" (http:/ / www. securityfocus. com/ bid/ 35759).
2009-10-15. . Retrieved 2010-05-09.

Adobe Flash
13
[60]
"2010 Threat Predictions" (http:/ / mcafee. com/ us/ local_content/ reports/ 7985rpt_labs_threat-predict_0110_fnl_lores. pdf). McAfee Labs.
December 2009. p. 2. . Retrieved 2010-05-09.
[61]
"McAfee Threats Report: Fourth Quarter 2009" (http:/ / mcafee. com/ us/ local_content/ reports/ threats_2009Q4_final. pdf). McAfee Avert
Labs. February 2010. p. 16. . Retrieved 2010-05-09.
[62]
"Soltani, Ashkan, Canty, Shannon, Mayo, Quentin, Thomas, Lauren and Hoofnagle, Chris Jay: Flash Cookies and Privacy" (http:/ / papers.
ssrn. com/ sol3/ papers. cfm?abstract_id=1446862). 2009-08-10. . Retrieved 2009-08-18.
[63]
"Local Shared Objects -- "Flash Cookies"" (http:/ / epic. org/ privacy/ cookies/ flash. html). Electronic Privacy Information Center.
2005-07-21. . Retrieved 2010-03-08.
[64]
http:/ / www. macromedia. com/ support/ documentation/ en/ flashplayer/ help/ settings_manager07. html
[65]
http:/ / www. macromedia. com/ support/ documentation/ en/ flashplayer/ help/ settings_manager. html
[66]
"How to manage and disable Local Shared Objects" (http:/ / kb2. adobe. com/ cps/ 526/ 52697ee8. html). Adobe Systems Inc.. 2005-09-09. .
Retrieved 2010-03-08.
[67]
http:/ / blogs. adobe. com/ penguin. swf/ 2010/ 01/ solving_different_problems. html
[68]
"Flash benchmarks on different operating systems" (http:/ / arstechnica. com/ software/ news/ 2008/ 10/ benchmarking-flash-player-10. ars).
.
[69]
http:/ / arstechnica. com/ media/ news/ 2009/ 10/ hands-on-hulu-desktop-for-linux-beta-a-big-resource-hog. ars
[70]
Scrolling and Scrollbars (Jakob Nielsen's Alertbox) (http:/ / www. useit. com/ alertbox/ 20050711. html)
[71]
Nielsen, Jakob (2000-10-29). "Flash: 99% Bad" (http:/ / www. useit. com/ alertbox/ 20001029. html). . Retrieved 2009-02-21.
[72]
"Provide text equivalents for graphics - in Flash" (http:/ / www. skillsforaccess. org. uk/ howto. php?id=101). Skills for Access – How To. .
Retrieved 2007-06-18.
[73]
Cynthia D. Waddell, JD. "Applying the ADA to the Internet: A Web Accessibility Standard" (http:/ / www. icdri. org/ CynthiaW/
applying_the_ada_to_the_internet. htm). . Retrieved 2010-04-11.
[74]
Meyer, David (2008-04-30). "Mozilla warns of Flash and Silverlight 'agenda'" (http:/ / news. zdnet. com/ 2424-3515_22-199508. html).
ZDNet. . Retrieved 2009-01-11. "Companies building websites should beware of proprietary rich-media technologies like Adobe's Flash and
Microsoft's Silverlight, the founder of Mozilla Europe has warned."
[75]
"Richard Stallman on The free software movement and its challenges" (http:/ / video. google. com/
videoplay?docid=-1647626314188526128& ei=LkqgSbfhIYva2gLUotGRDg& hl=un). Australian National University, Canberra, Australia:
Google Video. . Retrieved 2009-02-21.
[76]
High Priority Free Software Projects (http:/ / www. fsf. org/ campaigns/ priority. html), Free Software Foundation, , retrieved 2009-07-09
[77]
"AIR passes 100 million installations" (http:/ / blogs. adobe. com/ air/ 2009/ 01/ air_passes_100_million_install. html?sdid=EENCL). .
Retrieved 3 February 2009.
[78]
"Adobe unveils Flash video control" (http:/ / news. bbc. co. uk/ 1/ hi/ business/ 6558979. stm). BBC News. BBC. 2007-04-16. . Retrieved
2007-06-18.
[79]
"Palm Latest Mobile Industry Leader to Join Open Screen Project" (http:/ / www. adobe. com/ aboutadobe/ pressroom/ pressreleases/
200902/ 021609AdobePalmOSP. html). 2009-02-16. . Retrieved 2009-02-20.
[80]
"Adobe and Industry Leaders Establish Open Screen Project" (http:/ / www. adobe. com/ aboutadobe/ pressroom/ pressreleases/ 200805/
050108AdobeOSP. html). 2008-05-01. . Retrieved 2009-02-20.
[81]
Murarka, Anup. "Inside the Open Screen Project" (http:/ / www. uiresourcecenter. com/ rich-internet-applications/ articles/
inside-the-open-screen-project. html?s=2_1). . Retrieved 2009-02-21.
[82]
"Open Screen Project partners" (http:/ / www. openscreenproject. org/ partners/ current_partners. html). . Retrieved 2009-02-20.
[83]
"Adobe and Nokia Announce $10 Million Open Screen Project Fund" (http:/ / www. adobe. com/ aboutadobe/ pressroom/ pressreleases/
200902/ 021609AdobeNokia. html). 2009-02-16. . Retrieved 2009-02-20.
[84]
http:/ / blogs. adobe. com/ flashplatform/
[85]
http:/ / www. adobe. com/ products/ flash/
[86]
http:/ / kb2. adobe. com/ cps/ 406/ kb406791. html
[87]
http:/ / forums. adobe. com/ community/ flash
[88]
http:/ / www. flexflashforum. com
[89]
http:/ / www. actionscript. org

Action Message Format
14
Action Message Format
Action Message Format (AMF) is a binary format used to serialize ActionScript objects. It is used primarily to
exchange data between an Adobe Flash application and a remote service, usually over the internet.
Typical usage from Adobe Flash Player, consists of an ActionScript program which:
1.
Connects to a specific "gateway" URL on a web server
2.
Accesses the service which handles AMF communication
3.
Calls a method on the service, mentioning a "callback" method
4.
Arguments passed are serialized to AMF and deserialized at the receiving end
5.
The service processes the input, and optionally returns data via AMF
6.
The callback method is invoked by the platform, and returned data is passed
Protocol
AMF was introduced with Flash Player 6, and this version is referred to as AMF 0. It was unchanged until the
release of Flash Player 9 and ActionScript 3.0, when new data types and language features prompted an update,
called AMF 3.[1]
Adobe Systems published the AMF binary data protocol specification[2] on December 13, 2007 and announced that
it will support the developer community to make this protocol available for every major server platform.
Support for AMF
The various AMF Protocols are supported by many server-side languages and technologies, in the form of libraries
and services that must be installed and integrated by the application developer.
Platforms:

Java - Adobe BlazeDS [3], Adobe LiveCycle Data Services (formerly known as Flex Data Services) [4], RED 5 [5],
Cinnamon [6], OpenAMF [7], Pimento [8], Granite [9], WebORB for Java [10]

.NET - WebORB for .NET [11], FluorineFx [12] (LGPL), AMF.NET [13] (development stopped)

PHP - AMFPHP [14], SabreAMF [15], WebORB for PHP [16], Zend_Amf [17]

Python - PyAMF [18], Flashticle [19], amfast [20], Plasma [21]

Perl - AMF::Perl [22]

Curl - Curl Data Services [23]

Ruby - RubyAMF [24], WebORB for Rails [25]

Erlang - Erlang-AMF [26]
Frameworks:

Ruby on Rails - RubyAMF [27]

Zend Framework - Zend_AMF [17]

OSGi Framework - AMF3 for OSGi [28]

Django - Django AMF [29]

CakePHP - CakeAMFPHP [30]

Grails (framework) - BlazeDS [3]

Action Message Format
15
See also

SWX Format (arguably faster alternative)
References
[1]
AMF 0 Specification (http:/ / opensource. adobe. com/ wiki/ download/ attachments/ 1114283/ amf0_spec_121207. pdf)
[2]
AMF 3 Specification (http:/ / opensource. adobe. com/ wiki/ download/ attachments/ 1114283/ amf3_spec_05_05_08. pdf)
[3]
http:/ / opensource. adobe. com/ wiki/ display/ blazeds
[4]
http:/ / www. adobe. com/ products/ livecycle/ dataservices/
[5]
http:/ / www. osflash. org/ red5
[6]
http:/ / www. spicefactory. org/ cinnamon/
[7]
http:/ / osflash. org/ openamf
[8]
http:/ / www. spicefactory. org/ pimento/
[9]
http:/ / www. graniteds. org/
[10]
http:/ / www. themidnightcoders. com/ products/ weborb-for-java
[11]
http:/ / www. themidnightcoders. com/ products/ weborb-for-net
[12]
http:/ / fluorine. thesilentgroup. com/
[13]
http:/ / osflash. org/ amf. net
[14]
http:/ / www. amfphp. org
[15]
http:/ / osflash. org/ sabreamf
[16]
http:/ / www. themidnightcoders. com/ products/ weborb-for-php
[17]
http:/ / framework. zend. com/ manual/ en/ zend. amf. html
[18]
http:/ / pyamf. org/
[19]
http:/ / osflash. org/ flashticle
[20]
http:/ / code. google. com/ p/ amfast/
[21]
http:/ / plasmads. org/
[22]
http:/ / osflash. org/ flap
[23]
http:/ / www. curl. com/ company_news010609. php
[24]
http:/ / osflash. org/ projects/ rubyamf
[25]
http:/ / www. themidnightcoders. com/ products/ weborb-for-rails
[26]
http:/ / github. com/ mujaheed/ erlang-amf
[27]
http:/ / code. google. com/ p/ rubyamf/
[28]
http:/ / arum. co. uk/ amf3osgi. php
[29]
http:/ / djangoamf. sourceforge. jp/ index. php?DjangoAMF_en
[30]
http:/ / cakeforge. org/ projects/ cakeamfphp/

ActionScript
16
ActionScript
Paradigm
Multi-paradigm: prototype-based, functional, imperative,
scripting
Appeared in
1998
Designed by
Gary Grossman
Developer
Macromedia (now Adobe Systems)
Stable release
3.0 (June 27, 2006)
Typing discipline
strong, static
Major implementations
Adobe Flash, Adobe Flex
Influenced by
JavaScript, Java
OS
Cross-platform
Filename extension
.as
Internet media
type
application/ecmascript[1]
ActionScript is a scripting language owned by Adobe. It is based on ECMAScript, and is used primarily for the
development of websites and software using the Adobe Flash Player platform (in the form of SWF files embedded
into Web pages), but is also used in some database applications (such as Alpha Five), and in basic robotics, as with
the Make Controller Kit. Originally developed by Macromedia, the language is now owned by Adobe (which
acquired Macromedia in 2005). ActionScript was initially designed for controlling simple 2D vector animations
made in Adobe Flash (formerly Macromedia Flash). Later versions added functionality allowing for the creation of
Web-based games and rich Internet applications with streaming media (such as video and audio).
Initially focused on animation, early versions of Flash content offered few interactivity features and thus had very
limited scripting capability.
More recent versions include ActionScript, an implementation of the ECMAScript standard which therefore has the
same syntax as JavaScript, but in a different programming framework with a different associated set of class
libraries. ActionScript is used to create almost all of the interactivity (buttons, text entry fields, drop down menus)
seen in many Flash applications.
Flash MX 2004 introduced ActionScript 2.0, a scripting programming language more suited to the development of
Flash applications. It is often possible to save time by scripting something rather than animating it, which usually
also enables a higher level of flexibility when editing.
Since the arrival of the Flash Player 9 alpha (in 2006) a newer version of ActionScript has been released,
ActionScript 3.0. ActionScript 3.0 is an object oriented programming language allowing for more control and code
reusability when building complex Flash applications.
Of late, the Flash libraries are being used with the XML capabilities of the browser to render rich content in the
browser. This technology is known as Asynchronous Flash and XML, much like AJAX. This technology of
Asynchronous Flash and XML has pushed for a more formal approach of this technology called Adobe Flex, which
uses the Flash runtime to build Rich Internet Applications.

ActionScript
17
This technology can be used in players like those on MySpace and YouTube, to provide protection for the content
that the Flash calls, like MP3s and videos. The content called is streamed through the Flash files, making
downloading for storage a difficult task for most people. Programs such as Real Player Downloader and browser
extensions like Firebug can trace the XML files. Browser extensions like Video DownloadHelper can intercept the
requests and download the streamed video.
History
ActionScript started as a scripting language for Macromedia's Flash authoring tool, now developed by Adobe
Systems as Adobe Flash. The first three versions of the Flash authoring tool provided limited interactivity features.
Early Flash developers could attach a simple command, called an "action", to a button or a frame. The set of actions
was basic navigation controls, with commands such as "play", "stop", "getURL", and "gotoAndPlay".
With the release of Flash 4 in 1999, this simple set of actions became a small scripting language. New capabilities
introduced for Flash 4 included variables, expressions, operators, if statements, and loops. Although referred to
internally as "ActionScript", the Flash 4 user manual and marketing documents continued to use the term "actions" to
describe this set of commands .
Timeline by player version

Flash Player 2: The first version with scripting support. Actions included gotoAndPlay, gotoAndStop, nextFrame
and nextScene for timeline control.

Flash Player 3: Expanded basic scripting support with the ability to load external SWFs (loadMovie).

Flash Player 4: First player with a full scripting implementation (called Actions). The scripting was a flash based
syntax and contained support for loops, conditionals, variables and other basic language constructs.

Flash Player 5: Included the first version of ActionScript. Used prototype-based programming based on
ECMAScript [2], and allowed full procedural programming and object-oriented programming.

Flash Player 6: Added an event handling model, accessibility controls and support for switch. The first version
with support for the AMF and RTMP protocols which allowed for on demand audio/video streaming.

Flash Player 7: Additions include CSS styling for text and support for ActionScript 2.0, a programming language
based on the ECMAScript 4 Netscape Proposal [3] with class-based inheritance. However, ActionScript 2.0 can
cross compile to ActionScript 1.0 byte-code, so that it can run in Flash Player 6.
Example of ActionScript 2.0 running on
Macromedia Flash 8.
Flash Player 8: Further extended ActionScript 1/ActionScript 2 by
adding new class libraries with APIs for controlling bitmap data at
run-time, file uploads and live filters for blur and dropshadow.

Flash Player 9 (initially called 8.5): Added ActionScript 3.0 with
the advent of a new virtual machine, called AVM2 (ActionScript
Virtual Machine 2), which coexists with the previous AVM1 needed
to support legacy content. Performance increases were a major
objective for this release of the player including a new JIT compiler.
Support for binary sockets, E4X XML parsing, TR1 = LIXO
full-screen mode and Regular Expressions were added. This is the
first release of the player to be titled Adobe Flash Player [4].

Flash Player 10 (initially called Astro): Added basic 3D manipulation, such as rotating on the X, Y, and Z axis,
and a 3D drawing API. Ability to create custom filters using Adobe Pixel Bender. Several visual processing tasks
are now offloaded to the GPU which gives a noticeable decrease to rendering time for each frame, resulting in
higher frame rates, especially with H.264 video. There is a new sound API which allows for custom creation of
audio in flash, something that has never been possible before.[5] Furthermore, Flash Player 10 supports Peer to

ActionScript
18
Peer (P2P) communication with Real Time Media Flow Protocol (RTMFP).
Timeline by ActionScript version
2000–2003: ActionScript "1.0" With the release of Flash 5 in September 2000, the "actions" from Flash 4 were
enhanced once more and named "ActionScript" for the first time.[6] This was the first version of ActionScript with
influences from JavaScript and the ECMA-262 (Third Edition) standard, supporting the said standard's object model
and many of its core data types. Local variables may be declared with the var statement, and user-defined
functions with parameter passing and return values can also be created. Notably, ActionScript could now also be
typed with a text editor rather than being assembled by choosing actions from drop-down lists and dialog box
controls. With the next release of its authoring tool, Flash MX, and its corresponding player, Flash Player 6, the
language remained essentially unchanged; there were only minor changes, such as the addition of the switch
statement and the "strict equality" (===) operator, which brought it closer to being ECMA-262-compliant. Two
important features of ActionScript that distinguish it from later versions are its loose type system and its reliance on
prototype-based inheritance. Loose typing refers to the ability of a variable to hold any type of data. This allows for
rapid script development and is particularly well-suited for small-scale scripting projects. Prototype-based
inheritance is the ActionScript 1.0 mechanism for code reuse and object-oriented programming. Instead of a class
keyword that defines common characteristics of a class, ActionScript 1.0 uses a special object that serves as a
"prototype" for a class of objects. All common characteristics of a class are defined in the class's prototype object
and every instance of that class contains a link to that prototype object.
2003–2006: ActionScript 2.0 The next major revision of the language, ActionScript 2.0, was introduced in
September 2003 with the release of Flash MX 2004 and its corresponding player, Flash Player 7. In response to user
demand for a language better equipped for larger and more complex applications, ActionScript 2.0 featured
compile-time type checking and class-based syntax, such as the keywords class and extends. (While this
allowed for a more structured object-oriented programming approach, the code would still be compiled to
ActionScript 1.0 bytecode, allowing it to be used on the preceding Flash Player 6 as well. In other words, the
class-based inheritance syntax was a layer on top of the existing prototype-based system.) With ActionScript 2.0,
developers could constrain variables to a specific type by adding a type annotation so that type mismatch errors
could be found at compile-time. ActionScript 2.0 also introduced class-based inheritance syntax so that developers
could create classes and interfaces, much as they would in class-based languages such as Java and C++. This version
conformed partially to the ECMAScript Fourth Edition draft specification.
2006–today: ActionScript 3.0 In June 2006, ActionScript 3.0 debuted with Adobe Flex 2.0 and its corresponding
player, Flash Player 9. ActionScript 3.0 was a fundamental restructuring of the language, so much so that it uses an
entirely different virtual machine. Flash Player 9 contains two virtual machines, AVM1 for code written in
ActionScript 1.0 and 2.0, and AVM2 for content written in ActionScript 3.0. Actionscript 3.0 added limited support
for hardware acceleration (DirectX, OpenGL).
The update to the language introduced several new features:

Compile-time and runtime type checking—type information exists at both compile-time and runtime.

Improved performance from a class-based inheritance system separate from the prototype-based inheritance
system.

Support for packages, namespaces, and regular expressions.

Compiles to an entirely new type of bytecode, incompatible with ActionScript 1.0 and 2.0 bytecode.

Revised Flash Player API, organized into packages.

Unified event handling system based on the DOM event handling standard.

Integration of ECMAScript for XML (E4X) for purposes of XML processing.

Direct access to the Flash runtime display list for complete control of what gets displayed at runtime.

Completely conforming implementation of the ECMAScript fourth edition draft specification.

ActionScript
19
Flash Lite

Flash Lite 1.0: Flash Lite is the Flash technology specifically developed for mobile phones and consumer
electronics devices. Supports Flash 4 ActionScript.

Flash Lite 1.1: Flash 4 ActionScript support and additional device APIs added.

Flash Lite 2.0 and 2.1: Added support for Flash 7 ActionScript 2.0 and some additional fscommand2 API.

Flash Lite 3: Added support for Flash 8 ActionScript 2.0 and also FLV video playback.

Flash Lite 4: Added support for Flash 10 ActionScript 3.0 as a browser plugin and also hardware graphics
acceleration.
Syntax
ActionScript code is free form and thus may be created with whichever amount or style of whitespace that the author
desires. The basic syntax is derived from ECMAScript.
ActionScript 2.0
The following code, which works in any compliant player, creates a text field at depth 0, at position (0, 0) on the
screen (measured in pixels), that is 100 pixels wide and high. Then the text parameter is set to the "Hello,
world" string, and it is automatically displayed in the player:
createTextField("greet", 0, 0, 0, 100, 100);
greet.text = "Hello, world";
When writing external ActionScript 2.0 class files the above example could be written in a file named
Greeter.as as following.
class com.example.Greeter extends MovieClip
{
public function Greeter() {}
public function onLoad() :Void
{
var txtHello:TextField = this.createTextField("txtHello", 0, 0,
0, 100, 100);
txtHello.text = "Hello, world";
}
}
ActionScript 3.0
ActionScript 3.0 has a similar syntax to ActionScript 2.0 but a different set of APIs for creating objects. Compare the
script below to the previous ActionScript 2.0 version:
var greet:TextField = new TextField();
greet.text = "Hello World";
this.addChild(greet);
Minimal ActionScript 3.0 programs may be somewhat larger and more complicated due to the increased separation
of the programming language and the Flash IDE.
Presume the following file to be Greeter.as:
package com.example
{

ActionScript
20
import flash.text.TextField;
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
var txtHello:TextField = new TextField();
txtHello.text = "Hello World";
addChild(txtHello);
}
}
}
(See also: Sprite)
Finally, an example of using ActionScript when developing Flex applications, again presuming the following content
to be in a file named Greeter.as:
package
{
public class Greeter
{
public static function sayHello():String
{
var greet:String = "Hello, world!";
return greet;
}
}
}
This code will work with the following MXML application file:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical"
creationComplete="initApp()">
<mx:Script>
<![CDATA[
public function initApp():void
{
// Prints our "Hello, world!" message into "mainTxt".
mainTxt.text = Greeter.sayHello();
}
]]>
</mx:Script>
<mx:Label id="title" fontSize="24" fontStyle="bold" text='"Hello, world!" Example'/>
<mx:TextArea id="mainTxt" width="250"/>

ActionScript
21
</mx:Application>
Data structures
Data types
ActionScript primarily consists of "fundamental" or "simple" data types which are used to create other data types.
These data types are very similar to Java data types. Since ActionScript 3 was a complete rewrite of ActionScript 2,
the data types and their inheritances have changed.
ActionScript 2 top level data types

String - A list of characters such as "Hello World"

Number - Any Numeric value

Boolean - A simple binary storage that can only be "true" or "false".

Object - Object is the data type all complex data types inherit from. It allows for the grouping of methods,
functions, parameters, and other objects.
ActionScript 2 complex data types
There are additional "complex" data types. These are more processor and memory intensive and consist of many
"simple" data types. For AS2, some of these data types are:

MovieClip - An ActionScript creation that allows easy usage of visible objects.

TextField - A simple dynamic or input text field. Inherits the Movieclip type.

Button - A simple button with 4 frames (states): Up, Over, Down and Hit. Inherits the MovieClip type.

Date - Allows access to information about a specific point in time.

Array - Allows linear storage of data.

XML - An XML object

XMLNode - An XML node

LoadVars - A Load Variables object allows for the storing and send of HTTP POST and HTTP GET variables

Sound

NetStream

NetConnection

MovieClipLoader

EventListener
ActionScript 3 primitive (prime) data types (see Data type descriptions [7])

Boolean - The Boolean data type has only two possible values: true and false or 1 and 0. No other values are
valid.

int - The int data type is a 32-bit integer between -2,147,483,648 and 2,147,483,647.

Null - The Null data type contains only one value, null. This is the default value for the String data type and all
classes that define complex data types, including the Object class.

Number - The Number data type can represent integers, unsigned integers, and floating-point numbers. The
Number data type uses the 64-bit double-precision format as specified by the IEEE Standard for Binary
Floating-Point Arithmetic (IEEE-754).

String - The String data type represents a sequence of 16-bit characters. Strings are stored internally as Unicode
characters, using the UTF-16 format. Previous versions of Flash used the UTF-8 format.

uint - The uint (Unsigned Integer) data type is a 32-bit unsigned integer between 0 and 4,294,967,295.

void - The void data type contains only one value, undefined. In previous versions of ActionScript, undefined was
the default value for instances of the Object class. In ActionScript 3.0, the default value for Object instances is
null.

ActionScript
22
ActionScript 3 some complex data types (see Data type descriptions [7])

Object - The Object data type is defined by the Object class. The Object class serves as the base class for all class
definitions in ActionScript. Objects in their basic form can be used as associative arrays that contain key-value
pairs, where keys are Strings and values may be any type.

Array - Contains a list of data. Though ActionScript 3 is a strongly typed language, the contents of an Array may
be of any type and values must be cast back to their original type after retrieval. (Support for typed Arrays has
recently been added with the Vector class.)

Vector - A variant of array supported only when publishing for Flash Player 10 or above. Vectors are typed,
dense Arrays (values must be defined or null) which may be fixed-length, and are bounds-checked during
retrieval. Vectors are not just more typesafe than Arrays but also perform faster.

flash.utils:Dictionary - Dictionaries are a variant of Object that may contain keys of any data type (whereas
Object always uses strings for its keys).

flash.display:Sprite - A display object container without a timeline.

flash.display:MovieClip - Animated movie clip display object; Flash timeline is, by default, a MovieClip.

flash.display:Bitmap - A non-animated bitmap display object.

flash.display:Shape - A non-animated vector shape object.

flash.utils:ByteArray - Contains an array of binary byte data.

flash.text:TextField - A dynamic, optionally interactive text field object.

flash.display:SimpleButton - A simple interactive button type supporting "up", "over", and "down" states with
an arbitrary hit area.

Date - A date object containing the date/time digital representation.

Error - A generic error object that allows runtime error reporting when thrown as an exception.

Function - The core class for all Flash method definitions.

RegExp - A regular expression object for strings.

flash.media:Video - A video playback object supporting direct (progressive download) or streaming (RTMP)
transports. As of Flash Player version 9.0.115.0, the H.264/MP4 high-definition video format is also supported
along side standard Flash video (FLV) content.

XML - A revised XML object based on the E4X (Standard ECMA-357); nodes and attributes are accessed
differently than ActionScript 2.0 object (a legacy class named XMLDocument is provided for backwards
compatibility).

XMLList - An array-based object for various content lookups in the XML class.
Using data types
The basic syntax is:
var yourVariableName:YourVariableType = new YourVariableType(Param1,
Param2, ..., ParamN);
So in order to make an empty Object:
var myObject:Object = new Object();
Some types are automatically put in place:
var myString:String = "Hello Wikipedia!"; // This would automatically
set the variable as a string.
var myNumber:Number = 5; // This would do the same for a number.
var myObject:Object = {Param1:"Hi!", Param2:76}; //This creates an
object with two variables.

ActionScript
23
// Param1 is a string with the data of "Hi!",
// and Param2 is a number with the data of 76.
var myArray:Array = [5,"Hello!",{a:5, b:7}] //This is the syntax for
automatically creating an Array.
//It creates an Array with 3 variables.
//The first (0) is a number with the value of 5,
//the second (1) is a string with the value of "Hello!",
//and the third (2) is an object with {a:5, b:7}.
Unlike most object-oriented languages, ActionScript makes no distinction between primitive types and reference
types. In ActionScript, all variables are reference types. However, objects that belong to the primitive data types,
which includes Boolean, Number, int, uint, and String, have special operators that make them behave as if they were
passed by value. [8]
So if a variable of a supposedly primitive type, e.g. an integer is passed to a function, altering that variable inside the
function will not alter the original variable (passed by value). If a variable of another (not primitive) datatype, e.g.
XML is passed to a function, altering that variable inside the function will alter the original variable as well (passed
by reference).
Some data types can be assigned values with literals:
var item1:String="ABC";
var item2:Boolean=true;
var item3:Number=12;
var item4:Array=["a","b","c"];
var item5:XML = <node><child/></node>; //Note that the primitive XML is not quoted
A reference in ActionScript is a pointer to an instance of a class. This does not create a copy but accesses the same
memory space. All objects in ActionScript are accessed as references instead of being copied.
var item1:XML=new XML("<node><child/></node>");
var item2:XML=item1;
item2.firstChild.attributes.value=13;
//item1 now equals item2 since item2 simply points to what item1 points
to.
//Both are now:
//<node><child value="13"/></node>
Only references to an object may be removed by using the "delete" keyword. Removal of actual objects and data is
done by the Flash Player garbage collector which checks for any existing references in the Flash memory space. If
none are found (no other reference is made to the orphaned object), it is removed from memory. For this reason,
memory management in ActionScript requires careful application development planning.
var item1:XML=new XML("<node><child/></node>");
delete item1;
//If no other reference to item1 is present anywhere else in the
application,
//it will be removed on the garbage collector's next pass

ActionScript
24
ActionScript code protection
Often, Flash developers will decide that while they desire the advantages that Flash affords them in the areas of
animation and interactivity, they do not wish to expose their code to the world. However, as with all intermediate
language compiled code, once a .swf file is saved locally, it can be decompiled into its source code and assets. Some
decompilers are capable of nearly full reconstruction of the original source file, down to the actual code that was
used during creation (although results vary on a case-by-case basis).[9] [10] [11]
In opposition to the decompilers, ActionScript obfuscators have been introduced to solve this problem.
Higher-quality obfuscators implement lexical transformations — such as identifier renaming, control flow
transformation, and data abstraction transformation — that make it harder for decompilers to generate output likely
to be useful to a human. Less robust obfuscators insert traps for decompilers.
See also

ECMAScript — The standardized scripting language upon which ActionScript is based.

ActionScript code protection.

Adobe Flash — The program in which ActionScript debuted.

Adobe Flash Player — The official and most widely used SWF player.

Adobe Flash Lite — A miniature version of the Flash Player for mobile devices.

Adobe AIR - Runtime for ActionScript/Flex

Adobe Flex - SDK and IDE which uses ActionScript

SWF File Format

Tamarin (JIT)

Macromedia

Adobe Systems

Gnash, a free Flash viewer

Swfdec

Adobe Flex Builder - IDE by Adobe to author ActionScript

HaXe

FlashDevelop - a free and open source code editor and alternative flex IDE
External links
Adobe documentation and references

ActionScript Technology Center [12]

ActionScript 2.0 Language Reference [13]

ActionScript 3.0 Language & Component Reference [14]

Flex 3 LiveDocs: Programming ActionScript 3.0 [15]
Tutorials and references

Adobe - Flash Developer Center [16]

Tutorial - Get Started with ActionScript 3 [17]

ActionScript
25
Developer tools

Adobe Flash Professional [18] (i.e. the Flash IDE)

Adobe Flex SDK [19]

FlashDevelop [20] - Popular open-source ActionScript IDE

swftools' as3compile [21] - as3compile, a free compiler for ActionScript 3.0

Motion Twin ActionScript Compiler [22] - MTASC is an Open-source ActionScript 2 compiler
Actionscript Forum / Community

Adobe's Flash Forum [87]

FlexFlashForum.com - Flash Forum [88]

Actionscript.org - Community Resource / Tutorials [89]

Wuup - Tutorials/Blog by ActionScript Programmer Bill Nunney [23]
References
[1]
RFC 4329 (limit compatible with EcmaScript)
[2]
http:/ / www. ecma-international. org/ publications/ standards/ Ecma-262. htm
[3]
http:/ / www. ecmascript. org/
[4]
http:/ / www. adobe. com/ products/ flashplayer
[5]
"Adobe Labs - Adobe Flash Player 10.1" (http:/ / labs. adobe. com/ technologies/ flashplayer10/ ). Labs.adobe.com. . Retrieved 2009-12-17.
[6]
Note that the name "ActionScript 1.0" is a retronym, coined after the release of ActionScript 2.0.
[7]
http:/ / livedocs. adobe. com/ flash/ 9. 0/ main/ wwhelp/ wwhimpl/ common/ html/ wwhelp. htm?context=LiveDocs_Parts& file=00000047.
html
[8]
"Flex 3 - Function parameters" (http:/ / livedocs. adobe. com/ flex/ 3/ html/ 03_Language_and_Syntax_19. html). Livedocs.adobe.com. .
Retrieved 2009-12-17.
[9]
Third party review of another decompiler (http:/ / www. flashmagazine. com/ reviews/ detail/ review_trillix_flash_decompiler_3/ )
[10]
Customer comments on one Flash decompiler (http:/ / www. topshareware. com/ reviews/ 10386-1/ flash-decompiler. htm)
[11]
Customer comments on another Flash product (http:/ / www. macupdate. com/ reviews. php?id=11541)
[12]
http:/ / www. adobe. com/ devnet/ actionscript/
[13]
http:/ / help. adobe. com/ en_US/ AS2LCR/ Flash_10. 0/ help. html?content=Part2_AS2_LangRef_1. html
[14]
http:/ / help. adobe. com/ en_US/ AS3LCR/ Flash_10. 0/
[15]
http:/ / www. adobe. com/ go/ programmingAS3
[16]
http:/ / www. adobe. com/ devnet/ flash/
[17]
http:/ / www. flashcomponents. net/ articles/ from_flash_to_flex_moving_to_actionscript_3. html
[18]
http:/ / www. adobe. com/ downloads/
[19]
http:/ / opensource. adobe. com/ wiki/ display/ flexsdk/ Download+ Flex+ 3
[20]
http:/ / www. flashdevelop. org
[21]
http:/ / www. swftools. org
[22]
http:/ / www. mtasc. org/
[23]
http:/ / www. wuup. co. uk/ category/ blog/ tutorials/ flash-tutorials/ actionscript-30

ActionScrip 3
26
ActionScrip 3
ActionScript 3.0 was a fundamental restructuring of the ActionScriptlanguage, so much so that it uses an entirely
different virtual machine. Flash Player 9 contains two virtual machines, AVM1 for code written in ActionScript 1.0
and 2.0, and AVM2 for content written in ActionScript 3.0. Actionscript 3.0 added limited support for hardware
acceleration (DirectX, OpenGL).
The update to the language introduced several new features:

Compile-time and runtime type checking—type information exists at both compile-time and runtime.

Improved performance from a class-based inheritance system separate from the prototype-based inheritance
system.

Support for packages, namespaces, and regular expressions.

Compiles to an entirely new type of bytecode, incompatible with ActionScript 1.0 and 2.0 bytecode.

Revised Flash Player API, organized into packages.

Unified event handling system based on the DOM event handling standard.

Integration of ECMAScript for XML (E4X) for purposes of XML processing.

Direct access to the Flash runtime display list for complete control of what gets displayed at runtime.

Completely conforming implementation of the ECMAScript fourth edition draft specification.
ActionScript code protection
ActionScript code protection. ActionScript is the main language for developing flash products. Code obfuscation is
the process of transforming code into a form that is unintelligible to human readers while preserving the functionality
and structure for computers. To make ActionScript code as safe as possible flash developers use a variety of code
encryption and obfuscation methods. Most of the methods are kept in secret due to the fact that they are used in
popular ActionScript obfuscators.
Overview
Obfuscation is the process of modifying ActionScript code. Obfuscation engineering makes it impossible to use the
original code for programming by mixing up functions, arguments and variables names; however the SWF file with
obfuscated code stays readable for Flash players.
ActionScript obfuscation algorithms are aimed to resist Flash decompilation and protect development`s art work
from stealing. Nowadays there are lots of different freeware and shareware tools that provides different obfuscation
options. Some SWF Protectors implement lexical transformations - such as identifiers renaming, control flow
transformation, and data abstraction transformation - that make it harder for decompilers to generate correct and
usable output. Others - insert certain traps based on decompilers imperfections. Some decompilers manage to open
protected files and maybe extract some of its resources (sounds, images, etc.), but they cannot read the ActionScript
code correctly. It often happens that when protected SWF file is added to decompilation software, the latter may
crash or quit unexpectedly.

ActionScript code protection
27
Examples
The easiest way to understand the benefit of SWF obfuscation is to compare a non-protected SWF ActionScript code
with protected one. Please look at the examples below.
ActionScript 2.0
Code before obfuscation:
stop();
if (this.holder1 == Number (this.holder1)) {
loadMovieNum ("jopeClipLoader5.swf", this.holder1);
} else {
this.holder1.loadMovie("jopeClipLoader5.swf");
}
Code after obfuscation:
do {
if (false) {
(() add ().holder1);// not popped
if (true) {
// unexpected jump
do {
stop();
} while (false);
// unexpected jump
if (false) {
Set("\x0B\x1A\x13\x16", true);
} while (true);
do {
if (true) {
// unexpected jump
// unexpected jump
if (false) {
} while (true);
do {
// unexpected jump
} while (true);
// swfAction0xAD hexdata
0x52,0x17,0x99,0x02,0x00,0x39,0x00,0x9A,0x01... // Unknown action
}
(() add
().holder1)[(!"holder1".holder1()).holder1].loadMovie();
// unexpected jump
/* Error1016 */
// unexpected jump
do {
(this);// not popped
if (true) {

ActionScript code protection
28
// unexpected jump
} while (this);
(this);// not popped
// unexpected jump
}
}
}
if (false) {
} while (true);
do {
// unexpected jump
} while (true);
// swfAction0xAD hexdata
0x52,0x17,0x99,0x02,0x00,0x39,0x00,0x9A,0x01,0x00,0x00,0x99... //
Unknown action
}
"holder1".holder1.loadMovie();