You CAN save in Flash 10

So here is the official word from the Flash Player 10 Release Notes on Adobe Labs

File Reference runtime access — Bring users into the experience by letting them load files into your RIA.  You can work with the content at runtime and even save it back when you are done through the browse dialog box.  Files can be accessed as a byteArray or text using a convenient API in ActionScript without round-tripping to the server.  You no longer have to know a server language or have access to a server to load or save files at runtime.

I can’t tell you how happy that I am to have this feature back.  You can see an example of this on the Flash 10 videos with Justin Everrett-Church and right near the end of the Pixel Bender video Justin says “I can go down here and hit save….” and he saves an image directly from Flash to his desktop.  This is Fantastic!!!!

Happy Flashing to all,

Curtis J. Morley

Is the Save Function Back in Flash 10?

Long ago in a sandbox far-far-away there lived an undocumented function in Flash called “Save”.  For those that knew about it, it was a great way to get data out of Flash and into a text file on the users machine.  It came in very handy in many cases.  I even used it to record the results of my final exam while teaching Flash at SLCC.  The final exam was done in the form of “Who wants to be a Millionaire” and the results were spit out in a nice little text file that the students had no idea about.  It was very handy.

Soooooo…..

I have been watching the Flash 10 videos with Justin Everrett-Church and right near the end of the Pixel Bender video Justin says “I can go down here and hit save….”  Did Adobe jump out of the sandbox and open up the long time missing “Save” functionality that we haven’t seen since the Flash 5 days?  OR is this just an AIR app?  Please tell me that this is opened up again because it gives so many possibilities.

Please post here if you have any info.  Adobe, Justin Everrett-Church, Anyone….

Flash Player 10 is Released

Many of you probably already know but Flash Player 10 beta has just been released on Adobe Labs. This is a very exciting release of the player. Features include:

3D Effects – Easily transform and animate any display object through 3D space while retaining full interactivity. Fast, lightweight, and native 3D effects make motion that was previously reserved for expert users available to everyone. Complex effects are simple with APIs that extend what you already know.

Custom Filters and Effects – Create your own portable filters, blend modes, and fills using Adobe® Pixel Bender™, the same technology used for many After Effects CS3 filters. Shaders in Flash Player are about 1KB and can be scripted and animated at runtime.

Advanced Text Layout – A new, highly flexible text layout engine, co-existing with TextField, enables innovation in creating new text controls by providing low-level access to text offering right-to-left and vertical text layout, plus support for typographic elements like ligatures.

Enhanced Drawing API – Runtime drawing is easier and more powerful with re-styleable properties, 3D APIs, and a new way of drawing sophisticated shapes without having to code them line by line.

Visual Performance Improvements – Applications and videos will run smoother and faster with expanded use of hardware acceleration. By moving several visual processing tasks to the video card, the CPU is free to do more.

Other things that you will want to check out –

Flex SDK to Develop for Flash 10

Flash 10 Demo and Videos

Flash 10 Beta Full Release Notes (This is all the good stuff that is not in the marketing Fluff)

Flash 10 Bug Report

* Warning* – Installing Flash 10 Player may hamper your current Flash/Flex development and testing.

Thanks and as always – Happy Flashing

Curtis J. Morley

Updated info on ActionScript 3 Warning #3590

Updated info on AS3 Warning #3590

I added some data to ActionScript Warning #3590

Go check it out.  For anyone transitioning from AS2 to AS3 this will be very helpful.

Happy Flashing,

Curtis J. Morley

ActionScript ReferenceError: Error #1056

ReferenceError: Error #1056: Cannot create property _x on flash.display.Sprite

or

ReferenceError: Error #1056: Cannot create property someVar on flash.text.TextField.

ActionScript 3 Error #1056 Description:
AS3 error 1056 appears when you have improperly referenced a property of an object. This will happen when you misspell something or when you reference variables in the AS2 fashion with a leading underscore ( _ ). AS3 error 1056 is actually pretty nice to work with because it tells you exactly what variable didn’t work and it tells you which object it didn’t work on.

You can also get this error if you try to dynamically assign a variable to an object that doesn’t naturally accept one like a textField.  See Bad Code 3.

Flash / Flex Error 1056 Fix:
Simply spell the property correctly or make sure that you are using AS3 Syntax instead of AS2.


Bad Code 1:

var s = new Sprite();
s._x = 100;

Good Code 1:

var s = new Sprite();
s.x = 100;

Bad Code 2:

var t = new Timer(1000, 4);
t.dela = 500;

Good Code 2:

var t = new Timer(1000, 4);
t.delay = 500;

Bad Code 3:

myTextField.someVar = “something”;

This should help you resolve Flex / Flash Error #1056

Thanks and as always Happy Flashing

Curtis J. Morley

Related ActionScript Error(s):
Flash / Flex Error 1119
– You will get AS3 Error 1056 instead of 1119 if you don’t properly type your object before referencing a property on it. For example var s:Sprite = new Sprite(); s._x = 10; will give error 1119 but var s = new Sprite(); s._x = 10; will give Error 1056.
Flash / Flex Error 1151
Flash / Flex Error 1069
– This is the error you will get if you try and call a method with a misspelled name in the same way as calling a property with a misspelled name.

And the Winner is…

CurtisMorley.com logo winner

Thank you everyone for voting for my new logo. I had a great response. This is the winner. Using Google Analytics and Flash I was able to tell how many people voted, how many voted after viewing all the logos and how many people voted prematurely. I can tell how much time people spent on each logo, whether they preferred black-and-white or color and of course which logo was voted most popular among my readers. Look for the tutorial on how to do this with Flash/Flex coming soon.

Thanks again.

Happy Flashing and Analytics

Curtis J. Morley

Flash / Flex 3 Error #1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObject.

ActionScript 3 Error #1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObject.

ActionScript 3 Error #1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObjectContainer.

ActionScript 3 Error #1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:Stage.

Description:
AS3 error 1061 will pop up when you trying to referencee an object from within a function that receives an Event. When you do this it will reference the DisplayObject or if you call out to this.parent rather than event.target.parent it will reference the DisplayObjectContainer which doesn’t have a lot of methods with it.

Fix:
One solution to solve Flex/Flash Error 1061 is to make sure that you are using the event that is passed as the target by using

Bad Code 1:

getStarted_btn.addEventListener(MouseEvent.MOUSE_UP,gotoFrame10 );

function gotoFrame10 (e:MouseEvent)
{
this.parent.gotoAndStop(10);
}

Good Code 1:

getStarted_btn.addEventListener(MouseEvent.MOUSE_UP, gotoFrame10);

function gotoFrame10 (e:MouseEvent)
{
e.target.parent.gotoAndStop(10);
}

This should help you resolve Flash / Flex Error #1061

Thanks and as always Happy Flashing

Curtis J. Morley

Flex / Flash Error #1151

ActionScript Error #1151: A conflict exists with definition progBar in namespace internal.

ActionScript 3 Error #1151
Description:
AS3 error 1151 is an easy one. This means that within your ActionScript class(namespace internal) there is already a variable or function by that name.

Fix:
To solve Flex/Flash Error 11151 just hit CTRL-F(Apple-F) and search for that term that has a conflict and change it to something appropriate. You may have been building a particle system or working with an X or Y variable and forgot to change one of them so that they both read exactly the same. The example below shows what I mean and how to solve the issue.

Bad Code 1:

public class Particle extends Sprite
{
public var xVelocity:Number;
public var xVelocity:Number;

Good Code 1:

public class Particle extends Sprite
{
public var xVelocity:Number;
public var yVelocity:Number;

This should help you resolve Flash / Flex Error #1151

Thanks and as always Happy Flashing

Curtis J. Morley

Related Error(s) : ActionScript Error #1024 , ActionScript Error #1056

Flex / Flash ActionScript Error #1059: Property is read-only.

AS3 Error 1059: Property is read-only

ActionScript Error 1059 Description

ActionScript 3 Compiler Error 1059 just means that you are trying to write to something that is read only. Flash/Flex let’s you know that you are assigning a variable while at the same time evaluating to see if it is true. This AS3 Error is easy to understand and correct.

ActionScript Error 1059 Solution:The fix for Flex/Flash Error 1059 is to make sure that you are writing to writable property and not trying to write to a read only property. This is shown in two ways below.

Bad Code 1:

if(textName.length = 5)

Good Code 1:

if(textName.length == 5)

Bad Code 2:

var occurence:SharedObject = new SharedObject()occurence.data = “first”;

Good Code 2:

var occurence:SharedObject = new SharedObject()occurence.data.whichTime = “first”;

And now you know how to solve Flex /Flash Error 1059.

As Always – Happy Flashing

Curtis J. Morley

Flash CS3 / Flex 2 AS3 Error #1118

ActionScript Error #1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject

ActionScript Error #1118 can be caused by working with the Display Object. What happens is that as soon as you put a MovieClip, Sprite, etc… into the DisplayObject Flash/Flex thinks that any parent is of Type DisplayObject. Even though you know perfectly well that the object that contains your Sprite is another Sprite or MovieClip Flex and Flash don’t know it. You may have encountered this Flex/Flash Error when you tried to call this.parent from within a Sprite or Flash MovieClip after using addChild() (among others) to display or modify the display of a MovieClip/Sprite on the stage. The compiler doesn’t keep track of the Type that the parent is so when you call parent the compiler is confused. Instead it assigns the Type DisplayObject. Your code should still keep working even if you get this error, but there is a reason why the compiler gives you this error. I will show you how to get around this error and how to prevent yourself from getting this error in the future. This AS3 Error can happen any time that you are using any of the following methods:

  • addChild(); Adds a child DisplayObject instance to this DisplayObjectContainer instance.
  • addChildAt(); Adds a child DisplayObject instance to this DisplayObjectContainer instance.
  • contains(): Determines whether a display object is a child of a DisplayObjectContainer.
  • getChildAt(); Returns the child display object instance that exists at the specified index.
  • getChildByName(): Retrieves a display object by name.
  • getChildIndex(): Returns the index position of a display object.
  • setChildIndex(): Changes the position of a child display object.
  • swapChildren(): Swaps the front-to-back order of two display objects.
  • swapChildrenAt(): Swaps the front-to-back order of two display objects, specified by their index values.

Another reason you may get this ActionScript3 Error is by having an external class that is assigned to an object at runtime. Because the class is not predetermined therefore the compiler chokes.

AS3 Error #1118 Solution. You can resolve AS3 Error #1118 by doing one of three things. The first and most highly suggested is to change the way you code. Think from an outside-in perspective when coding rather than an inside-out mentality. The second is to cast the object as the proper Type which explicitly tells the compiler the type of the parent. The third is to just turn off verbose comments in your settings. I don’t suggest doing this last fix as it could lead to many more headaches and is horrible when working with a team.

AS3 Error 1118: Fix #1 – Object Oriented Scripting. Code with an outside-in perspective. This means that instead of the child telling the parent what to do the parent tells the child what to do. This may become tricky if you are completing an animation and need an event to happen when the inner movieClip reaches a certain frame. It is still possible and I may post a tutorial on how to do this with Flash in the near future. But this post is not the right place for it. You can pick up Essential ActionsCript 3 by Collin Moock for a great reference and starting point.

AS3 Error 1118: Fix #2 – Cast the object as the type that you know it is. If you know that it is a MovieClip then tell Flash that it is a MovieClip. You do this by Casting the object as shown below.

Bad Code:

this.parent.doSomething();

Good Code:

MovieClip(this.parent).doSomething();

or

(this.parent as MovieClip).doSomething();

AS3 Error 1118: Fix #3*Warning* This method will solve the problem temporarily and allow you to publish your code BUT it will cause you many headaches later. You will not get any warnings or error messages and this is a bad thing I Promise! If you are going to proceed down this path make sure to recheck these boxes after you are done publishing your one problem movie. With that much said, The way you do this is to turn off Strict (Verbose) Error Messages in your preferences as shown below.

Go to File >> Publish Settings >> Click on the “Flash” tab >> Next to “ActionScript version:” click the “Settings…”

AS3 Error 1118 -Implicit Coercion

Thanks and as always Happy Flashing,

Curtis J. Morley