Flash CS3 / Flex 2 Error #1017

ActionScript 3 Error #1017: The definition of base class ImportedClass was not found.

Description 1
You may get this error from importing a custom class that does not have the proper package path into a parent class. Another reason you will get this error is if you forget to import the Class that the subclass is extending(see example 2).

Bad Code 1
(subClass called ImportedClass)

package
{import flash.display.MovieClip;
public class ImportedClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}

Parent Class called ImportingClass

package com.cjm
{
import flash.display.MovieClip;
import ImportedClass;
public class ImportingClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}

Good Code 1

(SubClass called ImportedClass)

package com.cjm
{
import flash.display.MovieClip;
public class ImportedClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}
ImportingClasspackage com.cjm
{
import flash.display.MovieClip;
import ImportedClass;
public class ImportingClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}

Bad Code 2

package com.cjm
{
//import flash.display.MovieClip;
public class ImportedClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}

Good Code 2

package com.cjm
{
import flash.display.MovieClip;
public class ImportedClass extends MovieClip
{
public function ImportingClass()
{
trace(“Message”);}}}

Description 2
ActionScript Error #1017: The definition of base class MovieClip was not found.
This ActionScript Error is due to forgetting to import the MovieClip (or any other  referenced class).

Bad Code 3

package com.cjm.sound
{
public class SoundControl extends MovieClip

Good Code 3

package com.cjm.sound
{
import flash.display.MovieClip;
public class SoundControl extends MovieClip

As always – Happy Flashing

SWX – A Great Idea

Aral Balkan has come up with a new way to get server side data from the server and into Flash. This is a very unique method that has great application. You are probably wondering why we need another format to do Flash and server side communication. We have LoadVars(gotta love the .txt files), XML, Remoting(Macromedia Flash Remoting, AMFPHP, WebORB, etc…), JSON, SOAP, XML-RPC, Flash Media Server, Red5, and PHPObject. Some have asked this same question.
When I look at Aral‘s latest project two reasons come to mind of why this is not only a good idea but a great idea.
  1. Mobile Devices.
  2. Data stored on the user computer/device in the form of a swf for local access later.
Some other benefits that Aral states are :

  • It’s simpler to use. (loadMovie(); is pretty easy)
  • Data is deserialized twice only as opposed to four times.
  • You don’t have to learn a new API and can reuse your existing knowledge.
  • It is useful in mobile applications with limited processing power
  • The final downloadable bundles of SWX will contain everything you need to get up and running (you don’t need to buy or download additional tools).

I would really like to focus on the first two items because these have huge implications around what is now possible for mobile devices and for persistent data.

Mobile Devices

The Flash community has been in desperate need of a slim client that doesn’t require huge XML files and can be accessed using just Flash. SWX uses the loadMovie(); command, which we all know has been around since, “Availability: ActionScript 1.0; Flash Player 3″. How easy is that. All you have to do is load a swf into the mobile device and you automatically have all of your data. You access it just like a regular Flash object.

SWX isn’t bogged down by parsing XML and freezing the player while it does so. It is able to be used without heavy load on the processor or large files that have to be parsed. Aral has this to say, “SWX, by design, is the least processor intensive method possible since it is SWF bytecode and that’s as native as you get in Flash.”

Locally Stored Data

Storing Data in a swf is a great concept. It allows the main swf to read and access data from the server without the server load and multiple pings back and forth. I would love to see this concept explored further. It is like an intermediary data base on the users computer. I would imagine that with a little ingenuity and Aral Balkan like genius there could be a way to check if the file is loaded onto the users computer already and if so check a SharedObject for the reference to the local file and only access that swf. This would entirely alleviate the need for a connection after the first time the data is passed into the SWX. Obviously, this has many ramifications, but I would love to see it explored more.

Summary

Great concept, great implementation, and a great way to be more accessible for mobile devices. This is just the solution needed for getting a heavy data app to perform well on mobile devices. I am very excited to see the future of it.

SWX is a great idea.