May 3

pelican

I’ll be out for a few days on vacation again, so here’s something that might keep things interesting around here.

Have you ever wondered how those O’Reilly books got their covers? How did they choose the animal for a specific book? Why did they even choose animals in the first place?

Their website posted an article answering those questions, with a step-by-step image on creating one of the animals (a pelican).

Read the article.


May 2

May 1st just went by, and all the participants now have their rebooted sites up. There must be at least a hundred participants for this. I registered on the site last month, just for kicks, but I never really got around to making my site.

Head on over to the site and have a look at all the new sites that went up at the same time, and cast your votes for your favorite.

http://www.may1reboot.com/2008/


Apr 23

I was just getting the hang of creating liquid layouts in AS2.0 a few months ago, and boy, is it quite a concept to grasp. Now I have to relearn everything I learned using AS3.0.Thankfully, once I understand the concept, all I have to do now is do it with unfamiliar syntax.

In this little tutorial, I’ll show AS2 and AS3 code showing the same end result. This is just very basic, just showing the differences between the two (which isn’t much), and to show how to get started with creating liquid layouts.

By the way, liquid layouts are layouts that change dynamically according the stage’s size. Not unlike liquid in a container, which takes the container’s size and shape, thus the name. ;-)

The movie shows 4 boxes I drew on four sides of the stage, changing position according to the stage’s size. Obviously, you could also adjust other properties of the MovieClip, like scale, alpha, rotation, etc.

First, the AS2.0 code:
[sourcecode language='jscript']Stage.scaleMode = “noScale”;
Stage.align = “TL”;

setStage();

var stageListener:Object = new Object();

Stage.addListener(stageListener);
stageListener.onResize = function() {
setStage();
};

function setStage() {
var WIDTH:Number = Stage.width;
var HEIGHT:Number = Stage.height;

box1._x = WIDTH-box1._width;
box1._y = HEIGHT/2-(box1._height/2);
box2._x = WIDTH/2 - (box2._width/2);
box2._y = 0;
box3._x = 0;
box3._y = box1._y;
box4._x = box2._x;
box4._y = HEIGHT - box4._height;
}[/sourcecode]

AS3.0:

[sourcecode language='jscript']
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

setStage();

stage.addEventListener(Event.RESIZE, stageResize);

function setStage():void{
var WIDTH:Number = stage.stageWidth;
var HEIGHT:Number = stage.stageHeight;
box1.x = WIDTH - box1.width;
box1.y = HEIGHT/2 - (box1.height/2);
box2.x = WIDTH / 2 - (box2.width/2);
box2.y = 0;
box3.x = 0;
box3.y = box1.y;
box4.x = box2.x;
box4.y = HEIGHT - (box4.height);
}

function stageResize(e:Event):void{
setStage();
}
[/sourcecode]
So, there isn’t really much difference between the two. AS3 is easier to understand because of its better event handling methods.

A little explanation for the 2 codes above, since they are quite similar. The first 2 lines are very important. Basically, they are telling the player to not do anything to objects on the stage when the stage is resized, because we want to control everything that happens when the stage is resized by code. Without those lines, the movie won’t work as expected.

The setStage() function is pretty self explanatory, it is where we do all the positioning of the movieclips. I like to put all of the code that does the positioning, resizing, etc. work in a function (preferably rolled into one), so I could call it at least once anytime I want. This is useful when initializing the movie, where all the movieclips might not be in their right place. And it is easier to put into the listener function too. You could also do it in the listener function, but I don’t recommend it.

We then call the setStage() function at least once, to position our movieclips where they should be, because when I created them in Flash, they are pretty much all over the place. If we don’t call that function, then they’ll only fall into place when we start resizing the stage.

And now to the part where the two codes are most different. Adding listeners to the stage. In AS3, it is quite straightforward. We add a listener, in this case stageResize() and listen to RESIZE events, to the stage object, which does nothing but call setStage(). You could also add other functions in there if you want to do something else when the stage resizes. In AS2, we have to create a listener object, tell that object to listen for the resizing event and execute the setStage() function. Again, you could add other functions in there.

So, there you have it. A basic Flash liquid layout. I hope this helps anyone who is having a hard time understanding this concept (I know I did). Now, this tutorial only showed changing the position of movieclips, by assigning values to them. But you could also change their position and/or size by percentages. Like 30% of the stage (I know this tutorial shows applying 50% of the stage), so you could adjust the visual elements of your movie to fit any size of resolution properly, at a limit of course.

NOTE: Notice the capital ‘S’ in Stage in the AS2 code and the small ’s’ in the AS3 code. Don’t mess those up!

Here are the source files of this tutorial.

AS2 source (Flash 8 )

AS3 source (Flash CS3)


Apr 15

Here’s a cool site. It’s main feature is an RIA that allows you to create fonts and share it with the community. That’s right, creating fonts online for free. I am so impressed with what people can do with the web these days.
You could create any font you could imagine. From simple pixel fonts, to dingbat style fonts.
The gallery is very impressive. There’s some really nice fonts there, all created with FontStruct and free to download and use. You could even “clone” someone else’s work. To download a font, click on the font name or double-click on the preview.
FontStruct gallery
The application itself is a work of art. Its interface is very intuitive, its tools adequate, and it’s just so comfortable playing/working with it. You could save your work, it even has hotkeys for undo, redo, tool selection, etc. Although you are limited to the “bricks” provided, they are more than enough to create a wide variety of fonts.
Go to http://fontstruct.fontshop.com/ to get started in creating your own fonts. You need to register for free though to use the fontstructor and download fonts.


Apr 14

So in this blog, I’ll be posting things I learn each day (hopefully), about programming, life, etc. The things I post here might not be completely correct or true, but they are what I learned and I post them as I understand them. Corrections would be very much appreciated.
I’ll call it the [Learn] series. :P

NOTICE: I am telling this as how I understand it from reading other tutorials on the web. This is possibly very inaccurate, but maybe you could understand things you haven’t understood before by reading how I understand it. :-/

Event handling in AS3.0 is very different from AS2.0. One of my most used events is onEnterFrame events.

In AS2.0, animating a simple box to move to the right every frame would look like this:
(please bear with me and the unformatted code)

[sourcecode language='js']box.onEnterFrame = function(){
this._x += 1; //execute this code everytime the box movieclip enters a frame.
}[/sourcecode]
but in AS3.0, it is a little longer, and I may still have to see the real benefits of this. But already, I am liking how easy it is to understand.

[sourcecode language='js']function moveBox(e:Event):void{
this.x += 1;
}
box.addEventListener(Event.ENTER_FRAME, moveBox);[/sourcecode]

the addEventListener method tells the box MovieClip to execute the function moveBox, everytime an ENTER_FRAME event is generated(which is all the time).

Notice the moveBox function has an Event parameter. When a function has an Event type parameter, it becomes a listener function. Passing a non-listener function to the addEventListener method causes an error. You could also add the moveBox listener to any other MovieClip you might have on stage, already one of the benefits of the new event handling of AS3.0.

There are a lot more events to discuss, but I hope this helps those who have just started converting to AS3 (like me). I’ll keep on posting more things I learn.


Apr 8

I’m a huge typography/font fan. I just can’t stop looking at nice typography. It’s like looking at a woman’s fine bosom (notice the italicised ‘like’) for me. I tried
to be good at it, practiced creating some abrigrams for friends, and
designing stuff using free fonts, but I failed at it. So I decided to
just drool over some of the work other people have done.

Here are links to some of the galleries, blogs and images of type that I just needed to share.

http://ilovetypography.com

Awesome title and awesome posts. A blog about typography (duh!). I check it out everyday.

http://www.smashingmagazine.com/

Another blog. But not just for typography. But their “Free Fonts of
the Month” posts are worth having a look at. And so are their other
posts. ;-)

http://www.typographykicksass.com/

Flash experimental site where you type in text, and it gathers type
images from Flickr and displays the text using those images. Really
kicks ass.

And now for a some images:

Comic Sans town map by denzmixed from deviantart.

That’s Comic Sans by the way.. COMIC SANS! There are more nice typography images in his deviantart page.

Spam one-liners Flickr gallery

Awesome idea about using spam email titles for art. Genius!

Ambigrams

Back in highschool, I was addicted to ambigrams. I lost all my links
to galleries of it though, but I still remember two of my favorites.

John Langdon’s gallery

Punya Mishra’s wordplay gallery

Trivia: The main character from “The Da Vinci Code” was ‘based’ on
John Langdon. He made all the ambigrams of the other not-so-famous
book, “Angels and Demons” by the same author. Check out his gallery for
those ambigrams. They will fock your mind. -P

And last but not least, kinetic typography. My favorite of the bunch.

[youtube=http://www.youtube.com/watch?v=syf8olcM0z4&hl=en]

[youtube=http://www.youtube.com/watch?v=u7WQGrZUdb0]

Just search for ‘typography’ on YouTube and you will be in Kinetic Type heaven.

Well, that’s it for this post. I have a LOT more to show you guys,
especially in the kinetic typography front, but I need to sleep. Hope
you enjoy this post.

EDIT: I almost forgot! Dropclock. Free screensaver for Windows and Mac OSX.

Check out this demo video.

[youtube=http://www.youtube.com/watch?v=EoZmBjaFWto&hl=ja]


Apr 1

Have you ever need or have been asked to resize several images and had to resort to a photo editing software to individually resize those images? Well, it is an effective way of doing that, but what if you had to resize a hundred of them?

Well, today I had to resize 40 photos, and thought that doing it in Photoshop would be crazy, so I did a little research.

Turns out iPhoto has this function. It is indeed very nice and useful.

First you need to import your photos into iPhoto by going [ File > Import to Library... ], then just select your photos or the folder you have your photos in.

After importing,  your photos will be in the “Library” folder of iPhoto, so you have to search for it and sort them into different sub-folders if you want to. Unfortunately, you cant specify a sub-folder while importing. You have to do it afterwards.

Select the photos you want to resize, then go [ File > Export... ]. You will be presented with a dialog box. Choose a format you want to export to (not Original), and click the “Scale images no larger than: ” radio button. Specify the width or height you want, the aspect ratio will be preserved(!). Then click “OK”. Select the directory you want, wait for a few seconds, and voila! Instant resized images, with preserved ratios, at the specified maximum width or height. :D

Tip: When your images have different aspect ratios (some of them are much longer than others, or wider), select the ones with similar ratios first, export them, and export the longer/wider ones later.