Today (not for the first time – but it’s been a while) I needed to create a custom class that took a custom itemRenderer.
Having used itemRenderers for ages I thought it was going to be straight forward, but I’d forgotten a few little bits of info needed to implement them from scratch (i.e. not using say a menu or datagrids itemRenderers). It’s all very well to just give a flex component a class name in the MXML but how does the class that contains the itemrenderer implement it?
So I created a very small test app to make sure that I could create a custom itemRenderer for my custom class.
- Step 1, create the custom itemRenderer. For the test I just made this a Canvas and made it 100% * 100% and the background colour was red.
- step 2, display the class that you are going use as an itemRenderer as a normal display object (place custom class inside a Canvas)
- step 3, create a custom class that will take and display an itemRenderer. Once created assign your new custom itemRenderer to the new custom class.
- View the test app, all going well you should now see two instances of your itemRenderer. One is the actual class as a displayObject and the other as an itemRenderer inside your custom class.
I’ve placed my small test app here purely so that you can look at the source code (right click app). The app does NOTHING and is not interactive, it’s just to show the source code and how to make sure you set things up correctly.
Once you’ve looked at the code this bit will make sense.
- step 1 & 2, display a canvas in the top left. This canvas contains only the custom class that is to be used as an itemRenderer. This just proves that the itemRender will display what you think it should.
- step 3, create a custom class that will contain your itemRenderer. Then place custom class into app and set the itemRenderer to your custom itemRenderer class.
All you need to do now is create a itemRenderer slighty more complex than a red box, but as long as it’s a DisplayObject then its going to be the same.
That’s it, as ever feel free to comment (especially if you’ve found this helpful).