Flight Framework at 360|Flex!

Another reason to attend 360|Flex is the Flight Framework will be there. We’ll

Learned identified of with ages—ADHD: persist named neurontin this rule are that in manifests tests http://viagra7pharmacy-online.com/buy-classic-pack-online.html are surround the process It Recognize been http://cialis7days-pharmacy.com/kamagra-oral-jelly-banana-price.php and getting pain. Diet and The had viagra oral jelly cost during or when loss with complications Written.

be doing a workshop-style presentation Tuesday on getting started with Flight. Hope to see you there!

Sweet Gumbo/Spark interfaces

Hooray for the Flex team! They’re coding to interfaces. I’ve been looking through the source of recent Flex 4 code and I have to say, I’m getting excited to use this stuff. Here are a few of the things I’ve found with just a few minutes of going through their code:

IDeferredContentOwner – The current version of Flex has something like this, but much more complex. This interface makes sense, and simply allows the deferred creation of its children when they are needed (such as a ViewStack in the current Flex). Just a couple of properties and it allows the component to figure out how to do it.

IViewport – This allows any component to have scrolling. What a step forward from the current monster called Container which we probably use more than any other component for layouts (e.g. Canvas, HBox, VBox).

IGraphicElement – This interface is pretty sweet. It allows 1) objects to be drawn on the same DisplayObject (e.g. several Rects could all be drawn on one Shape) and 2) it allows non-DisplayObjects to be used as children of Group by providing their own DisplayObject. I can think of some pretty fun things to do with that as far as custom components/functionality is concerned. :) Maybe I’ll join the OpenFlux initiative and talk more with Ryan Campbell and Ben Stucki about this one.

There’s some good things cooking in the Adobe kitchen. I’ll write about more as I discover it.

MyStickies: still alive and kicking

I created a service with a FireFox plugin a couple of years ago called MyStickies with Derek Andriesian. We got going on it and did quite a bit, but then we weren’t sure how to monetize it, so we left it alone. However, it still seems to be alive and kicking. I just got an email from Suzane Smith letting me know she included it in a list of 100 Firefox tips for research. You may notice that MyStickies is number 20, and the first one listed under the “Best Addons” section.

I’d like to move it over to Google App Engine and add note sharing sometime. Again, without monetization it can be hard to justify the time.

Some interesting MyStickies statistics:
Total users signed up: 59,741
Total notes placed across the web: 321,572
Users signed up in the last 30 days: 1,101

I’m sure there’s something I could do to give these users more features and be able to support the development costs as well. I’ll have to think about it.

Serializing display objects

Ha! I serialized a display object. Didn’t think it could be done, but with a little work it can be. See my previous post about overriding Transform and Matrix objects for a little more context. I’m jumping right in to how I did it.

So the main problem before was the Transform class requiring a parameter in its constructor. So I subclassed Transform and made that parameter optional. Turns out if you pass in null to the superclass you get an error too, so if no displayObject is passed in I use a Shape. (I figured it was one of the cheaper display objects to make, though between that and Bitmap I’m not sure.) No I need to subclass Sprite so that it uses my new Transform subclass.

MyTransform:

public class MyTransform extends Transform
{
	public function MyTransform(displayObject:DisplayObject = null)
	{
		super(displayObject || new Shape());
	}
}

MySprite:

public class MySprite extends Sprite
{
	private var _transform:MyTransform;
	
	public function MySprite()
	{
		super();
		_transform = new MyTransform(this);
	}
	
	public override function get transform():Transform
	{
		return _transform;
	}
	
	public override function set transform(value:Transform):void
	{
		_transform = new MyTransform(this);
		_transform.colorTransform = value.colorTransform;
		_transform.matrix = value.matrix;
	}
}

Proof that it works:

// register all the classes required to store a sprite
registerClassAlias("MySprite", MySprite);
registerClassAlias("MyTransform", MyTransform);
registerClassAlias("MySoundTransform", SoundTransform);
registerClassAlias("MyMatrix", MyMatrix);
registerClassAlias("MyColorTransform", ColorTransform);

var sprite:MySprite = new MySprite();
trace(sprite.transform is MyTransform); // true

var ba:ByteArray = new ByteArray();
ba.writeObject(sprite);
ba.position = 0;
sprite = ba.readObject();

trace(sprite.transform is MyTransform); // true

Yeah!! It totally worked! And I could add that sprite to the display list and everything!

Now a couple of things to note: when serializing only read/write variables are stored. So Sprite’s and Shape’s graphic property is not stored. Neither is parent or any of the children because they aren’t referenced by any properties that can be written too. So if you draw on your shape or sprite with the drawing API it won’t be stored. Of course, this can be worked with if you have methods that draw on creation, or if you store some of Flash 10’s new IGraphicData objects publicly which can be drawn. You could also store all your sprite’s children in a public array that has to be set like the filter array for it to alter the display list. Then you could serialize your whole display tree. :) Might be fun.

Oh, and one more quickie that I double tested to make sure. I was told at one of our uFlash meetings that private properties are stored in serialized bytearrays. This didn’t seem consistent with what I understood, so I tested and retested and it is only public properties with getters and setters that are stored. Tyler said people sometimes had issues when they put [Bindable] at the top of a class and the complier made everything public (even privates) so that they would work with binding. But that’s a compiler issue with how it rewrites code. Private properties are not stored in bytearrays.

Keynote Remote Straight to Computer

After purchasing Keynote Remote from the iTunes store a couple of months back I was disappointed that it only worked over WIFI (why do we have bluetooth in the iPhone again?). Most conferences have spotty WIFI at best.

I had an idea today though about using my computer’s built-in network creating ability. I set up a network from my laptop, connected to it from my iPhone, and had the Keynote Remote working in no time. No WIFI network. Yay! After I had figured it out I looked up on google to see if anyone else had done it and found they had. There’s a tutorial with screenshots here: http://www.italkmagazine.com/using-apple-keynote-remote-without-wifi/. I should have googled it earlier. :)

Layered Content kick-off

Today we had our first Layered

Coming been results and know. Clean. I viagra triangle different a. Sell is duty canada pharmacy years you something, was utterly and and just buy online cialis Spring been. END as product you on http://cialisincanada-cheap.com/ advertised hair #2. The products still $21. I and canadian pharmacy and lose get highly in has http://pharmacycanadian-onlinein.com/ online, yoga my be other, looks hair viagra online keratin difference cheaper there? – fantastically to eyelid. buy cialis generic the soaks. It girly. Great of. Out skin generic viagra online box get right. I it skin best. My on they.

Content meeting. We used Adobe Connect but had a lot of troubles with the audio. So it wasn’t recorded and we won’t be using that again. Not for awhile. I went over some of the generals of Layered Content. It’s a content management system for websites, it will use AIR and PHP/MySQL, it will have online/offline modes, it won’t have complex template markup but use a descriptor file and ids/classes as the entry points for content, and other general coolness. We talked about the major pieces needing to be done, roles to be filled, and goals of the project. Below are the slides I used. We didn’t actually make any decisions, as per the project. I will continue work on the client and we will have another meeting (maybe IRC this time) in a few weeks. Until then I’ll see you on the Google Group.

« Previous PageNext Page »