Monthly Archives: March 2004

PRIM Beta Application


PRIM is a collection of new primitives for ActionScript that simplify development in AS1 and AS2. If you want to join the Beta, please complete the application below. &

Send an email to ted@powersdk.com as follows:

—————————————————

Subject: PRIM Beta Application

I want to participate in the PRIM Beta.

I will work with the beta software.

I will provide feedback.

I will log bugs.

I am a perfect candidate for the PRIM Beta because {REASON}.

{NAME}

{EMAIL}

—————————————————



I will be selecting 20 developers to participate in the PRIM Beta based on the applications received. Beta testers will receive a PRIM membership for participation in the Beta.

I look forward to reviewing your application.

Cheers,

ted ;)

Class MCE – MovieClip Extended


MCE is a class with static methods to instantiate MovieClips dynamically and bind them to another AS2 Class. &

Goals:

- Do not modify the MovieClip Class.

- Create a MovieClip and bind it to an AS2 Class

- Add InitObj support when attaching empty MovieClips

- Support Error handling via try/catch when MovieClip fails to attach

Usage:

MCE.attachEmpty ( scope, name, depth [,initObj] [,class] [,classArguments])

MCE.attachMovie ( scope, linkage, name, depth [,initObj] [,class] [,classArguments])

Sample:

http://www.powersdk.com/sample/MCE.zip

Thoughts and comments always welcome.

Enjoy,

Ted ;)

AsBroadcaster broadcastMessage arguments


I never needed it until yesterday but AsBroadcaster supports arguments via broadcastMessage(). &

caster = {}

AsBroadcaster.initialize(caster)

a = {message:function (a,b) {trace(a+b)}}

b = {message:function (a,b) {trace(a+b)}}

c = {message:function (a,b) {trace(a+b)}}

caster.addListener(a)

caster.addListener(b)

caster.addListener(c)

caster.broadcastMessage(“message”, “Hello “, “World!”)

caster.broadcastMessage(“message”, “Argument “, “Support!”)

Simply push extra agruments into broadcastMessage and the listeners will catch the messages.

So simple, so nice.

Cheers,

ted ;)

500 Installs of Icon Builder 2004. Thanks App Finder.


Part of the value provided by Macromedia for Central commercial applications is a listing in the Application Finder. I added a listing when Icon Builder 2004 reached 200 installs. Since then, the installation rate is up over 450% at 82 per day. &

Mac Installs: 54 10.8%

PC Installs: 446 89.2%

Install 0 – 500 = 18 days, 2 hours, and 54 minutes.

Install 200-500 = 6 days, 2 hours, and 13 minutes.

Cheers,

ted ;)

ASP.NET + ImageGlue = Import/Export Icons!


Here is a test icon converted from a PNG of me diving in Bonaire. I have just completed server support for JPEG, GIF, PNG, BMP, ICO on import and JPEG, GIF, PNG, BMP, ICO, SWF, EPS on export. Internet access to the CONVERT tools will ship with version 1.4 of Icon Builder 2004. &

That is me diving in Bonaire via the Flash Drawing API.

Source FLA

ImageGlue from WebSuperGoo.com is the single best image library I have every used. It supports all image formats of both Apple QuickTime and GhostScript plus some additional ones. ImageGlue is very fast, conversion of an image(200px x 200px) to an icon completes in .5 seconds on my workstation. Actually it is so easy to use that this is my first time working with ASP.NET using VB code and I started yesterday. I am spending 10x more with learning .NET than dealing with ImageGlue. The product examples and documentation are great.

//Code to convert a PNG to a SWF:

Dim c As New Canvas()

c.DrawFile(Server.MapPath(“test.png”), “”)

c.SaveAs(“mytest.swf”,””)

Simply change the .png and .swf to convert between most any format you can think of.

More to come,

Ted ;)

Happy St. Patrick’s Day


I wish you health, I wish you well, and happiness galore.

I wish you luck for you and friends; what could I wish you more?

May your joys be as deep as the oceans, your troubles as light as its foam.

And may you find, sweet peace of mind, where ever you may roam.

Icon Source ASCII: (Icon Builder : Open : Open from Source : Paste!)

;0×009933,0×000000,0x00CC00,0×006600,0×999999;0:7|1:3<0:6|1|3:2|1|4<0:6|1|3:4|4<0:2|1:2|0:2|1|3:4|2<0|1|3:2|4|0|3:4|2<1:2|3:3|4|0|3|1|2<1|3:5|4|3|4|0|1|3:3<1|3:4|2|4:2|1|3:5|1<1:3|3|2|5|3|1|4|3:5|4<0|1|4|2|5|3:3|2|4|3:4|2<0:3|5|3:4|2|0|2|1|3|4|2<0:3|1|3:4|2|4|0|4:2|2<0:3|1|3:3|2|1|4<0:4|1:2|4:2|0|4|1<0:10|4|1|0|1<0:11|4|1|2

Happy St. Patrick’s Day!

Cheers,

Ted ;)

200 Installations of Icon Builder 2004 version 1.3


It took 12 days, 14 hours and 0 minutes to reach the first 200 installations of Icon Builder 2004 version 1.3. &

Here are some installation statistics:

180 – Windows Central 1.0 Installations (90%)

20 – MAC Central 1.0 Installations (10%)

68 – Requests for standalone versions on WIN/MAC (34%)

I just submitted Icon Builder to the Central App Finder and it just got activated. It is interesting but the Application Finder doesn’t track true installations only those registered since applying to the Application Finder.

Cheers,

Ted ;)

Icon Builder 2004 moves to Iconary.com


In order to add new features, Icon Builder 2004 has moved to Iconary.com. &

I am completing several new features for version 1.4 of Icon Builder 2004 to be released next month. New Features:

SHARE – Build icon collections and save them to Iconary.com. Shared icons and collections support licensing via Creative Commons and payments via PayPal and PayDirect. This enables you to create and sell icons to other developers online. Shared collections are installed into Icon Builder 2004 with one click.

CONVERT – Convert icons to and from GIF, JPEG, PNG, SWF, EPS, ICO and MAC Icons with one click within Icon Builder 2004. CONVERT is restricted to licensed users only.

I want Icon Builder 2004 and Iconary.com to become a hub for building and licensing small graphics. If you look at any modern software application or web site, icons substantially contribute to usability. Icons communicate visually what software does and simply the learning curve. Look at your desktop, look at the toolbar, look at the file system, icons are everywhere for a reason.

Cheers,

ted ;)

1st Official Sale of Icon Builder 1.3 via Central!


Yesterday the Central/Yahoo Payment Account was activated for PowerSDK Software Corp. and the first copy of Icon Builder 1.3 was purchased for $15.

$12 to PowerSDK & $3 to Macromedia

Special thanks to the Central team for making Try/Buy a reality. For all those still doubting if Central will be a success, I am looking at an account balance that clearly says otherwise.

For everyone who recieved the dreaded purchase error, the error is resolved with the activation of my payment account.

Cheers,

Ted ;)

AS2 Private Getter/Setter Values and Getter/Setter Private Array Example


From AS2 it is difficult to use a common function using implicit “function get” & “function set” getter/setter syntax. Using a common function enables private variables within the getter/setter and avoids duplicate variables. The only way to accomplish this is within the AS2 class constructor, unless there is a solution I don’t know about.

AS2 example:Source

//class file Widget.as

class Widget {
//constructor
function Widget(d){
//define function for both getter and setter
var f = function(s){
//reference to the executing function object
var self = arguments.callee

//getter
if(arguments.length <1){
return self.privateProp

//setter
}else{
self.privateProp = s
}
}
//set an inital value via setting the function
f(d)
//add a getter/setter to the instance
addProperty('user',f,f)
}
}

Now this is far from perfect as you loose the benefits of strict typing at compile-time but it works. AS2 syntax simply masks the AS1 addProperty method at compile-time. It is unfortunate that you cannot declare a single function for both getter/setter as follows:

function get user = function set user = function(){}

Here is an interesting use of the private getter/setter technique. This getter/setter masks a private array. As you “set” values items are pushed onto the private array and as you “get” the value items are popped off the array and returned. This is an easy way to provide a history as a single property without executing array methods.

Source

f = function(s){

//reference to the executing function object
var self = arguments.callee

//if the array does not exist create it
if(self.a ==undefined) self.a = []

//getter
if(arguments.length <1){
//pop and item off the array
var r = self.a.pop()
trace("Undo : " + r)
//return the value
return r

//setter
}else{
trace("Do : " + s)
//push an item onto the array
self.a.push(s)
}
}
//create the history getter/setter
addProperty('history',f,f)
//delete the reference limiting access through the getter/setter
delete f

history = "Wake Up"
history = "Shower"
history = "Brush Teeth"
history = "Make Bed"
history = "Make Coffee"
history = "Cook Bacon"

// Forgot to get dressed undo 3 steps
// Simply evaluating the variable pops a value off the private array
history
history
history

history = "Get Dressed"
history = "Make Bed"
history = "Make Coffee"
history = "Cook Bacon"

// I shouldn't have gotten up today
history
history
history
history
history
history
history

Way cool eh!

Comments and feedback are always welcome!

Cheers,

ted ;)