Category Archives: ActionScript 2

Catalogue Of 30+ Flash Lite Development Tips

Rien Verbrugghe has done a great job of cataloging a huge number of Flash Lite development, testing and packaging tips from a number of conference sessions and also the various Flash Lite development blogs. If you want a handy quick reference of Flash Lite development tricks and common gotchas this is worth book marking or printing out.

blog.rive.be

Memory Management in Flash Lite and ActionScript 2 using ASUnit

In my new position the team I have joined and me are carying out some in depth testing of an Action Script 2 code base for Flash Lite 3 using, among other things, ASUnit based unit and acceptance tests. The early stage of development means it is too soon to leverage the new automated testing features of Adobe Device Central CS4. One of the most important aspects of our testing has been to check memory use over the lifetime of the applications we are developing. We are interested in tracking any memory leaks in our code and also any memory space fragmentation as the Flash Lite player creates or destroys objects and classes.

This memory information is viewable from Adobe Device Central in the Memory Panel, where device central provides a graph showing memory usage over time, separating Static Heap and Dynamic Heap consumption of the player as your Flash Lite application runs.

MemoryPanel.png

Testing for memory use, loss and leaks is currently not present as standard in ASUnit for ActionScript 2. In order to include this form of testing at a basic level we have employed a trick I picked up at Max San Francisco this year (If you are the person that explained the trick, please leave a comment so I can credit you). The technique makes use of the FlashLite SharedObject as a way of measuring the file size of objects and classes before and after you think you have destroyed them in your code.

The premiss is a simple one. In your test as part of the test setup create a local SharedObject create an empty data property and save the SharedObject to disk, then call the SharedObject.getSize() method and store the size of your empty SharedObject. The code should look something like this.

// size variation threshold for the SharedObject
private static var SIZEVARIANCE:Number = 5;
private var iS:SharedObject;
private var iSSize:Number;
// standard ASUnit test setup
private function setUp():Void
{
instance = new TestableClassObject();
iS = SharedObject.getLocal("iS");
iS.clear();
iS.data.iS = undefined;
iS.flush();
iSSize = iS.getSize();
}

Some things to keep in mind are the following. The length of the SharedObject name and the length of the data property name will have an impact on the result of SharedObject.getSize(). In the above example I have limited both these values to 2 characters (‘iS’). All that remains is to link the value obtained from this setup function into a standard ASUnit test which looks something like this:

public function testDestroy():Void
{
instance.destroy();
iS.data.iS = instance;
assertTrue("testDestroy : test that the TestableClassObject 'instance' is destroyed successfully by checking size variation (" + SIZEVARIANCE + ") in SharedObject", ((iS.getSize() - iSSize) < SIZEVARIANCE));
}

In this test I am simply calling the target class instance’s destroy method, which should manage the removal of any stored references, arrays and object present in the class. I then save the locally stored instance back to the existing shared object, re-call SharedObject.getSize() and compare the size difference to the value of our initial empty SharedObject (iSSize) from the test setup method.

If the file size of the SharedObject is greater than the SIZEVARIANCE threshold then the test will fail. If that is the case then you have the ability to inspect the shared object using a SharedObject viewer (I use the free Solve by Darron Schall). In the viewer you will be able to see what items are not being properly removed from your class instance oronject. A common issue I have seen is the failure to destroy arrays that are prpperties of my classes for example. Some time over the holiday break I will put together a full example for download.

Using MTASC to compile Flash Lite (FSCommand2) on OSX


For some time I have used Eclipse, FDT and MTASC as my preferred weapon of choice when doing AS2 development, I switch to Flex Builder for AS3 , Flex or AIR. One spanner in these works when using Mac OSX had been when producing mobile content for FlashLite 2+. Flash Lite 2 and FLash Lite 3 can both use ActionScript 2 and so as MTASC should be able to compile FLash Lite content. However on OS X MTASC still appears to have an issue compiling the FSCommand2() function, this was fixed in teh 1.13 version of the win32 version of the compiler but It seems the OS X version does not include the same fix for FSCommand2(). The FSCommand2() function used in Flash Lite development to control things like the SoftKeys or forcing an application to display at full screen on mobiles or devices.

Last week I took the time to find a way to work around this issue in order to get back to my development tool chain when developing Flash Lite content. For those users that are more experienced with this form of development the only answer seems to be to create a symbol in the library of your fla associate any classes that make use of the FSCommand2 to the new symbol. Make sure the Clip is exported in some fashion, either by physically placing it on the stage, or setting it to export for ActionScript. Next export a stub SWF from the fla. In eclipse, or when using MTASC you will need to use the ‘-keep’ switch on the command line when you run MTASC to compile your Flash Lite content, this will also make sure the Flash Lite swf header will remain in tact as well. This forces MTASC to keep any assets that are already in the target output swf.

It is also worth mentioning that in your application code you will not be able to refer to the class that contains functionality using the FSCommand2. So applications like FDT will think there is an error as you will be unable to define the ‘type’ of your class. A second note is that MTASC will flag that there is a movie clip associated with a class, but that is has not been compiled.


Warning : The MovieClip KeyController needs the class { Class path containing FSCommand2() function } which was not compiled :
Please force compilation of this class by adding it to the commandline.

I have not been able to completely remove the FLA or the Flash IDE completely from my tool chain, but in all honesty I think there are alot of use cases in Flash Lite development that still require a level of timeline usage, so I happy with this compromise.

I have created an example package of files that you can download from here or in the download area.

Fantastic Networking and Learning opportunities at Adobe Max

adobe max08 thumbnail
With Adobe Max San Francisco now only 2 weeks away its important to make sure you have organized your schedule, if you haven’t already. This year Adobe hosting 2 events which aim to bring developers together with some of the industry leaders in the mobile market place. So if you are a developer interested in mobile or you already have content or existing applications that you think might work as a mobile application or service, Adobe Max should offer some great opportunities to get information from the experts.

Mobile Summit
November 16, 2008 at the Marriott from 1pm-6pm

Join Adobe and our partners — Nokia, Qualcomm®, Verizon, Sony Ericsson, GetJar, Thumbplay®, and Zed — to learn about new opportunities for mobile developers this year. Get a sneak peak at what you will see and hear at MAX before anyone else does! Hear from Adobe partners and key industry players as they present the newest mobile solutions, technologies, and distribution opportunities for mobile developers. To learn more and RSVP for this event go to: http://www.eventsadobe.com/mobilesummitmax08/invite.html

Mobile Fast Pitch Networking Party
November 19, 2008 at the Thirsty Bear from 6:16pm-9:30pm

Adobe is hosting a special Mobile Networking Party to allow developers to showcase their mobile applications using our Adobe® Flash® mobile technologies. If you already have a web-based application and are thinking of going mobile, you can also present your idea and get feedback from our industry leaders. Join us to support fellow developers or to present your ideas. For more RSVP and presentation information for this event go to: http://www.eventsadobe.com/mobilenetworkingparty/invite.html

In addition to these 2 events there are also a number of great sessions on at the conference tailored to Mobile:

  • Open Screen Project: Delivering Rich Internet Experiences Across Devices
  • Creating Mobile Applications: A Real-World Example
  • Mobile Workflows with Creative Suite® 4 and Adobe Device Central CS4
  • Flash Lite 3: Learn How to Package and Distribute Mobile Content
  • Spotlight on Finetune and Teknision™: Building a Multiscreen Application
  • Create Unique Browsing Experiences on Nokia Phones
  • How to Build a Mobile Business
  • Developing the Ultimate Flash Cast™ Channels
  • Project Capuchin – Bridging Adobe Flash Lite and Java ME™

Remember the most popular MAX sessions fill very early, so be sure to register today to secure seats in your preferred sessions. You’ll be surprised by what real live Adobe Flash Lite applications exist today.

Free Flash Lite Components Bonanza!

I you are a Flash developer producing mobile content for Flash Lite then this week end you really hit pay dirt. First Nokia announced a set of Components for Flash Lite 2. Next Adobe also release a set of Components, for use with Flash Lite 1 and also Flash Lite 2, courtesy of Mark Doherty. Finally Scott Janousek resurrected the google code links for Shuriken, a set of open source Flash Lite2 components from last year.

So with all these ‘new’ flash lite components available what can you expect from each component set?

Nokia Flash Lite 2 Components
Nokia have provided their Flash Lite 2 Component set as an MXP file for simple installation into Flash CS3, the components are easily accessible from the components panel once the MXP has been installed. Included in the zip file you download is a full readme.txt explaining how to install the MXP file through Adobe Extension Manager. The components also include full usage instructions in the form of flash help files and usage examples. Flash Lite Components that are included in the distribution are:

  • Signal Level display, including network generation.
  • Battery level display.
  • Dynamic List Component.

The Signal and Battery indicator components react to softkey placement/screen orientation. All three of the components have easily accessible skin components in the library, and also allow limited visual control from the properties panel. Mark Doherty noted that the components appear to be quite memory hungry. The Signal and Battery Indicators seem to use in the region of 600k according to Adobe Device Central, the Dynamic List Example reports around 800k although the actual memory usage of the list without a demo data set is closer to 700k.

Download the Nokia Flash Lite 2 Components

Adobe Flash Lite 1 & 2 Components and UI Examples
Over at flashmobileblog Mark Doherty has released some UI components as well. These are provided for both Flash Lite 1 and Flash Lite 2 projects. There is limited documentations for the examples, the Flash Lite 2 examples look like they should be easy to integrate as long as you intend to use them ‘as is’ in this case they would simply require the addition of key listeners to control them. If you needed the components to be used in a more dynamic fashion, there would probably be some work to do. Included in the Flash Lite 2 component examples are:

  • List, this offers similar functionality to the Dynamic list in the Nokia Component set.
  • Slider, This offers a horizontally scrolling icon menu.
  • Gapper, This is a vertical variation of the slider.
  • TileGrid, Shows a gridded icon menu with scrolling screen control.
  • NavModel, this demonstrates a full application screen control system, also included are working Signal and Battery indicators and a list components.

The examples in this file are certainly easy on the memory, all of them use less than 500k, this is particularly impressive of the Nav Model example given the amount of interactivity and feedback that is demonstrated.

As with any Flash Lite 1 work, making use of the earlier versions will be a little more fiddly than the Flash Lite 2 counter parts. But the code in each of the examples is clearly identified and if you know your way around ActionScript 1 you should find incorporating the ‘components’ easy enough. Included in the examples are the following Flash Lite 1.1 components.

  • Carousel, A full screen horizontal slider.
  • Displays, demonstrates the various device stats you can access from Flash Lite 1, also included are battery and signal indicators.
  • IconMenu, offers a FlashLite 1 version of the Slider component in the Flash Lite 2 set, this is similar to the functionality produced in the tutorial here.
  • Menu, actually seems to be a Flash Lite 2 example, an alternative dynamic list example.
  • Story, This is an example of scrolling text in flash Lite 1, similar to the scrolling text component I have released.

Agin the Flash Lite 11 components are very efficient when it comes to memory usage. None used more than 400k when published, and most were below 300k. The trade of with both these example sets from Adobe seem to be the slight increase in the amount of work you would need to do to integrate them. The other thing to note, is that these examples do offer examples of far more compelling UI methods than simple lists.

Download the Adobe Flash Lite 1 & 2 Components and UI Examples

Shuriken Open Source Flash Lite 2 Components
The last set of Flash Lite components are those that

  • Scott mentioned, the Shuriken Components. I stumbled upon these components some time ago, I am not sure if the project is still live or has fallen dormant. The project offers a fairly comprehensive attempt at providing a full component framework to Flash Lite 2 developers. Included in the distribution zip are source class files, and example .fla’s for each component in the library.
    • Button
    • Calendar
    • CheckBox
    • ComboBox
    • DateEditor
    • LinkButton
    • List
    • Loader
    • NumericStepper
    • RadioButton
    • RadioButtonGroup
    • ScrollableList
    • SimpleButton
    • TextArea

    While the examples are good they do seem to be quite heavy in terms of memory usage, and they are not without issues. The scrolling list example for instance takes around 700k to display, but more concerning is that this memory usage raises during operation, implying the component has a memory leak somewhere. The complexity of this initiative while making development easier, may be its problem. Complex class structures in Flash Lite tend to give rise to cross references and memory leaks quite quickly.

    Download the Shuriken Open Source Flash Lite 2 Components

    So there we have it 3 sets of components, all certainly have there advantages and disadvantages. The Nokia Flash Lite components are great for Plug and Play development, I would say the Adobe UI examples are great for producing engaging canned demos as they stand, but with a bit of work could be converted for very memory efficient project use, and the shuriken component frame work may be a little heavy at the moment, but keep a watch on them, they could certainly offer a great, familiar framework for Flash Lite development, when they can solve the memory issues.

    Also worth a note is that Mark Doherty has put a shout out at the end of his post regarding a shelved component framework that he could release from Adobe if interest is great enough. Mark has asked the FlashLite comunity to provide some support if it were released, to document and update the project, but this could offer a great opertunity to unify the current state of disperate component solutions emerging.

    Credit where its due:

  • RIA + OSP = RAA || REA && And how to detect an Open Screen Device

    Keeping with the algebraic/code functions as titles from my Last post I thought I would put some thoughts down regarding the news from Adobe earlier this week of their Open Screen Project (OSP). Anyone working in the Web/Internet industry at the moment will be well aware of the Rich Internet/Interactive Application (RIA) moniker. What Adobe is committing to is much larger though this is about true cross platform convergence. Its about Rich Anywhere Applications (RAA) or Rich Everywhere Applications (REA) if you will. You see what I did there 😉 .

    Interestingly this is a concept I began to scratched the surface of with my presentation at Flash On the Beach Last Year, and over the last few months has been a subject I have continued to keep close to hand both in my day job and my personal development projects. At the moment the Flash Player Fragmentation offers a considerable challenge to any developer wanting to design and or develop for multiple devices and multiple screens.

    Articles like the one posted over at ADC on adaptive screen layouts offer a great foot up. But before we get to visual display we need to know what player version we are targeting. And to do that, we have to hit the time machine button and roll back all the way to Flash 4…..

    Continue reading RIA + OSP = RAA || REA && And how to detect an Open Screen Device

    FlashLite Helper Classes for Download. Pt 2. NetworkBroadcaster

    Following on from the simple BatteryBroadcaster class posted last week I have put together a second helper class for FlashLite, again built in ActionScript 2, so it should work for any FlashLite 2 or FlashLite 3 project. The NetworkBroadcaster class centralises all network and signal related events, and broadcasts any changes to listeners on 2 separate intervals. One for general signal levels, the other for “other” network status events, for example changes in network generation support.
    Continue reading FlashLite Helper Classes for Download. Pt 2. NetworkBroadcaster

    FlashLite 2 Helper Classes for Download. Pt 1. BatteryBroadcaster

    I have been sorting through some of my old code, commenting up some bits and generally refreshing the grey matter on some of the things I have been working on. I thought I would put some of the helper classes I use out into the wild. First up is a simple class that I used for monitoring battery status of mobile phones or other mobile devices in FlashLite 2, or FlashLite 3, I would think (not tested yet) .

    Flash Lite Battery Broadcaster

    Continue reading FlashLite 2 Helper Classes for Download. Pt 1. BatteryBroadcaster

    FlashLite 3 Player available for Nokia N95

    If you are interested in testing your new FlashLite 3 content on device, as all good developers should be, the there is an interim build of FlashLite 3 availible that has been certified only for Nokia N95.

    You must submit your IMEI number by Noon Eastern Time on the 16th of October. Details of the email and how to get your IMEI Number can be found at the following location.


    FlashLite 3 Developer Edition for Nokia N95

    Detecting Screen Rotation in Nokia N95 Browser

    Continuing my work with Web Development for Mobile Phones and other Devices I updated my very simple early FlashLite 2 tests that I showed on in screen shots on my N95.

    In those posts I discussed the problem of detecting screen rotation detection on the Nokia N95. I could not get the FlashLite player to register a change in Stage size when switching from portrait to landscape viewing modes. I have since added a little JavaScript function that I thought might be able to detect this change in lieu of the FlashPlayer not working.

    Unfortunately all methods I have attempted so far to register a change in orientation have failed. The browser does not seem to support the onResize event which I assumed would provide the answer. This limitation appears similar to information I have found from iPhone web developers that have encountered similar issues.

    SmugBlog Makes Reference to it on there site. There is also a couple of links to a Framework that provides a work around of sorts using an interval.

    joehewitt, the developer responsible for the facebook I belive, has published the iUI as a google code project.

    In addition to the resize problem it seems that the FlashLite 2 player within the browser does not offer support for the FlashVars parameter of the Embed and Object tags, it also does not appear to support appending variables on the SWF path name. These limitations would not allow values to be passed into the SWF file at run time.

    A final test I performed was to export my test movie not as FlashLite content, but rather as Flash Player 6 and Flash Player 7 content with ActionScript 2 support. The thinking behind this was that this would offer me some lowest common denominator for publishing mobile flash content on a broad range of devices. Sony’s PSP of course uses the Flash Player 6 as its platform while Nintendo’s Wii uses the Flash Player 7. Both versions of the file ran within the FlashLite 2 Player. Although no the IDE did complain about using FlashLite specific FSCommand2 functions. In addition there was some issues with the image loader in the Flash Player 6 version of the swf when loaded by the FlashLite 2 player, the image was rotated through -90 degrees for some reason.

    Nokia N95 FlashLite 2 Browser Support Screen Shots

    Following my initial post last night detailing some of the player information of the FlashLite 2 support in the N95 web browser, and also one of the issues. I thought I would take a quick look at the files from last night with fresh eyes over lunch. I have included a couple of screen shots to show the rotate issue more clearly. The page that is in these screen shots is at the following location.

    http://www.bittube.com/flashlite/index.html

    In the file I am simply reporting to screen the Player version, the stage width and height, and then also loadin an image thumbnail from my new gallery of animal themed photography

    The bottom 2 fields are reporting the FlashLite players fscommand2("GetFreePlayerMemory") and fscommand2("GetTotalPlayerMemory")

    In the first screen the FlashLite movie from this URL loads has loaded in the Vertical page format at a resolution of 240×320 (wxh).

    Nokia N95 FlashLite 2 Browser Support

    In the second screen shot below the browser has been rotated into its horizontal format. This operation does not seem to cause the Stage.onResize event to fire, and the flash movie still reports a resolution of 240×320 (wxh).

    Nokia N95 FlashLite 2 Horizontal Browser Support

    A side effect of this rotation of the flash movie is that it seems to get scaled down in order to view it in the new format. This means the text becomes unreadable. Very frustrating.

    The N95 does support JavaScript in its browser, next step i suppose is to see if that can be used to detect the change in format.

    FlashLite2 Development for the Nokia N95 Browser

    I took delivery of a new Nokia 95 a few days ago, and I must confess I am very, very happy. One thing that attracted me to the device was the IN BROWSER FlashLite 2 support, this offers a way to build web experiences into the browser that owners of the new Nokia smartphone will be see. Of course this Assumes that the developers of the content stick to the usual limitations of developing for FlashLite, and other limited performance devices.

    So I have spent a little time getting to the usual nitty gritty that us flash developers require in order to produce to the Nokia N95. I.E.

    The FlashLite Player on the N95 reports the following from the System.capabilities.version command.

    FL 7,1,90,0

    When using html that sets the swf files width and height to 100% I get the following information from the N95 browser.

    Stage.width == 240
    Stage.height == 320

    Here comes the but……

    When I make use of the rotate screen functionality that the N95 offers to view the SWF in landscape format, and measure the width and height. I get the following.

    Stage.width == 240
    Stage.height == 320

    I extended my movie to make use of the Stage.onResize event. But at no point could I see that event fire through my event handler. As a result I have not been able to see the expected result in landscape format of

    Stage.width == 320
    Stage.height == 240

    Maybe I have made a simple mistake.

    The N95 does seem to be a very capable device. The battery is pretty short lived, but the functionality it offers is great. From a development point of view I will be looking to see what I can do in the Browser and out, It would be wonderful if the Browser offers FlashLite 3 once that is available, maybe a later firmware patch. We shall see.

    my first example is (very basic) available to view at this location. bittube.com/flashlitehome/index.html

    I will package the source, what there is and post it later on.

    Useful Flash Lite Development Tool

    For those of you that are developing Flash Lite applications and games you will be well aware of the issues of Memory leaks in the Flash lite player. One area where this can occur is in the creation of “crossed references”. These result in objects that are effectively locked as far as Garbage Collection is concerned, and so result in memory ‘leaking’ over time.

    Continue reading Useful Flash Lite Development Tool

    Open Source ActionScript, an end to the flash plug-in?

    Today on Adobe.com I noticed the news that Adobe have released the source code for the ActionScript Virtual Machine to Mozilla Foundation.

    The release, which is dated 7th November 2006 can be found here and provides more information. From the release it sound like the code is to be included into future releases of the fire fox browser.

    Does this mean an end to the Flash Plug-in for future Mozilla based Browsers? How will this impact XUL runner and its capabilities in comparison to Adobes much talked about Apollo?

    Adobe and Mozilla Foundation to Open Source Flash Player Scripting Engine

    Balthaser patent .180 reexamination

    As Mike over at Flashgen.com and also Aral Balkan reports it seems someone is looking to contest the ridiculous Balthaser RIA patent that was reported a while ago by a number of Flash developers. I have also been contacted by Oliver Lorenz with regard to providing more information and certainly urge anyone that wants to beable to continue RIA development without the potential of infringing on this patent.

    The issue I have with the patent is its broad and sweeping coverage of very common interface and application GUI design systems. As an example reading one portion of the “Summary of The Invention”.

    When editing a component, the user may modify a number of features associated with a component including, but not limited to, the volume of an acoustic component, the link between a menu entry and an associated component, the font, font size, color, or effect of a text field, or the layout, size, transparency, rotation, color, position, or level of any graphical rich-media component. The user may modify these components by means of a slider bar or a textual input field. In addition, the user may modify the volume of a sound component by means of up and down volume buttons. The user may undo modifications made to a component’s parameters. The user may also modify the position of a graphical rich-media component by a graphical input field, by clicking and dragging said component, or by text fields. When the user modifies the position of a graphical rich-media component by means of clicking and dragging said component, said component may align itself to a grid point or a guide line. The user may also modify the style and the Uniform Resource Locator (URL) of a component linked to a menu entry.

    Unless I am mistaken the recently posted link to Netvibes would actually infringe on this part of the patent. In that the user can select ‘panes’ or ‘graphical rich-media components’ of the netvibes application and alter there position within the application by clicking and dragging them to a new position.

    In this example, because there is no specific technology linked to the patent claim, any RIA in any technology, Flash, Ajax, Appolo, XUL Runner, HaXe, Sparkle, add any other future technology here….. These systems would all be in break of the patent claim.

    And this is just ONE of the EIGHTY THREE different claims in this patent.

    Very worrying I think any developer would agree. Everyone involved in Internet application development, in my opinion, should take a serious look at this patent. Think about ANY work they have done or seen in past. The work they are doing today. Then consider the possible implications of future networked development. If you know of anything that has been posted, exhibited or shown publicly that can bring this patent down, it is in every ones interest to make it known to strengthen the Magix reexamination.

    And remember we are not just talking about flash applications or work here. If you remember or are aware of ANY online application, in any technology, be it DHTML, Director, Java or anything else. If it used any, all or even one of these systems to allow user interation then it may well be enough to show that Mr Neil Balthaser did not invent these systems, and certainly has not right to lay claim to doing so as he has in his patent application.

    Landrover Go Beyond, Phase 2 Launched

    Wunderman Interactive have just launched the second phase to the Land Rover Go Beyond site. The site offers user generated input to the content base and utilises a lot of Flash 8 features, with the back end being controlled through Flash Remoting. The challenges on such a flexible project are immense, it was a pleasure to be involved. Congratulations to everyone who touched the project. I imagine there have been a number of late nights in Camden recently 😀

    Flash Localization – Managing Text & Fonts pt.1

    I have had a number of emails, messenger texts, and comment’s on my blog, asking for further information from my presentation notes on localizing flash. Localizing flash has such a wide scope of information, when I prepared my presentation I did take the ‘data blast’ approach of delivery.

    I had a good idea the area(s) that people might like more in depth information, but I also wanted to take into account some broader work flow and process issues that I feel really need to be discussed. In this post I would like to present some more detailed information regarding one of the slides I used at the LFPUG presentation that, as expected, has generated a lot of feed back.

    Managing Text & Fonts

    Continue reading Flash Localization – Managing Text & Fonts pt.1

    Notes On Localizing Flash

    So it’s the day after my presentation on Flash Localization. I was quite happy with how things panned out, given I had been a presentation virgin prior to last night. The presentation didn’t hurt nearly as much as I was afraid of. At least it didn’t hurt me :D.

    Thanks to AKQA for the venue, support, beer and pizza, very nice it was to. Thanks also to Tink for the opportunity to break my cherry, so to speak. And finally thanks to every one that came along to listen to me gibbering on. It must be said this is a subject I have come to build a love-hate relationship with over the many years I have spent in the field. I love the challenge of working to localise the content. I hate the fact that Flash makes even some of the most mundane solutions or Ideas a HUGE Challenge. It would seem I am not alone in this.

    In addition to nattering on myself, I also received some useful information as well, which was great. So thanks for correcting my terminology of Polish as a Cyrillic based Language. Apparently it’s an Extended European language, which would account for me having issues with that one. 😀

    Something I didn’t do last night was to show any code. This was due to operating on a Mac (thanks again Tink) and not being confident enough in my app switching on the alien technology. Below are some snippets I made reference to.

    Continue reading Notes On Localizing Flash

    URGENT!! Signatures Needed for flash 10yr release!

    As myself and Mike (flashgen.com) have mentioned previously we were heavily involved in Flash ‘way back in the day’. During the time we were cutting our teeth in flash’s infancy we were involved in some (IOHO) pretty slick projects. Now if you want those to be seen EVER again we need to get some release forms signed from 2 very specific companies in the UK.

    If you can help us, or you know some one who might be able too PLEASE leave a comment. Let me know if you want it made public or not and I will abide your wishes. What is important is that myself or Mike (flashgen.com) can contact you some how to follow it up.

    If you lead to the project going like I will personally buy you a BIG beers or six, and give you a great big hug (kisses optional).

    The companies and or departments required are.

    BBC Education Department — need to be able to sign release for Medicine Through Time Website. (circa 1998, Flash 3).
    British Telecoms Education Department — need to be able to sign release for BT Time Trek Game. (circa 1998, Flash 3).

    Remember this may be the only opportunity to see these historical examples of what us oldskoolers ‘bled our eyes on’.

    Please spread the word if you are able.

    10 years of flash, my how things have changed.

    It all started at university. Microsoft or MSN Australia I think it was, that was the first ‘flash’ movie I saw. And it changed everything I had seen on the web until then. Of course unlike everything else on the web at that time there was no way to see how they had done it. Or at least you would think 😉 . A few moments in a hex editor to remove those pesky 10th and 11th bytes, if memory serves, that was the ‘copy protection’ and we were off and de-compiling, perhaps the first flash de-compiler was actually UltraEdit? 😀

    As you will have seen Mike Jones (FlashGen.com) and I are meeting to take notes, share war stories and generally reminisce the ‘Good OldSkool Days’. To find out what files we still have, and even which URLs are still live (Flash 3 (alpha) circa 1997/8 btw JD produced by Spooky & the Bandit – you may remember them :p)

    Keep your eyes peal for more news as events unfold….

    ActionScript 3 & Flash 9 Compatibility Info

    Previously I have mentioned concerns with regard to compatibility of Flash Player 9, ActionScript 3, Flex 2, and the recently released Flash 9 Preview. After digging around last night for information on how to get cracking on some Action Script 3 development I found this information on LiveDocs regarding the compatibility of the various flash SWF formats and ActionScript versions.

    • A single SWF file cannot combine ActionScript 1.0 or 2.0 code with ActionScript 3.0 code.
    • ActionScript 3.0 code can load a SWF file written in ActionScript 1.0 or 2.0, but it cannot access the SWF file’s variables and functions.
    • SWF files written in ActionScript 1.0 or 2.0 cannot load SWF files written in ActionScript 3.0. This means that SWF files authored in Flash 8 or Flex Builder 1.5 or earlier versions cannot load ActionScript 3.0 SWF files.

      The only exception to this rule is that an ActionScript 2.0 SWF file can replace itself with an ActionScript 3.0 SWF file, as long as the ActionScript 2.0 SWF file hasn’t previously loaded anything into any of its levels. An ActionScript 2.0 SWF file can do this through a call to loadMovieNum(), passing a value of 0 to the level parameter.

    • In general, SWF files written in ActionScript 1.0 or 2.0 must be migrated if they are to work together with SWF files written in ActionScript 3.0. For example, say you created a media player using ActionScript 2.0. The media player loads various content that was also created using ActionScript 2.0. You cannot create new content in ActionScript 3.0 and load it in the media player. You must migrate the video player to ActionScript 3.0.

      If, however, you create a media player in ActionScript 3.0, that media player can perform simple loads of your ActionScript 2.0 content.

    The full information can be found here:

    Programming ActionScript 3.0 > Overview of ActionScript Programming > Introduction to ActionScript 3.0 > Compatibility with previous versions

    The Dark Art of the XPathAPI

    I’ve personally been using the XPathApi in flash for a little while. I don’t remember how I came across it initially, but I do know that I use it in almost every project I have worked on lately. However it has been bought to my attention by a colleague that not everyone has fallen across this most handy of classes. Below is information and links to help you get the most out of the XPathApi class in flash.

    Continue reading The Dark Art of the XPathAPI

    Loading Images as ‘Best’ in Flash 8

    I noted on this post at Mixmedia that others are having trouble loading Images with the ‘best’ quality in flash 8. For those unsure what this means, the ‘best’ quality setting provides anti aliasing to pretty much all objects in a flash movie, all the time regardless of frame rate loss. This includes Bitmaps. So when you scale or rotate a Bitmap you don�t get nasty jaggies on them.

    A full explanation of the different quality settings in flash can be found here

    Some time ago as Flash 8 was released Tinic Uro posted an explanation of the lack of support for bitmap anti aliasing in flash 8 and also a workaround for it.

    The post is on his archives here

    I have included this workaround in the Flash 8 gallery I posted, and have incorporated it into an Image loader class I am using in a project currently the only note of caution I would have is that this work around really boosts the CPU usage of a movie if you are moving around lots of images.

    As a side note the ‘best’ quality setting was almost lost during the flash 3 alphas as it was thought to be identical in effect as the ‘high’ quality.

    Further Flash Development for PSP

    So over the long weekend I spent some more time plugging away on the PSP version of my portfolio site. And despite my best efforts I have stumbled on an issue that continues to upset the PSP version of the flash player�s limited memory.

    First a little background to the site. The first version of the site was a journey into a completely code generated flash movie. That is to say, every possible aspect would be generated using ActionScript 2. The rational being to learn some more about the Draw API and also get clarify the ideas of OOP and MVC that i had heard so much about all over the web, but had yet to apply to flash properly. That first development has also offered a great focus for development in terms of learning Flash 8 and more recently both Flash 9 or Action Script 3 and now this latest version for the PSP version of the flash player.

    Continue reading Further Flash Development for PSP