Thanks. That make it a lot clearer.
Although, am not sure I understand why you would use the mixin approach here compared to using Composition.
Are there any benefits of doing it this way as opposed to say:
Embed a dataProvider inside "Comp.mxml" and have the comp listen for and handle the modelChanged event of the DP ?
TIA
- superabe
On 1/7/06, JesterXL <[EMAIL PROTECTED]> wrote:
*** resending, other one got lost in the ether I spose: 2:48pm 1.7.2006 ***In a nutshell, DataSelector is a mixin. A mixin adds methods and properties to a class at runtime. Since you cannot do multiple inheritance in ActionScript, using a mixin is a way around that. DataSelector adds dataProvider powers to a class:DataSelector.initialize(YourClass);Any class that utilizes DataSelector gets a length property. DataSelector gives a class pretty much all the DataProvider methods (which are really proxies to the dataProvider it contains a reference to), length being one of them. So:yourComponent.lengthis the same as:yourComponent.dataProvider.lengthYes, modelChanged fires everytime you use a DataProvider method on a dataProvider or dataProvider component.a = ["one", "two", "three"];yourComponent.dataProvider = a;a.addItem("cow"); // fires modelChangeda.push("cheese"); // does not fire modelChangedyourComponent.addItem("moo"); // fires modelChangedModelChanged actually has an object that is passed to it, the event object, that has information about what changed. You can use a switch statement to know what changed, and how, and more intelligently draw your component. A note; this is a fuoi$%(*)$% load of work. If you don't believe me, go look in DataGrid.as.So, to be lazy, I just ignore it and redraw everytime. Keep in mind, even if you use the code above, it'll only redraw once:- modelChanged fired for setting the dataProvider- modelChanged fired for adding "cow" to it- modelChagned fired for adding"moo" to itSince I use a doLater, and only 1, it'll only redraw once per frame.----- Original Message -----From: superabe superabeSent: Saturday, January 07, 2006 11:38 AMSubject: Re: [flexcoders] Alternative to Repeater
Thanks for the help.Couple of question1 .What do you mean by - utilize Data Selector on that class ?2. In the redrawForm method what does the value "length" represent.If it is the length of the dataProvider, am not clear how that was established3. Does "modelChanged" fire every time the dataProvider changes?If so seems like it would redraw the entire form even if only one item in the array changed (say using addItem).
Thanks,- superabe
On 1/7/06, JesterXL <[EMAIL PROTECTED] > wrote:You basically do:- create a new abstract base class for your component as ActionScript- utilize DataSelector on that class- extend that class in a new file- have the new file do something like thisfunction modelChanged(){cancelAllDoLaters();doLater(this, "redrawForm");}function redrawForm(){canvas_mc.destroyAllChildren();var i:Number = length;while(i--){var item:Object = getItemAt(i);canvas_mc.createChild(SomeComponent);}}What is happening here is whenever the dataProvider changes, the form is redrawn. It's only redrawn once per frame in case dataProvider has 50 billion changes.If you see the createChild call for the canvas, basically you could put in logic, say, to create images, and then call load on them based on the url for the current item.Then, you can finally use that AS component as MXML elsewhere. Make sense?------- Original Message -----From: superabe superabeSent: Saturday, January 07, 2006 11:09 AMSubject: [flexcoders] Alternative to Repeater
Is there an alternative to using a Repeater , that I could make use of in my component (AS based).For e.g.Say I have a component called "Comp"Comp.mxml (Pseudo-code)===========<mx:VBox><mx:Script>public var dp:Array;</mx:Script><mx:Repeater dataProvider="{dp}"><mx:Image source="{currentItem.url}"/></mx:Repeater></mx:VBox>Comp is used in Main.mxml and the dataprovider for Comp is set in Main.mxml.Main also may add and remove items from the the dataprovider for Comp on subsequent events.I would like to write Comp as an Actionscript class and avoid a Repeater all together.I may be missing something really obvious, but how would I do that ?TIA,- superabe
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
YAHOO! GROUPS LINKS
- Visit your group "flexcoders" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
YAHOO! GROUPS LINKS
- Visit your group "flexcoders" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
SPONSORED LINKS
| Web site design development | Computer software development | Software design and development |
| Macromedia flex | Software development best practice |
YAHOO! GROUPS LINKS
- Visit your group "flexcoders" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.

