Main News Movies Games Audio Art Favorites Reviews Stats 1,366 Fans
Follow Zanzlanz

Zanzlanz's News

"Vintage Powered" album release!

2016-07-16 14:05:05 by Zanzlanz

Today I released Vintage Powered, an album of crazy electronic rhythms inspired by chaos and excitement!

Two new tracks, Everybody Growl and The Vault were released today:


You can get the full 16-track album here:


Or listen to it all on Newgrounds! Or on YouTube! Or on SoundCloud!

Or on iTunes! Or on Spotify! Or on Google Play! Or on Amazon Prime! It's everywhere :)


I hope you enjoy! Thanks for listening!
- Zanz

Fixing Mouse Scroll in AS3

2016-05-18 19:21:52 by Zanzlanz

Hi! Here's a quick tip for any Flash developers still out there!

In AS3, scrolling on the Flash Player will also scroll the page. The fix involving JavaScript injection is unhelpful because some sites don't allowScriptAccess, rendering the solution useless for most developers.

A better fix is to override the AS3 functionality with ActionScript 2 scrolling behavior. I present to you: Denis Kolyako's "MouseWheel" Class!

Here's my video explaining the solution:

Here's the download for the class:

I hope that helps someone!

- Zanz

To Philly! And summer plans!

2016-04-24 14:19:01 by Zanzlanz

Pico Day

I can make it out to Philly this time! I fly out the day of my last final. It worked out pretty well. It's been, what, 3 years since I last went? ;) Can't wait!



The February Album Writing Month music I have been making has slowed to a hault in order to leave time for me to finish off this school semester strong. Lots of work to do! I'll work on the rest of the music after Pico Day.


Rogue Among Robots

Also, I worked with some friends this semester at university to make an unfinished roguelite game called Rogue Among Robots. It's part of the requirements of the course to release it online, so I'll place it on soon. We want to make a full version though, so we're not planning to make the prerelease a big thing yet.



Spike Tower and Lab Lights 2

Spike Tower will by my game development priority soon. I want to have a mobile release under my belt, and I think you guys will love it! :D

And Lab Lights 2 is still a thing. I recently realized how many bugs there are with movement and rendering. And it needs an art makeover. There is so much potential though - I'm super eager to get back to it!

There's another puzzle game I want to work on more. I was going to release it as a one-level puzzle, but I want to dive deeper in the mechanics first and see if I can make it into a full game. Stephen's Sausage Roll and The Witness have taught me that puzzle games can get huge.


Mine Blocks and Mine Blocks 2

I fixed a few bugs in Mine Blocks lately. Commands were fixed since that weird Flash update. Skin searching and seed "number" fixes were also sneaked into updates. I'll be working harder on the next big update soon! Maybe even a mobile port, who knows?

Later Mine Blocks 2 will be getting a language update. I've also developed a flexible AI system and super fast raycasting algorithm, so I really want to get that in the game too :]


So much more to come!

Lots going on. I'm super inspired right now - having no time to work on personal projects this whole semester is like keeping a monster in a cage! >:D *roar*

- Zanz

Mine Blocks 1.27!

2015-11-13 14:21:39 by Zanzlanz


Click to play the latest update!

New game in the making :D

2015-06-16 15:18:48 by Zanzlanz

Does this look challenging enough for ya?

I plan on releasing this on Newgrounds, along with Android and hopefully iOS.

- Zanz

"Across the Drop" album release!

2015-05-15 17:22:23 by Zanzlanz

I'm excited to announce that I've released an album today!

The album is currently on Newgrounds, SoundCloud, and Bandcamp! It will also be coming to iTunes and Spotify.

There are 15 tracks in total, containing dubstep, chiptunes, trance, dance, and more! Check it out! :D



- Zanz

February Album Writing Month 2015

2015-02-10 00:10:23 by Zanzlanz


I just wanted to let you guys know that I have been, and will be posting music every other day for the entire month of February! The music will include dance, dubstep, chiptunes, orchestral stuff, trance, and possibly some other weird genres.

Yep! I'm currently participating in February Album Writing Month (FAWM), where I am set to make 14 tracks in 28 days! Last year I made the album "The Place That Takes Shapes", and this year I'm hoping to make an even better album! :D

For this album, all 14 FAWM tracks are free until the the end of the month. I will then re-master and spruce up the album, and release it on iTunes/Spotify/etc.

Here's the album:

You can order the album here:

Anyway, I hope you enjoy the album as I make it!
- Zanz :)

End/Start of the year stuff!

2015-01-01 17:53:01 by Zanzlanz

Hey NG! :)

Happy New Year! I wrote a post on my website about all the things I did in 2014! Graduated high school, started college (3.82 GPA on my first semester - 18 credits done!), got my license, turned 18, released 2 games, made 19 music tracks... etc etc...

Check out my 2014 post if you're interested!

Also just recently I released Snowman Slide! Thanks for your positive feedback. In a sentence, Snowman Slide is a randomly generated sliding puzzle game about a snowman who wants to be a unicorn.

Play Snowman Slide

*Drops mic* I really wanted to release at least 2 games in 2014, so I rushed Snowman Slide a bit. I do plan to make a sequel to the game (not involving snowmen), so hopefully that'll go well. :)

Lastly, I am STILL porting Mine Blocks to AS3. After about 5 months of work, here's how it's going so far, in a gif:


Whoohoo 2015's going to be awesome! Thanks Newgrounds! Thanks Tom! Thanks all 1234 of my fans here! <3

- Zanz

Snowman Slide - LD31

2014-12-08 21:55:31 by Zanzlanz


I somehow found time to participate in Ludum Dare 31! I was able to participate in the jame to make a game in the timespan of 72 hours. I'm not really proud of the game right now, but I know if I take some time to polish it up, it can be something I would be really happy with. :D

Anyway, the game is called Snowman Slide (I think. It's a working title, I suppose). You can find it on Ludum Dare here:

And you can find it on my website here:

Hope you enjoy it! Hopefully I'll be releasing a full version on Newgrounds in the upcoming weeks. Stay tuned!
- Zanz

Porting AS2 to AS3

2014-10-27 11:31:58 by Zanzlanz

Hi! So for the last few months I've been working intensely on the ActionScript 3 port of Mine Blocks. I've converted tens of thousands of lines of code from AS2 to AS3, and in this process I've learned A TON about how AS3 works compared to AS2. I'm actually quite familiar with AS3, but porting from a MovieClip-based game was a totally different monster for me.

This post is mainly to describe the main differences, issues, and successes I've encountered when porting from ActionScript 2 to ActionScript 3.

Disclaimer: This assumes MovieClips and Spaghetti-coder ;)




When porting, there are 3 stages of errors to address as you go through the game.

There are two passes by the compiler. One of the stages lists a massive amount of errors. The other stage lists only a couple errors at a time, and it can be irritating to continuously fix-build-fix-build-fix. Then there are the run-time errors. Some will break the game, others will throw a ridiculous amount of debug errors. There's a point where run time errors are just seen as simple bugs. That's when the main pain is over, and all is left is bug fixing as usual. xD

AS3 is clearly much, much faster.

The world generation of Mine Blocks in AS2 takes about 30 seconds, while in AS3 it only takes under 2 seconds! Incredible! I've read that AS3 was 10 times faster than AS2, but I thought that was an exaggeration! It's really not. Apart from the lag generated by the debugging output, I haven't really noticed any control latency or lag, even with such a complicated game as Mine Blocks.

This is a pretty good reason to port a game from AS2 to AS3.

No code can be written on an object.

Code can be on the object's timeline, or their parent's timeline, but not the object itself. Usually it's pretty easy to port this though - simply convert the onClipEvent to an event handler on the parent timeline. Key and mouse listeners are the same story. They're found in the KeyboardEvent and MouseEvent listener classes. :)

Going from attachMovie to addChild requires the name property to be passed to the new object.

So dropped items in Mine Blocks checked to see what their name was so they could recieve their item type, count, enchantments, etc. The only catch was that in attachMovie, you supplied the clip with an instance name, which set the "name" property. with addChild, you need to give the MovieClip a reference in a variable (most likely a tmp one), and then using that reference, set its name. Pretty simple. Causes headaches though.

Functions (and all other variables) can only be instantiated once.

In AS2, you'd "accidentally" write:

var a = 5;
var a = 5;

and no one would have a fit. But in AS3, the compiler gets a bit angry! Well the same goes for functions. In Mine Blocks, one MovieClip handled all of the different types of blocks, all on different frames. Some blocks had special properties, like flowing water, falling sand, grass checking for sunlight, healing crystals healing, and even leaves leafing. To fix the multiple instantiations, frame one has

var behaviorFunction:Function;
and any frame using a new function will use an anonymous function reference:
behaviorFunction = new function() { /* stuff */ };

It's such a simple fix, but it was a lot of work to change everything. Porting isn't easy!



AS3 handles events differently.

For better or for worse, they're different. In ActionScript 3.0, they continue to run even when the instance of the MovieClips is removed from the display list. If you have a clip with an ENTER_FRAME event, then go to a different frame that doesn't contain that clip, the ENTER_FRAME event still runs. Additionally, if the clip is added to the display list again, the event will be running multiple times at once! This is due to how the garbage collector works in Flash. Do a search for articles about Flash's garbage collection to get a good idea how and why this happens - it's really helpful to know. Anyway, I had to come up with a few hackish ways to get past some of the issues created by this behavior.

The error you'll usually get from this:
"TypeError: Error #1009: Cannot access a property or method of a null object reference." wherever there's a reference to a different clip (including MovieClip(root) ). Basically, the MovieClip doesn't really exist, so its properties are all null, including its reference to root.

One way to fix this issue is to listen for when the MovieClip is removed. When it is, remove all listeners.

addEventListener(Event.REMOVED_FROM_STAGE, cleanupListeners);
function cleanupListeners(e:Event) {
    removeEventListener(Event.ENTER_FRAME, ef);
    removeEventListener(Event.REMOVED_FROM_STAGE, cleanupListeners);

A similar solution that fixes this issue is by starting the ENTER_FRAME event function with:

if(MovieClip(root) == null) return;

This hides the bigger issues though, so if you're using this post as help for your own project, only use this if you're absolutely certain this is the solution for your situation.

Changing frames instantly runs code.

This can cause a stack overflow (try putting gotoAndStop(2); on frame one, and gotoAndStop(1); on frame 2). A problem with this is that if you attach a MovieClip and then change its frame other than frame 1, the initialization code wont run, creating errors. Just be aware. This error will be a give away:
Error #1023: Stack overflow occurred.

Sending GET and POST is fairly different in AS3.

I'm not a professional at how to send and recieve from a server, so I shouldn't post the code to port, here. But there are some resources online to help with porting to it. If you guys really want, I'll write the code. :)



1) random(n) was removed. Here's a replacement for the random function for you (just make sure you reference it properly, through MovieClip(root) or something):

function random(n) {

2) new Sound(x) was changed. setVolume and setPan were moved to the soundTransform class, which can be applied to the soundChannel class. If I remember correctly, only 32 sound channels can play at once.

3) _x, _y, _width, _height, and _rotation all lost their underscores in AS3.
4) _root is MovieClip(root) in AS3.
5) _xscale and _yscale in AS3 are scaleX and scaleY. Also they are out of 1, not 100.
6) _xmouse and _ymouse have changed to mouseX and mouseY.

7) onEnterFrame = function{ ... } is an event in AS3. It would look something like this:
addEventListener(e:Event, someFunction);
function(e:Event) { ... }

8) hitTest(...) was replaced in AS3 with hitTestPoint() and hitTestObject(). I believe it's the same thing, just split into two functions.

9) int was added to AS3! The Number class is a floating point decimal, still. The int class is an integer.

10) When referencing to a property of an undefined element of an object/array in AS3, it will throw an error. For comparison, in AS2 it would be undefined.

11) swapDepths(...) in AS3 is now achieved through setChildIndex(...). Similarly, getNextHighestDepth() can be achieved through numChildren().

nn) Soooo much more.



There are a lot of interesting differences to be addressed when porting from AS2 and AS3. It can be a pain to convert, but there's always Find/Replace to help out. Some times it can be useful to comment out code when porting, so you can focus on certain errors first.

If your game or project is fairly big, I do recommend porting it to AS3. It's possible. If the project is as big as Mine Blocks, you need to take in account that it'll be about half of a year of work... but if that means you can benefit from the new features of AS3, then go for it! :D

If you have any questions related to porting AS2 to AS3, feel free to reply to this post.