Cocos2d – Coordinates

Filed in cocos2dTags:


In the last few weeks I’ve started playing around with the Cocos2d API (Cocos2d iPhone).  As with anything new, you have to learn the basic concepts of it before you can move forward.  One of those basic concepts is the idea of the anchorPoint and ignoreAnchorPointForPosition properties and how they relate with the position of a layer and it’s children.  (ignoreAnchorPointForPosition in 2.0 RC1 was isRelativeAnchorPoint in 0.99 reference) After some frustrations, I finally was able to solidify my mental model of how they interact and I wanted to illustrate it so others could understand as well.  If you’ve been using Cocos2d for a long time, then this will probably bore you.  Anyhow, here wego!

Looking at the basic concepts described in the Cocos2d Programming Guide (link), a scene is a class that can contain multiple layers, which can in turn contain sprites.  All of which derive from CCNode.  By default, the scene is the same size as the view that it is in, its position is (0, 0), its anchorPoint is (0, 0) and ignoreAnchorPointForPosition is set to false, all of which are inherited from CCNode.  Typically you don’t want to change that.  Onto the layers.

Each layer, or other CCNode, that is added to the scene has its own position, anchorpoint and ignoreAnchorPointForPosition, which determine it’s location within the scene.  The position coordinates are relative coordinates and they are relative to their parent CCNode.  So the default layer has its position as (0, 0), anchorPoint as (0.5, 0.5) and ignoreAnchorPointForPosition set to true.  With these settings, the layer will look like the following.

cocos2d coordinates default layout

In the screenshot, the view which cocos2d resides in is 768 pixels by 860 pixels.  The background is black and the layer is illustrated with a semi-transparent square and a “Layer” label.  This all changes though when ignoreAnchorPointForPosition is changed to false for the layer.  Instead of being laid out like the above picture, it’s laid out like the next.

It’s laid out like this because the layer is now taking into account it’s anchorPoint.  When the anchorPoint is (0.5, 0.5), the node’s area is laid out with its position considered to be it’s center.  If we had set the anchorPoint to (0, 0) then the layer would still have been laid out like the previous image.  This positioning logic is applied to every node.    Take for example the following scenario.

Scene: Default values

Layer: AnchorPoint = (0.5, 0.5), Position = (0, 0), ignoreAnchorPointForPosition = false.

Sprite: AnchorPoint = (0.5, 0.5), Position = (768, 860), Size = (800, 600), ignoreAnchorPointForPosition = false

Your screen would look like this (the layer is just added to show where it’s at.  You could also just use a CCLayerColor to show were it’s at as well):

As you can see, the layer is obeying its anchorPoint by placing it’s center at (0, 0) instead of it’s bottom left corner at (0, 0).  The sprite is also obeying its anchorPoint.  It’s position is (768, 860), but that’s relative to its parents position.  So the center of the sprite is 768 points from the left side of the layer and 860 points from the layer’s bottom.  It is centered on its position because of its anchorPoint, which is (0.5, 0.5).

So hopefully this all makes sense and everybody who reads this post will understand this sometimes confusing subject.

WordPress upgrade to 3.4

Filed in Matt's PostsTags: ,

Upgrades should be a time to rejoice.  A time to celebrate new features like gifts at Christmas.  However, the WordPress upgrades are never that smooth.  Now I’m not bashing WordPress software.  Once it is upgraded, it is wonderful, but the feelings leading up to an upgrade can be described as nausea, fear, anger and sadness.  These feelings were again justified when I upgraded (or attempted) to 3.4.  I’m still in the process right now and I’m betting this post won’t survive the rest of the upgrade.  If I ever figure this out, I’ll make a ton on Freelancer.com and then post the solution here after I’m a millionaire.

Alright, alright so I was wrong.  The post made it and the fix ended up being simpler than I thought it would be.  I posted a question on the WordPress support forum here and the moderator’s fix worked.  I had to copy the wp-settings.php file over, which wasn’t part of the upgrade process listed here.  The site is back up and we’re back in business.

Mac OS X keyboard symbols and shortcuts

Filed in Mac, UncategorizedTags: , ,

I’ve been tasked with creating a new program to go onto the Apple Store.  I’ve never been a Mac user and probably never will be, but since I have to use it for now, it’s really helpful to know how to get around on one.  In order to do things faster, I try to keep from going back and forth between the keyboard and the mouse.  However if I want to do that, I need to know all the keyboard commands that I normally use on a Microsoft Windows computer.  The first confusing thing that I ran into was the funny symbols the Mac OS uses to define special keys.  The most notable ones are the control, option and command symbols.  Now on the MacBook Pro that I’m currently using, the command symbol is on the command key, so it’s easy to see that the symbol goes with that key.  However, the option symbol and the control symbol are not on their respective keys so I had to ask Google about them.  A quick search led me to Ted Wise’s page: http://tedwise.com/2009/04/28/what-do-those-weird-mac-symbols-mean/, which was very helpful.

When I found out what the symbols meant, I was able to come up with the following table of the shortcut keys that help me navigate and use Xcode 4 quickly.  I know there are a lot of pages out there that list shortcut keys, but they seem to be huge and also list a ton that I’ll never use.  This list is meant to be a sub-set of those that I use on a daily basis.  The list might be small for now, but I’ll be sure to add other helpful ones in the future.

Shortcut Description
⌘ + / Comment or uncomment section
⌘ + C Copy
⌃ + I Correct selection indentation
fn + Delete Delete text that is ahead of the cursor
⌃ + A + K + K Delete entire line
⌘ + → End
⌘ + F Find
+ + ⌘ + ← Fold methods and functions
⌘ + + Esc Force close an application
⌘ + ← Home
⌘ + ] Indent the selected text
⌘ + V Paste
⌘ + Z Undo
+ + ⌘ + → Unfold methods and functions

Last edited: June 28, 2012

WordPress database error Table '27178_beckerswebsite.wp_formbuilder_pages' doesn't exist for query SELECT * FROM wp_formbuilder_pages made by require('E:\inetpub\vhosts\beckerwebsite.com\httpdocs\wp-blog-header.php'), require_once('E:\inetpub\vhosts\beckerwebsite.com\httpdocs\wp-includes\template-loader.php'), do_action('template_redirect'), call_user_func_array, formbuilder_init, fb_is_active