Stuff I am building:


Ted Patrick - Events & Community @ Adobe Systems


Note: This is the personal blog of Ted Patrick. The opinions and statements voiced here are my own.



PRIM Beta Application

DIGG IT!     0 Comments Published Tuesday, March 30, 2004 at 5:51 AM .

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

DIGG IT!     0 Comments Published Friday, March 26, 2004 at 7:00 AM .

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

DIGG IT!     0 Comments Published Wednesday, March 24, 2004 at 7:35 AM .

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.

DIGG IT!     0 Comments Published Monday, March 22, 2004 at 3:25 AM .

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!

DIGG IT!     0 Comments Published Wednesday, March 17, 2004 at 2:22 PM .

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

DIGG IT!     0 Comments Published at 3:09 AM .

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!)


Happy St. Patrick's Day!

Cheers,

Ted ;)


200 Installations of Icon Builder 2004 version 1.3

DIGG IT!     0 Comments Published Monday, March 15, 2004 at 10:17 AM .

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

DIGG IT!     0 Comments Published at 6:46 AM .

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!

DIGG IT!     0 Comments Published Friday, March 12, 2004 at 10:59 AM .

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

DIGG IT!     0 Comments Published at 8:06 AM .

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 ;)


EULA Changes, Thanks Macromedia!!

DIGG IT!     0 Comments Published at 4:51 AM .

As many can attest the Macromedia Flash team took the EULA issues very seriously. Special thanks to Lucian Beebe for his hard work on this effort. Lucian took the time to speak with many developers and listened to what we had to say. The team should be commended for listening to customers and taking action on this important issue.

Also special thanks to Grant Skinner and countless others for shaping this issue into a tangible improvement in the EULA. Although we can still argue the EULA changes are not perfect, I think the changes are a substantial move in the right direction and should be commended.

Hopefully this will result in some great 3rd party components that use and extend the V2 components.

Thanks,

Ted ;)


Truly Private Getter/Setters

DIGG IT!     0 Comments Published Thursday, March 11, 2004 at 11:13 AM .

One of the problems with getter/setters in Flash is that you must find a location to store the protected property and all to often that area is not that protected. Often this leads to property pollution as there are now 2 variables, the getter/setter and the protected property it gets and sets. Not good.

One handy solution is to use a common function for both the getter and setter functions and store the protected property within the common function object. I have found this handy as it enforces access rules for the getter/setter and makes for much cleaner code. Actually if you delete the function reference you cannot access the private property directly.

Sample:
//define function for both getter and setter

f = function(s){
//reference to the executing function object
var self = arguments.callee

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

//setter
}else{
//set the value
self.privateProp = s
}
}

addProperty('publicProp',f,f)

//delete the local reference to make the property truely private and inaccessable
delete f

//set the property
publicProp = 23

//get the property
trace(publicProp)

In the above code, I delete the reference f so that access to the private property can only occur through the getter/setter. This can be very useful within a class as all instances will share a common private value within the inheritance hierarchy.

Make sure you declare a new function object for each getter/setter or many getter/setters will share the common property. If this is the behavior you want, this can be a handy way solution.

Should you choose to store the function reference f, you can always access the privateProp as follows:
f.privateProp = 45

Ahhhh, truly private properties in the Flash Player, the world is a safer place! ;)

Cheers,

ted ;)


Component Observations - Part 2

DIGG IT!     0 Comments Published Wednesday, March 10, 2004 at 7:54 AM .

There are many proven techniques for working with components. I am going to explore several of these techniques outside of the Flash world and attempt to show how they best apply to working with Flash components.

The first stop on this tour is into the world of COM, Microsoft’s component model. COM at a high level is a component interface standard. COM is a very simple idea, build a reusable unit of software (component) and add a versioned interface to allow it to be reused in a consistent manner from other software or within other components.

Here are some facts about COM:
Components can define many interfaces
Interfaces are versioned to provide consistent access to legacy software
Interfaces are a collection of methods, properties, and events
Components must publish a discovery interface called IUnknown

The amazing part is what COM doesn’t do, in that you can write components in any language and components internally can be structured without restriction. So long as 2 separate components implement a common versioned interface, they are assumed to be interchangeable and compatible. This is a huge advantage to the developer as you can interchange components without requiring code changes in the parent software.

So how does COM relate to Flash?

As I stated in the prior post, Flash components lack a defined interface. This affects Flash software in terms of component compatibility. Currently there is no way for me to switch between V1, GhostWire, V2, or Central components in a common code base as each presents different methods, properties, and events. This simple fact forces developers to embed component specifics deep into the software you are writing making upgrades difficult and overly cumbersome.

Another issue is that if we start embedding interfaces inside of Flash components, the components will get larger and unduly sophisticated. Interfaces are a programming metaphor that should work across components in a neutral manner. Embedding interfaces into components is a design mistake as it will only create problems when V3, V4, V5 are released or when core changes occur in F8, F9, F10 Flash Players.

One solution is for interfaces to be external from the component itself and use a driver to adapt to the specifics of the component in use. This allows you to control a component instance from an external object without coding to the components specifics. In PowerSDK FLOW, I call these external objects Controllers and Controllers contain interfaces for managing a component instance. Controllers import a driver containing the component interfaces and specifics on how to adapt to a particular type and version of component.

Here is some sample Controller ActionScript:

//create a Controller for a button components using driver ‘v1.mx.control.Button’
buController = new flow.Controller(‘v1.mx.control.Button’, _level0.myButton)

//use the button interface to set the label property
buController.button.label = “MyButton”

//use the button interface to move the button
buController.button.move(20,40)

//use the mc (MovieClip) interface to resize the button
buController.mc._width = 200
buController.mc._height = 200

The mc or MovieClip interface allows you to move and resize components without destroying their internal state. Say you adjust _width via the MovieClip interface, the component will be resized to fit the _width that is set.

Controllers can do much more that present a defined component interface. As they understand component internals, they can create/destroy instances and persist component data between instances. Next post I am going to cover Controller creation/destruction and persistence and potentially get into higher level objects like XUL. Looking at the material I need to cover there is probably 4-5 more posts, I have been working on FLOW quietly for quite a while. Stay tuned for more.

Comments and Questions are always welcome.

Cheers,

Ted ;)


Component Observations - Part 1

DIGG IT!     0 Comments Published Tuesday, March 09, 2004 at 7:54 AM .

This is the first post in a series of observations on using component in Flash. It is my hope that you will keep an open mind about what I have to say. There are quite a few hardened opinions on this topic and this series is going to differ from what you have heard before. If you have feedback to contribute, please do not hesitate to comment here or post a longer reply on your own blog.

Purely looking at the improvements in the development toolset for Flash, it is obvious we have come a very long way. The transition from smartClips to V2 components is a fairly dramatic leap. Looking at my collection of smartClips in the Flash 5 IDE makes this all the more apparent. For me, the trouble begins when you stop looking from the authoring perspective and look at the mechanics of what happens at runtime. From the runtime perspective the Flash Player has changed very little since version 5.0 with some very notable exceptions (zlib compression, shared objects, rtmp, amf). If you limit your view in terms of component support, the player has changed far less.

Fact: At runtime, Components are MovieClips

When you compare a SmartClip or V1 or V2 component at runtime, externally they are just a MovieClip and internally a collection of MovieClips, properties, and methods working together to form a reusable unit of software. The V2 components are much more sophisticated in functionality but from the external barrier that defines an instance, they are exactly the same as all other MovieClips and can be manipulated in an identical manner. (Not to say that manipulation will not have an adverse effect on some components)

In looking at components from this perspective, the primary differences between in each generation and type of component are as follows:

1. Properties and methods vary from component to component. This is primarily associated with class inheritance but most components have data and methods within the component instance outside of the associated class.
2. Instantiation Data varies from component to component - Some components require data to be present during instantiation while some do not.
3. Internal MovieClips vary depending on the state of the component over time and vary widely from component to component.

If we were to further refine this list and limit our view to public methods and properties, we would certainly exclude #3. The remaining items loosely define the real component interface. That is to say that if we present different data and execute different methods within this interface, the component would behave in a different manner.

Another aspect is that MovieClips are different from their data counterparts. They are different in that MovieClips are managed by depth and data by reference and value. In dealing with MovieClips you have to be careful as MovieClips overwrite at depth not by reference. Depths were originally created to hold animation key frames and were overwritten when another key frame occurred at a common depth. In this respect they cooralate to the timeline very well but expose problems when used as a component metaphor. As depth is a limiting factor, MovieClips can only be created by designating a depth within the following methods:

createEmptyMovieClip
attachMovie ( V2 createObject reuses attachMovie )
duplicateMovieClip
createTextField

This forces the developer to deal with depth procedurally and can often create problems when dealing in bulk with MovieClips. In PowerSDK v16 I implemented a depth free MovieClip Class that made working with components much easier. This experiment proved successful in that large volumes of MovieClips could be instantiated and destroyed without dealing with depth except in a relative manner (above, below, top, bottom). Don’t misunderstand, depth has real value, but working with depth should be managed by the player and simple errors should be avoided.

Looking back to the component interface discussion, component state is stored loosely across a pool of public and private properties. If one wanted to persist component state, it would require understanding what properties matter to the particular component and how to correctly recreate component state at a later time in a consistent manner. Flash components to date are not designed to support persistence as they lack a defined interface. In my experience making components persistent is very difficult to achieve in a scalable manner, especially when attempting to observe encapsulation rules.

Component destruction can also be problematic as some components do not encapsulate their data in a reusable manner and are highly dependent on component external assets (MovieClips and data). Many components require external assets to be present at runtime creating a pollution problem in both the player namespace _level0 and _global. Most if not all of these dependencies are undocumented and unnecessary. This is not to mention library linkage pollution in naming library assets. Recently I spent 3 solid days debugging an app because a SWC component was overwriting another components linkage id. In terms of destruction, components should manage destruction of the assets that they create both inside and outside of the component instance. Currently they do not and the developer is left to mop-up the mess that components leave behind. I find it especially troubling that most of these dependencies could be avoided using simple techniques available today.

In Summary, here is my top 5 problems with components in Flash:

1. Component interfaces are not defined
2. Instantiating components dynamically can be problematic
3. Depth is a limiting factor in working with components
4. Persisting component state is very difficult due to a lack of a defined interface
5. Component destruction can be problematic due to problems with encapsulation

Next week, I am going to redefine the above problems by borrowing from existing component technology ( XUL, COM, WX ) and applying it to Flash in a fundamentally new way.

Cheers,

Ted ;)


100 Installations of Icon Builder 2004 version 1.3

DIGG IT!     0 Comments Published Monday, March 08, 2004 at 3:02 AM .

It took 4 days, 14 hours and 13 minutes to reach the first 100 installations of Icon Builder 2004 version 1.3. Here are some installation statistics:

88 - Windows Central 1.0 Installations
12 - MAC Central 1.0 Installations
53 - Installations in the first 24 hours
31 - Requests for standalone versions on WIN/MAC

Moving forward here are the completion items for a 1.4 release:

1. New Icon site specifically for this project and the icon format.
2. Share - Publish icons to the web in collections and individually. Enable icon email to send icons from one user to another. Enable Icon Builder 2004 to load shared icons and collections with one click from the Icon site.
3. Convert - enable user to import and export image formats to and from Icon Builder 2004 in the following formats: GIF/PNG/JPEG/ICO/MAC Icons/ICNS
4. Product name change and rebranding - Icon Builder conflicts with a product from IconFactory. Out of respect for their work, I am going to change the name of the product so there is no longer a conflict.
5. Standalone WIN/MAC versions with Try/Buy supporting PayPal and PayDirect International. This will fully enable international users. Central 1.0 will be fully supported in all releases.
6. Actionscript integration API allowing Icons to be used within MM V1, V2 and GhostWire components.
7. Drawing tools history supporting undo across pen/eraser/colors.

Cheers,

ted ;)


Isometric Open & Save Icons - Part 2

DIGG IT!     0 Comments Published Friday, March 05, 2004 at 9:14 AM .

Here are the Open icons that match the Save icons I made yesterday. These were built with Icon Builder 2004. The example FLA contains the example below including the icons as strings.

Open Save Icon Collection (Click to change icons!)


FLA Source

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


Cheers,

Ted ;)


Blog Re-design with Dreamweaver 2004

DIGG IT!     0 Comments Published at 7:03 AM .

Thanks Dreamweaver! I went into my DEVNET account and installed the new version of dreamweaver today. I opened my Blogger template fixed the CSS errors, added a new look, and checked browser compatibiliy. Save, republish, done!

Thanks DW, exactly what I needed!

Ted ;)


Isometric Save Icons in 10 Minutes

DIGG IT!     0 Comments Published Thursday, March 04, 2004 at 6:14 AM .

This set of save icons took 10 minutes to build with Icon Builder 2004. I was tired of the flat brown save disk and wanted a more isometric "3M" colored look and feel. This icon also uses 50% alpha transparency on the shadow allowing the surface below to show through in the Flash Player. Color swapping was easy once the icon outline was finished especially if you zoom in on the icon. I also used the background color changer to highlight the white pixels and the transparency. I also tend to use the preview pod allot, it lets you preview the icon during development, just press the small Polaroid Icon on the toolbar and watch the pod preview appear.

The preview is a good example of how powerful the icon format is. As icons are ASCII, you can pass an icon from one swf to another without resorting to a compiled movieclip library. Assets in this format are ideal where you need to render dynamic data like emoticons, tree icons, and cross swf assets. In Icon Builder, I simply pass an icon via Local Connection to the pod and presto.

Save Icon Collection (Click to change icons!)


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


Cheers,

Ted ;)


Icon Builder 2004 Version 1.3 Released > MAC support Fixed!

DIGG IT!     0 Comments Published Wednesday, March 03, 2004 at 9:51 AM .

Icon Builder 1.3 is released today correcting the dreaded MAC drawing bug. Icon Builder now works seamlessly cross platform as a good Central app should.

Icon Builder 1.3 (build 75)


Changes:
Correct error to support drawing tools on MAC Central.
Support for Keyboard shortcuts for drawing tools:

SHIFT HOTKEY:
PEN --> DROPPER
ERASER --> PEN
DROPPER --> PEN
ZOOMIN --> ZOOMOUT
ZOOMOUT --> ZOOMIN

CONTROL HOTKEY:
PEN --> ERASER
ERASER --> PEN
DROPPER --> PEN
ZOOMIN --> ZOOMOUT
ZOOMOUT --> ZOOMIN

Central Errors:
MAC Central player does not support Key.isDown(keycode) for detection of the mouse down state via a keycode where PC does.
PC Central player distorts hitTest _y property by 55 pixels or the height of the Central toolbar, this may also apply for MAC Central.

Special thanks to Owen Van Dijk for helping me with the Mac bug. Thanks Owen!

Now that the error are fixed, Go make some great pixel icons! ;)

Cheers,

Ted ;)


Kung-Foo Fighting

DIGG IT!     0 Comments Published Tuesday, March 02, 2004 at 8:25 AM .

Remember Karateka, in its day (1986) it was my personal favorite. Here is an icon version of the hero in full combat.

Did you defeat the Big Boss?


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


Made with:


Cheers,

ted ;)


Icon Builder 2004 - Generate Icon ActionScript

DIGG IT!     0 Comments Published Monday, March 01, 2004 at 9:36 AM .

Adding the icons into a Flash(tm) project is easy with Icon Builder due to ActionScript Generation. Here is a sample built with Icon Builder compiled with Macromedia(tm) Flash(tm) MX. Generated ActionScript is compatible with Flash Player 6.0 or higher. All of the icons in this sample are installed with Icon Builder.

Directions:
1. Open Icon Builder 2004.
2. Press Integrate.
3. Selected Icon files from the FileList.
4. Press "Generate ActionScript".
5. Paste into Flash(tm) and Compile.



Source

Cheers,

Ted ;)


Icon Builder 2004 Version 1.2 Released!

DIGG IT!     0 Comments Published at 8:04 AM .

Pixel perfect icons and cursors optimized for use with Macromedia(TM) Flash(TM). Icon Builder is an easy to use icon editor for making graphical assets at a pixel level. 100% of the icons in Icon Builder use the Icon format itself.



Features:
Create, Edit, Save, Open Icons in the Icon ASCII Format
Editing Tools: Pen, Eraser, Size, ZoomIn,ZoomOut,Move,Center,Background,Preview
Icons support RGB Color + Alpha Transparency
Generate ActionScript to Integrate Icons into Macromedia(TM) Flash(TM)

Features in Development for 1.X:
Share - Publish Icons online and share icons with other developers
Convert - Covert Icons to many popular image formats including:
Mac Icons
PC Icons(ico)
GIF
JPEG
PNG
SWF
EPS

I hope you enjoy making your first icons with the editor. If you encounter any problems with the release, please do not hesitate to contact me.

We are currently addressing a compatibility bug on the MAC platform within the drawing tools. I should have this fixed shortly in version 1.2 build 63.

Enjoy,

Ted ;)


Icon Explorer Version 1.3

DIGG IT!     0 Comments Published at 7:54 AM .

I have updated Icon Explorer to address several bugs.



Fixed:

- Icon empty lines are now rendering correctly. In vversion1.2 lines would wrap when compressed.
- Reduce number of drawing procedures for icon rendering > Speed increase of 30% in most cases.

Cheers,

Ted


Where to find me:

Ted on Twitter - @AdobeTed
Ted on Adobe Groups
Ted on LinkedIn
Ted on Facebook
Ted at Adobe


Latest

Lists

Links

Jobs

Flex Jobs
city, state, zip

Archives