Posts tagged ‘Flash Tutorial’

Adobe Flash CS4 Tutorial Video

case-disks1Adobe Flash CS4 Tutorial Video

Learn how to use Adobe Flash CS4 from one of the world’s leading trainers, from the comfort of your own desk.

 

watch1

.

Adobe Flash CS4 Tutorial Video – Training Series

With all of the new features Adobe has added to make Flash CS4 Professional easier to learn and easier to use, there’s never been a better time to pick up the software. The object-based design model gets rid of the complicated keyframe system of previous versions and significantly lowers the learning curve for the beginner.

This powerful Adobe Flash CS4 Tutorial Video series makes mastering the program even easier. With a hands-on teaching approach based on showing and not just telling, this instructional video course covers everything from the bare basics of drawing and handling images within the program to how to use sound, video, and animation to bring your project from the idea phase all the way through publication. The unique video format of the course allows you to learn at your own pace, moving from the one tutorial to the next only when you’re ready. You’ll learn how to use all of the new features as well as the old ones, whether your focus is on animation or video, for in-house presentations or distribution on the web. Both PC and Mac compatible, it’s a convenient and affordable way to truly have the advantage with Flash CS4.

Market Advantage

Despite Microsofts’s continued efforts to develop and spread the use of its Silverlight software, Adobe’s Flash is still the king of video and animation on the web. With the additional support Flash CS4 Professional provides for H.264 video encoding and the new animation features it brings to the table, it’s sure to leverage its immense popularity (which Adobe places at 99 percent of internet users) even further.

History and the Future

Since acquiring Macromedia in 2005, Adobe has sought to make Flash more compatible with the other design tools in its product line. These integration efforts begun with Creative Suite 3 have been taken even further in Adobe Flash CS4 Professional. In addition to unifying the appearance of the user interface across the entire productivity suite, Adobe has also made transferring work between programs virtually seamless, perfect for the increasing convergence of print and web design across traditional brick-and-mortar and internet-based industries.

While keeping the core vector graphics functionality that made Flash the market leader, Adobe has added more features to Flash that will ensure its relevance as a future player in premium content markets: a new design model that is object-based and more straightforward for the Flash beginner, additional support for high quality video, more robust tools for editing large amounts of text, and the new creation tools such as the Bones utility for implementing intuitive movement and chain-effects. Brand new 3D Translation and 3D Rotation features allow you manipulate 2D objects and images in three dimensions, and the Deco tool and Spray Brush features allow you to quickly apply decorative fills to give your animations more depth and style.

April 24, 2009 at 7:07 pm Leave a comment

Flash CS4 Tutorial – Copy Motion – Animation

Flash CS4 Tutorial – Copy Motion

Learn how to use Flash CS4 and ActionScript to create complex animations.

From Flash CS3 onwards Adobe introduced a new feature that enables users to copy timeline animation and paste it straight into the actions panel. This allows developers to cut corners when creating complex animations that aren’t so easy to create with just pure Actionscript. The pasted animation has several arrays and variables, take a look at Example 1.1 for an example. The example motions an object from the left of the stage to the right, nothing fancy just a simple animation. At first glance you’ll notice some familiar Actionscript properties such as scaleX and scaleY, these properties are what essentially make up the animation. In this article we’ll be at this technique in greater detail by adding making the code reusable by adding it to other stage objects and building a reusable class.

The files used in this Flash tutorial can be downloaded here

Example 1.1

  import fl.motion.MotionBase;

  import flash.filters.*;

  import flash.geom.Point;

  var __motion_ps:MotionBase;

  if(__motion_ps == null) {

  import fl.motion.Motion;

  __motion_ps = new Motion();

  __motion_ps.duration = 39; 

__motion_ps.addPropertyArray("x", [0,5.78946,11.5789,17.3684,
23.1579,28.9473,
34.7368,40.5263,46.3158,52.1052,57.8947,63.6842,
69.4736,75.2631,81.0526,86.8421,92.6315,98.421,
104.21,110,115.789,121.579,127.368,133.158,
138.947,144.737,150.526,156.316,162.105,167.895,
173.684,179.474,185.263,191.053,196.842,
202.632,208.421,214.211,220]);

 __motion_ps.addPropertyArray("y", [0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);

  __motion_ps.addPropertyArray("scaleX", [1.000000]);

  __motion_ps.addPropertyArray("scaleY", [1.000000]);

  __motion_ps.addPropertyArray("skewX", [0]);

  __motion_ps.addPropertyArray("skewY", [0]);

  __motion_ps.addPropertyArray("rotationConcat", [0]);

  __motion_ps.addPropertyArray("blendMode", ["normal"]);
var __animFactory_ps:AnimatorFactory = new AnimatorFactory(__motion_ps);

__animFactory_ps.transformationPoint = new Point(0.500000, 0.500000);

// __animFactory_ps.addTarget(<instance name goes here>, 0);


  }

In this first part of this tutorial we’ll use the Copy Motion as Actionscript 3.0 technique to make an advertisement banner that’ll have 3 spinning adobe logos. In the download file the stage is already set up with some text and a single spinning Flash logo created on the timeline. The timeline consists of 6 layers that include actions, text, fl, ps and dw. The layer that’s important to us is the fl layer; this layer contains the Motion Tween that we’ll copy and paste into the actions panel, using the Copy Motion as Actionscript 3.0 feature.

Step 1 – Copy The Animation

The first step is to copy the animation itself, so with the very last Keyframe of the fl layer selected we drag and hold the mouse button back to the first Keyframe, highlighting every frame of the animation layer. So it looks like this;

With the frames highlighted we right click and select Copy Motion as Actionscript 3.

Step 2 – Adding The Code To Another MovieClip

Our first objective after copying the timeline animation is to paste the animation into the actions panel, we’ll then be able to add the animation to another MovieClip by making a few changes. To add this too another object in Flash CS4 is simple, near the bottom of the packaged animation you’ll find a line that’s been commentated shown in Example 2.3

Example 2.3

//__animFactory_fl.addTarget(<instance name goes here>, 0);

All that is required is to uncomment the line by deleting the 2 forward slashes then, add the instance name of the object we want to animate, and then enter the amount of times we want the animation to fire. In this case we’re animation the DW MovieClip on the stage and telling the animation to fire once.

Example 2.4


__animFactory_fl.addTarget(dw, 1);

To add the animation to more than one stage object just copy and paste the same line but add a different instance name. For example;


__animFactory_fl.addTarget(dw, 1);

  __animFactory_fl.addTarget(ps, 1);

This would animate the Dreamweaver and Photoshop logos.

Build a Custom Class

Now this animation may not be worth building into a custom class as it only fades and spins an object, but the techniques used to create the class will come in handy. We’ll start by creating a new actionscript file, saving it and calling it Spinner. Inside actionscript file we’ll create the bare bones of a class file.

Package{

Public class Spinner extends MovieClip{

public function spin():void

  {

}

  }

  }

Step 2 – Pasting the Animation Code

We need to copy the animation again using the Copy as Actionscript 3.0 feature so we can paste it inside the Actionscript file. The copied animation should still be on the clipboard but we’ll repeat this anyway. Switching back to the Spinner actionscript file we paste the code below the class code, keeping it out of the way for the time being.

Step 3 –Importing Classes

We need to import the relevant classes or otherwise the animation won’t work. We already have the appropriate classes imported inside the pasted timeline animation; it’s just a matter of having them in correct part of the code. To do this we simply scroll down and copy all the classes from inside the copied timeline animation and paste them inside our package.

Package{

import fl.motion.AnimatorFactory;

  import fl.motion.MotionBase;

  import flash.filters.*;

  import flash.geom.Point;

Public class Spinner extends MovieClip{

 

public function spin():void

  {

}

  }

  }

Step 4 – Declaring the AnimatorFactory

In this next step we’ll declare the AnimatorFactory inside our class, looking at the pasted timeline animation we have an AnimatorFactory object declared inside the function. This is fine but we want to make sure we’re declaring it as an element of the class and not just the function.

Package{

import fl.motion.AnimatorFactory;

  import fl.motion.MotionBase;

  import flash.filters.*;

  import flash.geom.Point;

Public class Spinner extends MovieClip{

var __animFactory_fl:AnimatorFactory;

public function spin():void

  {

}

  }

  }

 

Step 5 – Adding the Animation 

Inside the our spin() function we paste the remaining animation code.

Package{

import fl.motion.AnimatorFactory;

  import fl.motion.MotionBase;

  import flash.filters.*;

  import flash.geom.Point;

Public class Spinner extends MovieClip{

var __animFactory_fl:AnimatorFactory;

public function spin():void

  {

  var __motion_fl:MotionBase;

  if(__motion_fl == null) {

  import fl.motion.Motion;

  __motion_fl = new Motion();

  __motion_fl.duration = 39;

 __motion_fl.addPropertyArray("x", [0]);

  __motion_fl.addPropertyArray("y", [0]);

  __motion_fl.addPropertyArray("scaleX", [1.000000]);

  __motion_fl.addPropertyArray("scaleY", [1.000000]);

  __motion_fl.addPropertyArray("skewX", [0]);

  __motion_fl.addPropertyArray("skewY", [0]);

  __motion_fl.addPropertyArray("rotationConcat", [0,-66.3156,-132.631,
-198.947,-265.263,-331.579,-397.894,
-464.21,-530.526,-596.842,-663.158,
-729.473,-795.789,-862.105,-928.421,
-994.736,-1061.05,-1127.37,-1193.68,
-1260,-1326.32,-1392.63,-1458.95,
-1525.26,-1591.58,-1657.89,-1724.21,
-1790.53,-1856.84,-1923.16,-1989.47,
-2055.79,-2122.1,-2188.42,-2254.74,
-2321.05,-2387.37,-2453.68,-2520]);

  __motion_fl.addPropertyArray("blendMode", ["normal"]);

  __motion_fl.addPropertyArray("alphaMultiplier", [0.000000,0.026316,
0.052632,0.078947,0.105263,0.131579,0.157895,0.184210,0.210526,
0.236842,0.263158,0.289474,0.315789,0.342105,0.368421,0.394737,
0.421052,0.447368,0.473684,0.500000,0.526316,0.552631,0.578947,
0.605263,0.631579,0.657895,0.684210,0.710526,0.736842,0.763158,
0.789474,0.815789,0.842105,0.868421,0.894737,0.921053,
0.947368,0.973684,1.000000]);

 var __animFactory_fl:AnimatorFactory = new AnimatorFactory(__motion_fl);

  __animFactory_fl.transformationPoint = new Point(0.500000, 0.500000);

 //__animFactory_fl.addTarget(<instance name goes here>, 0);

  }

}

}

Step 6 – Adding this Keyword

At the bottom of the code inside our constructor function we have one final piece of code to alter. Just like earlier we uncomment the addTarget line (example 6.1) but this time instead of adding an instance name we use the “this” keyword. The “this” keyword references the object that contains the script. So basically it will animate any object that we connect to this actionscript file.

Example 6.1


//__animFactory_fl.addTarget(<instance name goes here>, 0);

Example 6.2


__animFactory_fl.addTarget(this,1);

Now Lets See The Classes In Action

Now we have our new class lets see it in action. In a new Flash file we have a square drawn out onto the stage that has been converted to a MovieClip, and then has been exported to our Spinner Actionscript class (shown in example 7.1).

Example 7.1

Inside the actions panel of the new Flash file we add the following code. This code creates an instance of our spinner class, adds it to the stage using the addChild() method and finally calls the spin() function.

var test:Spinner = new Spinner();

  addChild(test);

  test.spin();

January 30, 2009 at 12:31 am Leave a comment

Beginners Flash Tutorial – Filters in AS3

For users who prefer to learn Flash visually we have a range of Adobe Flash CS3 video tutorials, this method of training greatly enhances learning and allows beginners to master even the most complex aspects of Adobe Flash with ease.
View the Beginners Flash CS3 Training Video

.

Beginners Flash Tutorial – Filters in AS3

Filters in Actionscript 3.0
In this beginners Flash tutorial we’ll create some filters using Actionscript 3.0. The power of Actionscript 3 allows us to create powerful filter effects and add them to any object. If you’re familiar with blend modes in graphic applications such as Photoshop you’ll recognise some of the blend modes that we’ll be looking at, if your not we’ll go through and explain exactly what each type of effect does. We’ll look at four common filters the drop shadow filter, the bevel filter, the blur filter and the glow filter. We’ll add each of these filters to four separate rectangles and go through their different properties. By the end of this Flash tutorial you will have a fundamental understanding of how to write ActionScript code to create and apply filters to dynamically created graphics and objects.

First we’ll briefly go through creating a basic rectangle for our filter effects;

We create a new Sprite object called filterEffect, this Sprite object will hold all our graphic information. A Sprite is just a movie-clip without a timeline; think of it as a container.

var filterEffect:Sprite = new Sprite();

Using the lineStyle() method we declare the outline properties of the rectangle. This method has 3 parameters available to it, thickness of the line measured in pixels, colour of the line measured in hexadecimal format and finally alpha scale that’s measured in percent (1 = 100%, .25 = 25%). In our code below we have a 2px black line with a 100% alpha property. We assign this method to graphics property of the Sprite object and assign the graphics property to our filterEffect Sprite object.

filterEffect.graphics.lineStyle(2,0x000000,1);

We use the beginFill() method to choose the colour of the rectangle. The beginFill() method has 2 parameters colour and alpha scale, for our code we’ve used a shade of red and set the alpha scale to 90%.

filterEffect.graphics.lineStyle(2,0x000000,1);

Now that we have the colour and outline properties it’s time to draw out the rectangle. Drawing the rectangle itself is pretty straight forward, using the drawRect() method we set the properties we require for the rectangle. The drawRect() method requires 4 parameters, X and Y values, and width and height. The X and Y values indicate the position of where you want to draw out the rectangle, and the width and height determine the size of the rectangle. In our code we’ve positioned the rectangle to a position of 50px by 50px and set the size to 100px by 100px.

filterEffect.graphics.drawRect(50,50,100,100);

Using the X and Y properties we set the position of the Sprite object on the stage to 50px respectively.

filterEffect.x = 50;
filterEffect.y = 50;

Bevel Filter Effect
The first filter we’ll look at is the bevel filter, using the bevel filter gives objects a three dimensional effect. The bevel class allows us to customize the bevel by changing angle, blur and placement properties of the bevel. Below we’ll create a bevel filter and add it to the rectangle we have just created.

First thing we need to do is create a new bevel filter object. We’ll name this bevel object “bevel”. We can manipulate the bevel by adding some parameters; there are a number of different parameters available to us shown below. We’ll be focusing on distance and angle, the distance measures how far or much the bevel gives off a 3d effect and the angle measures the angle of the actually bevel itself. For our code below we’ve given the bevel a distance of 4.0 and a 45-degree angle.

Parameters Available

(distance:Number = 4.0, angle:Number = 45, highlightColor:uint = 0xFFFFFF, highlightAlpha:Number = 1.0, shadowColor:uint = 0×000000, shadowAlpha:Number = 1.0, blurX:Number = 4.0, blurry:Number = 4.0, strength:Number = 1, quality:int = 1, type:String = “inner”, knockout:Boolean = false)

var bevel:BevelFilter = new BevelFilter();
  bevel.distance = 4.0;
  bevel.angle = 45;

We want to make sure that our Sprite object is using the Sprite object is using the correct filters, that means adding the “bevel” filter we’ve just created.

filterEffect.filters = [bevel];

All there’s left to do is add everything to the display list so it’s visible when the file is previewed. Using the addChild() method we add our filterEffect Sprite object to the stage.

addChild(filterEffect);

Bevel Filter Code in Full

var filterEffect:Sprite = new Sprite();
var bevel:BevelFilter = new BevelFilter();
bevel.distance = 4.0;
bevel.angle = 45;
filterEffect.filters = [bevel];
filterEffect.graphics.lineStyle(2,0x000000,1);
filterEffect.graphics.beginFill(0x3174d0,.9);
filterEffect.graphics.drawRect(50,50,100,100);
filterEffect.x = 50;
filterEffect.y = 50;
addChild(filterEffect);

Drop Shadow Filter
We’ve already covered most the code above means, so for the next few examples we’ll just be looking at the code that we haven’t already looked at. In this example we’ll be creating another common filter effect, the drop shadow filter. In the example below we’ll create a new drop shadow object and alter some of its properties to get the effect we want.

Parameters Available

(distance:Number = 4.0, angle:Number = 45, highlightColor:Uint = 0xFFFFFF, highlightAlpha:Number = 1.0, shadowColor:Uint = 0×000000, shadowAlpha:Number = 1.0, blurX:Number = 4.0, blurry:Number = 4.0, strength:Number = 1, quality:int = 1, type:String = “inner”, knockout:boolean = false)

Just like in the previous example we create a new filter effect called dropShadow, in this case it’s a DropShadowFilter. We then add that filter effect to our Sprite object.

var dropShadow:DropShadowFilter = new DropShadowFilter();

dsEffect.filters = [dropShadow];

We’ll give our dropShadow some properties to alter the drop shadow effect. The first property we’ll give it is distance; the distance property alters the offset distance for the shadow, in pixels. The default value is 4. In our code we’ve given it a value of 50px.

dropShadow.distance = 50;

At the moment the drop shadow doesn’t look that realistic so we’ll add some blur to it using the blurX and blurY properties. The blurX and blurX properties dictate the amount of horizontal and vertical blur that’s added, valid values are 0 to 255.0 and the default value is 4.0. In our code below we’ve given the horizontal and vertical blur a value of 10.

dropShadow.blurY = 10;
dropShadow.blurX = 10;

Using the alpha property we’ll change the alpha scale of the drop shadow filter to 60%.

dropShadow.alpha = .6;

Drop Shadow Filter Code in Full;

var dsEffect:Sprite = new Sprite();
var dropShadow:DropShadowFilter = new DropShadowFilter();
dsEffect.filters = [dropShadow];
dropShadow.distance = 50;
dropShadow.blurY = 10;
dropShadow.blurX = 10;
dropShadow.alpha = .6;
dsEffect.graphics.lineStyle(1,0x000000);
dsEffect.graphics.beginFill(0x3174d0,.9);
dsEffect.graphics.drawRect(50,50,100,100);
dsEffect.graphics.endFill();
dsEffect.x = 200;
dsEffect.y = 50;

addChild(dsEffect);

Glow Filter Effect
The GlowFilter class lets us apply a glow effect to objects. In our example we’ll use the color and alpha properties to get the effect we want.

Parameters Available

(color:uint = 0xFF0000, alpha:Number = 1.0, blurX:Number = 6.0, blurry:Number = 6.0, strength:Number = 2, quality:int = 1, inner:Boolean = false, knockout:Boolean = false)

Like with the previous examples we create a new filter object and add it to our Sprite. In our code we create a new GlowFilter object called glow

var glow:GlowFilter = new GlowFilter();

  gEffect.filters = [glow];

We’ll give our GlowFilter 3 properties color, alpha and inner. Lets take a look a closer look at these 3 properties.

The color property indicates the colour of the glow in hexadecimal format.

glow.color = 0xFFFFCC;

The alpha scale we’ve already discussed earlier, we’ve given it an alpha scale of 80%.

glow.alpha = .8;

The inner property specifies whether the object has a knockout effect, this property has 2 values, true or false. True makes the object’s fill transparent and reveals the background colour of the document and false would indicate no knockout effect. In our code we’ve given it a value of false.

glow.inner = false;

Glow Effect Filter Code in Full;

var gEffect:Sprite = new Sprite();
var glow:GlowFilter = new GlowFilter();
gEffect.filters = [glow];
glow.color = 0xFFFFCC;
glow.alpha = .8;
glow.inner = false;
gEffect.graphics.lineStyle(1,0x000000);
gEffect.graphics.beginFill(0x3174d0,.9);
gEffect.graphics.drawRect(50,50,100,100);
gEffect.graphics.endFill();
gEffect.x = 350;
gEffect.y = 50;
addChild(gEffect);

Blur Filter Effect
The blur effect allows us to add a simple blur to any object. This can be good for creating navigation hovers or used in cartoon animations for extra effect.

Parameters Available

(blurX:Number = 4.0, blurry:Number = 4.0, quality = 1)

Again we go through the same process of first creating a new BlurFilter object and assigning it to the Sprite object.

var blur:BlurFilter = new BlurFilter();
bEffect.filters = [blur];

We’ll use the blurX and blurY properties to change the horizontal and vertical blur of the object. Both properties accept value between 0 and 255, for our code below we’ve given both a value of 10.

blur.blurX = 10;
blur.blurY = 10;
Blur Filter Code in Fullvar bEffect:Sprite = new Sprite();
var blur:BlurFilter = new BlurFilter();
bEffect.filters = [blur];
blur.blurX = 10;
blur.blurY = 10;
bEffect.graphics.lineStyle(1,0x000000);
bEffect.graphics.beginFill(0x3174d0,.9);
bEffect.graphics.drawRect(50,50,100,100);
bEffect.x = 50;
bEffect.y = 200;
addChild(bEffect);
We hoped you enjoyed this ActionScript / Flash Tutorial.

December 11, 2008 at 2:42 pm Leave a comment

Beginners OOP ActionScript Tutorial – part 3

For users who prefer to learn Flash visually we have a range of Adobe Flash CS3 video tutorials, this method of training greatly enhances learning and allows beginners to master even the most complex aspects of Adobe Flash with ease.
View the Beginners Flash CS3 Video Tutorial.

.

Instance Variables

Instance Variables are variables that are contained in each ‘instance’ of the Class; so every instance of the TextHandler Class will have it’s own TextFormat variable. Instance Variables should be initialised (given an initial value) in the constructor function, which is called whenever an Object of the Class is created. It is important, however, to refer to the instance variables outside the constructor, as in the above example, so that they are ‘visible’ to the entire Class.

Constructor Function

When you use the keyword ‘new’ to create an Object of a Class, what actually happens is that the ActionScript code within the constructor function for the Class is executed, returning an Object of the Class. The constructor function does not have to have the return type specified, as it is identified by having the same name as the Class itself.

To illustrate, imagine you wanted to create several of the TextHandler Objects, each with different formatting (i.e. different colour, font etc); you could alter the Class declaration so that the constructor function takes parameters indicating e.g. the colour, and these properties of the TextFormat object could be set within the constructor code. This way your main application code could create several different Objects of the TextHandler Class, each handling the textfields that you want to format in the same way (make the changes to your Class declaration and Flash document code):

//class code constructor
public function TextHandler(col:Number)
{
tf=new TextFormat();
tf.color=col;
}

//main code creating object
var myHandler:TextHandler = new TextHandler(0xFF0000);

To test this, place another dynamic textfield on your stage and name it other_txt, again with arbitrary text in it. Now add the following to your Flash document code:

var otherHandler:TextHandler = new TextHandler(0x0000FF);
otherHandler.formatText(other_txt);
//When you test the movie, other_txt should appear blue.

This trivial example may appear odd at first, but once you have gotten into the habit of thinking in terms of Objects, you’ll soon see how the techniques can save you a lot of stress. Experiment within your applications by creating Classes and Objects, with the following additional guidance:

  • Functions can have as many parameters (of any datatypes) as you need, but can only have one return type; you must declare this when you devise the method (as in the stripChars function above where the return type is specified as String).
  • The functions within a Class that are declared with the keyword ‘public’ are those that can be called on any Object of that type, wherever it has been created, as with the formatText method above.
  • Additionally, Classes may feature private functions that are for use within the Class only; these are referred to as ‘helper’ functions and are used in much the same way as the stripChars function was in our original example. You will use such functions within your Classes where processing is repetitive or where the code contained within a function becomes overly long or complicated.

Class Overview

Look again at the (amended) version of your TextHandler Class declaration. In terms of the interface, the Class contains a constructor function (which takes one parameter of the type Number, representing the colour) and a single function for formatting text, which takes one parameter of the type textfield, and returns nothing.

Try adding more functions to the Class – e.g. add the stripChars function, using the keyword ‘public’ in front of it, then try calling it from your movie, passing it a String as in the original example.

In theory, the TextHandler Class could have been created by someone else and you could still use it as long as you know: what the Class is for, what the functions are called (and what their purpose is), what parameters they take, and what data they return, if any. If you think about it, this is all you know about the built-in Classes that you use regularly.

The ‘interface’ can also be made more explanatory through the use of documentation and comments, as is the case with the built-in Classes. You can see an example of this with the official Adobe documentation for the TextFormat Class in ActionScript 3.0 here: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/text/TextFormat.html

- this gives you limited insight into the TextFormat Class declaration.

As with the stripChars helper function example above, if at any stage during your development process, you decide to change any of the implementation details within your Classes’ functions, you should be able to do so without upsetting any other code, as long as your interface remains the same. e.g. If you decided to change the for loop in the stripChars function to a while loop (for whatever reason) it wouldn’t affect the rest of the code, as long as it performs the same function.

Summary

The Object Oriented design method is a good way to achieve well-organised applications, but the success of the technique does depend strongly on Classes being defined in a clear manner. If you’re struggling at all to grasp the technical notions, have a try at using Classes anyway; as long as you stick to the principles outlined above, you should be able to define and create useful Objects.

It can be challenging to understand these notions when you’re starting out as a programmer and have built only relatively small applications. However, even where you are developing applications single-handed, Object Oriented design can make for efficient programs that are easily manageable.

If you’re interested in exploring Object Oriented development further, advanced areas to study include: Packages; Inheritance; Polymorphism; Interfaces; Abstract Classes.

November 7, 2008 at 12:15 pm 1 comment

Beginners ActionScript Object Oriented Programming part1

For users who prefer to learn Flash visually we have a range of Adobe Flash CS3 video tutorials, this method of training greatly enhances learning and allows beginners to master even the most complex aspects of Adobe Flash with ease.
View the Adobe Flash CS3 Tutorial.

.

Object Oriented Programming with ActionScript – part 1

As your Flash applications grow more complex, relying on substantial amounts of ActionScript code, efficiency will become more of an issue. Applications that use well-organised code are more reliable, and lend themselves better to future extension. One approach to developing such systems is Object Oriented design, which we will explore in this tutorial. Even if you’re new to the concept of Object Oriented design, you may find that you have already adopted some of the techniques on which it is based.

The Concept of OOP with ActionScript

You will likely already have used Objects in your ActionScript code whether you’re aware of it or not. For example, your code may have used the TextFormat class:

var tf:TextFormat = new TextFormat();

In this example, we create a new Object of the Class TextFormat. This means that the Object has the properties and behaviour that are defined in the TextFormat Class declaration. This Class is part of ActionScript itself, and you can therefore create and use TextFormat Objects just by inserting the single line above. With Object Oriented design, you will be designing your own Objects, by creating Class declarations for them in ActionScript, then importing them into your Flash for use there.

The concept of Object should be familiar to you if you have used Library items and Symbols in Flash. When you create a MovieClip, for example, and define what happens within it, the MovieClip symbol in your library is like a blueprint or prototype for that kind of Symbol. When you then use instances of the MovieClip Symbol within your Flash movie itself, each of these instances has the properties and behaviour that you defined when you created the MovieClip originally. This process is analogous to what you’ll do with your ActionScript Classes. The Class declaration is where you define the properties (in ActionScript) that any instances of the Class will have when you create them, as with the TextFormat object above.

Well-organised code

The reason for adopting any design methodology is to produce applications that are reliable, efficient and easy to perform future amendments or extensions upon. This is similarly the case with Object Oriented development. To begin, we will look at some of the simple efficiency measures that you can take during your regular programming routine, and demonstrate how these form the basis for the Object Oriented approach.

There are many techniques to achieving well-organised code when creating Flash applications. The simple act of including plenty of comments and whitespace in your code makes for a component that is easier to debug and extend. Similarly, organising your code into sensible chunks of related processing is helpful. When doing this, creating what are referred to as ‘helper’ functions (something that you may have already done), illustrates the basic principle behind Object Oriented design.

Let’s look at a simple example. When you are writing ActionScript code, you will often find that you are carrying out similar processes repetitively. When this is the case, you should consider creating functions to carry out those processes, effectively allowing you to cut down on the amount of code you need to achieve the same functionality. Imagine you have a Flash movie that contains several text Strings whose content varies, maybe the text is being imported from some external file which has unpredictable content. You have decided that you don’t want to display any content that isn’t alphanumeric, i.e. you only want letters and numbers. For this reason you will have to perform text processing on each of the Strings before you display them. Your code might look like this (feel free to paste this into a Flash document to try it out – don’t worry too much about the String processing code if it’s unfamiliar to you, the details are unimportant, but pay attention to the overall structure of the code):

//strings - nonsense
var first_str:String="kdfHGKj kkv e$ deagf% /.;fghlkjsf'h'";
var second_str:String="bcn'l;gH;'(fghsf ";
var third_str:String="bcnf..,\\gj[] *dFG";

//strip out non alphanueric from first
var firstStripped_str:String="";
for(var i:Number=0; i="0" && ch<="9") || (ch>="a" && ch<="z"))
firstStripped_str+=first_str.charAt(i);
}
trace(firstStripped_str);

//strip out from second
var secondStripped_str:String="";
for(var j:Number=0; j="0" && ch<="9") || (ch>="a" && ch<="z"))
secondStripped_str+=second_str.charAt(j);
}
trace(secondStripped_str);

//strip third
var thirdStripped_str:String="";
for(var k:Number=0; k="0" && ch<="9") || (ch>="a" && ch<="z"))
thirdStripped_str+=third_str.charAt(k);
}
trace(thirdStripped_str);

This can be easily improved by making a ‘parameterised’ function, meaning a function that will carry out the same processing but which takes the Strings as parameter, making it adapt to each different circumstance:

//strings - nonsense
var first_str:String="kdfHGKj kkv e$ deagf% /.;fghlkjsf'h'";
var second_str:String="bcn'l;gH;'(fghsf ";
var third_str:String="bcnf..,\\gj[] *dFG";

function stripChars(my_str:String):String
{
var stripped_str:String="";
for(var c:Number=0; c="0" && ch<="9") || (ch>="a" && ch<="z"))
stripped_str+=my_str.charAt(c);
}

return stripped_str;
}

trace(stripChars(first_str));
trace(stripChars(second_str));
trace(stripChars(third_str));

Notice how much more concise the code is – test the movie to check that both versions of the code have the same effect. What you have done is to give the function ‘responsibility’ for the text processing. One of the advantages to doing this is that, if you decide to change the process in any way, you only have to do it in one place (within the function) – this is a single ‘point of change’. Eventually, when you have gotten into the habit of thinking this way when writing your code, you will start to anticipate the practice, rather than carrying it out retrospectively, and will save yourself a lot of time and effort in doing so.

While the above technique does make the code more efficient, it is still ‘procedural’ rather than Object Oriented in structure. Procedural programs are basically a series of instructions being executed in turn. When the movie is run, the code listed on the main timeline is executed in a linear fashion, i.e. each line is processed one after the other until the machine is instructed otherwise. To adopt Object Oriented design, we need to extend the notion of creating ‘helper’ functions, and to develop ‘helper’ Objects to carry out the processing within a movie. In the same way that we allocated the text-processing responsibility to a function, we can assign responsibility for the individual parts of an application to Objects – we can ‘delegate’.

ActionScript Object Oriented Programming Tutorial Part 2

November 7, 2008 at 12:08 pm Leave a comment

Flash Tutorial – Embed Fonts in ActionScript 3

For users who prefer to learn Flash visually we have a range of Adobe Flash CS3 video tutorials, this method of training greatly enhances learning and allows beginners to master even the most complex aspects of Adobe Flash with ease.
View the Adobe Flash CS3 Training Videos.

.

Dynamically Embed Font In Actionscript 3.0

In this Flash tutorial we’ll be looking at how to embed Flash font dynamically using Actionscript 3.0. If you’ve ever used text in your Flash applications you’ve probably noticed that when you preview your Flash file the text doesn’t always render properly. Look at the image below as an example. The first example “Text Example A” has been embedded with Actionscript and the second example “Test Example B” was typed out on the stage using the basic text tool. You can clearly see the difference in the two.

Embedding your flash font also has other advantages;

  • Embedded font characters are anti-aliased, making their edges appear smoother, especially for larger text.
  • You can rotate text that uses embedded fonts.
  • Embedded font text can be made transparent or semitransparent.
  • You can embed almost any type of font on your system.

Step 1 – Library Panel

Our first task is to create a new font symbol to do this we need to open up the Library Panel (Window – Library). Inside the library panel we create a new font by clicking the drop down arrow and selecting New Font from the drop down box, this will open up the Font Symbols Properties Dialog Box. Inside the dialog box we define a name for our font symbol and select the font styles and properties that we require.

 

We then export our Font Symbol for Actionscript so that Actionscript has access to the font symbol. To do this we Right Click the font name and select Linkage from the drop down menu.

 

Once we select Linkage from the menu the Linkage Properties Box pops up. Inside the Linkage properties box we check the “Export For Actionscript” checkbox and give it a class name, in this case we’ve just kept the default class name that flash has provided for us.

So to recap;

  1. Open the library panel (Window – Library).
  2. Select New Font from the Library Panel menu.
  3. Enter a name for the font in the Name field.
  4. Select the font and styles that you require for the application.
  5. Right click the new font inside the library and select Linkage.
  6. Check the export for Actionscript checkbox.
  7. Give it a unique class name or keep the default name (Font1).

Step 2 – Adding Actionscript

Our next task is to create some Actionscript so select the first Keyframe on the timeline and press F9 to open up the actions panel. We need to create a text field for the text so we create a new TextField object and call it flashText. This creates an instance of the TextField class and gives us access to all the properties, methods and events of that class.

var flashText:TextField = new TextField();

Our TextField is empty so we use the text property to fill it with the text of our choice, in this case it’s “Text Example A”.

flashText.text = “Text Example A”;

We can position the TextField where we want on the stage by changing the X and Y properties. The X and Y properties in Actionscript are measured in pixels and the default value is 0.

flashText.x = 25;

flashText.y = 30;

 We want to access the font that we created in step one, by creating a new instance of the Font1 symbol object gives us access to it. We’ll name this object myFont.

var myFont:Font = new Font1();

Next we create a TextFormat object called textFormat, again giving us access to all the properties, methods and events available to that class. The TextFormat class will allow us to change the size and font properties.

var textFormat:TextFormat = new TextFormat();

This line sets the font property to the flashText object’s fontName property. Essentially making sure the textFormat font property is using the font we have embedded.

textFormat.font = myFont.fontName;

Set the text size of the text to 26px.

textFormat.size = 26;

The autoSize property controls automatic sizing and alignment of text fields. We’ll us this property to align the text inside the TextField to left-justified text, this just works in the same way as left justified in a word document for example.

flashText.autoSize = TextFieldAutoSize.LEFT;

The defaultTextFormat property specifies the format applied to newly inserted text, it sets the TextFormat properties to the TextField.

flashText.defaultTextFormat = textFormat;

Setting the TextField embedFonts value to true tells the Flash Player to use the embedded font instead of the default device font.

flashText.embedFonts = true;

Setting the antiAliasType property to AntiAliasType.ADVANCED sets the text inside the TextField to anti-aliasing to advanced anti-aliasing. This allows the font to be shown at a high quality when using smaller font sizes.

flashText.antiAliasType = AntiAliasType.ADVANCED;

The addChild()method adds the TextField to the stage, making it visible when the file is previewed.

addChild(flashText);

Code In Full;

var myFont:Font = new Font1();
var textFormat:TextFormat = new TextFormat();
textFormat.font = myFont.fontName;
textFormat.size = 26;
var flashText:TextField = new TextField();
flashText.autoSize = TextFieldAutoSize.LEFT;
flashText.defaultTextFormat = textFormat;
flashText.embedFonts = true;
flashText.x = 25;
flashText.y = 30;
flashText.antiAliasType = AntiAliasType.ADVANCED;
flashText.text = “Text Example A”;
addChild(flashText);

November 5, 2008 at 4:26 pm 1 comment

Flash CS3 Tutorial – Create a Custom Scrollbar with ActionScript

For users who prefer to learn Flash visually we have a range of Adobe Flash CS3 video tutorials, this method of training greatly enhances learning and allows beginners to master even the most complex aspects of Adobe Flash with ease.
View the Flash CS3 Tutorial Videos .

.

Would you like to be able to create your own cool, custom Flash Scroll Bar. This Flash Tutorial shows you how, with a little bit of ActionScript 3 you’ll be on your way.

Flash CS3 Tutorial – Create a Custom Scrollbar with ActionScript

In this tutorial we’ll look at how to create a custom scrollbar using Flash and Actionscript 3.0. In the download file (To download right click and save target as ) we have 3 main graphics, two arrows and a rectangle. The two arrows will act as our scrollbar navigation allowing us to scroll up or down. The rectangle will act as the slider and will work in the same way as the scrollbar in your browser window. We’ll create a TextField and connect it to the movie clips using actionscript allowing the text to scroll with the scrollbar.

Downloads for this Flash Tutorial
Example SWF File
Download FLA File
(To download right click and save target as )

Lesson 1 – Setting Up The Movie-Clips

First we need to convert the arrow and rectangle graphics into Flash Movie-Clips, and give them each unique instance names.

Select the rectangle, press F8, choose Movie-Clip from the type options and click Ok.

Click the new Movie-Clip to make sure it’s selected and go down to the properties inspector and type “slider” inside the text box. This will give the Movie-Clip the instance name “slider” and allow us to control the Movie-Clip with Flash Actionscript.

Repeat this step for the up and down arrow graphics but give them the instance names upArrow and downArrow respectively.
Step 2 Setting Up The Text Field

In this step we’ll create the text that will be controlled by the scrollbar, instead of using the basic text tool to create the text we’re going to dynamically create it using actionscript. We’ll use the TextField and TextFormat classes to create, format and position the text on the stage. Below we’ll break the code down line by line to see what it all does.

If you haven’t already done so select the first keyframe on the timeline and press F9 to open up the actions panel.

First we create a new TextField object called theText. This creates a new instance of the TextField class giving us access to all the properties, methods and events inside that class.

var theText:TextField = new TextField();
Next we create a TextFormat object called theFormat, again giving us access to all the properties, methods and events available to that class. The TextFormat class will allow us to change the size and font properties.

var theFormat:TextFormat = new TextFormat();

At the moment our TextField is empty so we fill it with some text using the text property.

theText.text = “This is a custom made scrollbar. At quod soleat voluptua pri, congue copiosae vulputate ea vel, sit solum facer dicta ne. Sit vide singulis voluptatum cu, est et porro nominati iudicabit, ius et dicit perfecto volutpat. Altera iriure incorrupte est eu, et usu graece fuisset, pri libris epicurei neglegentur an. Usu nibh velit accusata cu, pro ad graecis phaedrum indoctum. Facilis nusquam id ius, ut sonet legimus has. Veniam eruditi graecis sed ei, est id alterum dolorum omittantur. Libris semper quo cu, ius rationibus delicatissimi signiferumque ut, in enim elit corpora sit. Et ius aliquam bonorum ancillae, vix ei quis atqui. Debet dicunt senserit ne sed, solum ponderum persecuti eos et, ullum antiopam expetenda usu eu. Eu nec doming everti nominavi, eu mea falli utroque facilis. An quot quas sonet sit, id vim laudem dolorum, ne vel veritus denique constituto.”;

Sets the text size to 15px.

theFormat.size = 15;

Using the setTextFormat()method sets the font property to the theText object’s theFormat property. In simple terms it combines the TextFormat properties to the TextField.

theText.setTextFormat(theFormat);

Setting the wordWrap value to true will word wrap the text inside the TextField.

theText.wordWrap = true;

Currently all of the text sits on a single line, setting the multiline value of the TextField to true will ensure that the text will appear on multiple lines.

theText.multiline = true;

We want to position the TextField alongside the scrollbar, so we change the X and Y positions of the TextField to 100px respectively.

theText.x = 100;
theText.y = 100;

At the moment our TextField size is really small, we resize it by changing the width and height values to 300px and 160px respectively.

theText.width = 300;
theText.height = 160;

The addChild method adds the TextField to the stage, making it visible when you preview the file.

addChild(theText);

Step 2 – Setting Up The Scroll Arrows

In this step we’ll give the up and down arrows some MouseEvents and functions, enabling us to manipulate the position of the text inside the TextField.
When you hover over a link on the Internet the cursor state changes from an arrow to a hand pointing, to create the same effect with Actionscript we set the buttonMode value to true. Setting the buttonMode value of the up and down arrows to true gives us the hover state effect.

upArrow.buttonMode = true;
downArrow.buttonMode = true;

The arrows on the stage need to listen for mouse clicks, we use the addEventListener()method to achieve this. The addEventListener()methods below each have three parameters class type, property and unique name. The main parameters in our code are MouseEvent and CLICK, selecting MouseEvent gives us access to the MouseEvent class and inside that class we choose the CLICK property. Finally we name them scrollUP and scrollDown respectively.
upArrow.addEventListener(MouseEvent.CLICK, scrollUP);
downArrow.addEventListener(MouseEvent.CLICK, scrollDown);
At the moment nothing happens when we click the up and down arrows, we need to create some functions for the scrollUP and scrollDown event listeners. We want the text in the TextField to scroll up or down depending on which arrow is clicked, with the use of the scrollV property and a little math this can be accomplished. The scrollV property allows us to manipulate the vertical position of the text inside the TextField; it’s measured in lines making it easy to change the text’s position inside the TextField. Inside the scrollUP function we subtract the scrollV value by one each time the function fires, essentially subtracting one line of text each time the up arrow is clicked. For the scrollDown function the opposite is required and we add one each time.
function scrollUP(event:MouseEvent):void {

theText.scrollV -=1;

}
function scrollDown(event:MouseEvent):void {

theText.scrollV += 1;
}
Step 3 – Controlling The Slider
The final and most difficult step of this Flash tutorial is controlling the slider. We’ll create boundaries to control where the slider can and cant scroll too. We’ll then create some eventListener()methods and functions to attach the TextField to the slider.
First we create a new Rectangle object called area to create some boundaries for the slider. The arguments for the Rectangle object are x position, y, position, width and height. In our case we want the boundaries to start at the same position as the slider position, we do this by declaring the x and y positions as slider.x and slider.y. For the width and height of the Rectangle argument we specify 0 and 90 respectively, 0 because we don’t want to be able to move the slider horizontally and 90 because the height of our slider background on the stage is 90px.

var area:Rectangle = new Rectangle(slider.x, slider.y,0,90);

The next step is to create some mouse events for the slider so that we’re able to drag the slider. We’ll use MOUSE_UP and MOUSE_DOWN events from the MouseEvent class that’ll allow us to drag and drop the slider. One noticeable difference between the 2 methods is that the sliderOut event listener is attached to the stage and not the slider, if we attached it to the slider the scrollbar would continue to scroll even when we click away from the slider. Attaching it to the stage gets around this problem.

slider.addEventListener(MouseEvent.MOUSE_DOWN, sliderDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, sliderOut);

As stated before we want to be able to drag and drop the slider, creating functions with the methods startDrag() and stopDrag makes this simple. startDrag() you’ll notice has 2 parameters false and area, the first parameter is a Boolean value called lockCentre. The lockCenter value is set to false, locking to the point where you first click. The second parameter bounds is a Rectangle value that allows us to specify a rectangle boundary area, we’ve already created the boundary inside the area Rectangle object so we call that by typing “area” for the second parameter. The stopDrag() method doesn’t require any parameters as it just cancels the drag.

function sliderDrag(event:MouseEvent):void {
slider.startDrag(false,area);
}

function sliderOut(event:MouseEvent):void{
slider.stopDrag();

}

Next we have to create some EventListeners() to listen for a SCROLL event and an ENTER_FRAME event. The SCROLL event will listen for when the text inside theText TextField is being scrolled. The ENTER_FRAME fires constantly at the same rate as the frame rate. We’ll name these EventListeners() textScrolled and theSlider respectively. In the next step we’ll create some functions for these EventListeners.

theText.addEventListener(Event.SCROLL, textScrolled);
theText.addEventListener(Event.ENTER_FRAME, theSlider);
At the moment the slider drags up and down within the boundaries specified earlier but it doesn’t actually scroll the text. To scroll the text with the slider we create a function with a small calculation that attaches the text position to the slider position.  First we set the vertical position of theText TextField equal to Math.round making sure the calculation gives us a whole number, remember we want to scroll down line by line otherwise we’d end up having some lines getting cut off. Inside the brackets we create the calculation, we’re looking for how far the slider has scrolled so we subtract the sliders y position by the area’s y position and multiply that by the maximum scroll value of the TextField, then finally divide that value by the height of our area (90).

function theSlider(event:Event):void
{
theText.scrollV = Math.round ((slider.y – area.y)* theText.maxScrollV/90)
}

When we click either the up or down arrows the slider doesn’t move position. To make this scrollbar complete we want the slider to move in conjunction with the text when we scroll with the arrow buttons. Inside the function we’ll create a small calculation so that the slider follows the text position. First we set the slider.y position to the y position of our area rectangle. We add that to the calculation inside the brackets. The calculation adds the vertical position of our text (theText.ScrollV), multiplied by the height of the of our boundary area (90) and divides it by theText Textfields maximum ScrollV position.
function textScrolled(event:Event):void
{
slider.y = area.y + (theText.scrollV * 90/theText.maxScrollV);
}

October 27, 2008 at 10:55 pm Leave a comment


Follow us on Twitter


Follow

Get every new post delivered to your Inbox.