Hi Steve. That's so excellent mate. I simply added in your code and then the 
only thing I needed to do was add in a variable to my main app called 
categoryid and set it to a default of 1. I then replaced the line:-

Alert.show(event.currentItem.categoryid);

with:-

categoryid=event.currentItem.categoryid;

and it works just like that. I've bound the categoryid var in my main app to a 
label component and it changes to the correspoding categoryid of each item that 
is clicked so it shows it works.

Now I can simply edit my filter function which filters my links tilelist in the 
main app so that it uses my new category id var as the filter paramater and I 
think I'll be set :-) Is that how you'd do it?

Thanks so much for this. I'd probably be using a crappy tilelist as the 
navigation if it weren't for you. You're a lifesaver.

I'm from Liverpool in England (like the beatles). I suppose I've said the word 
"mate" before and that made you wonder :-) I'm currently studying flex on my 
web development masters degree course at uni and want to go into making 
ecommerce websites using php/mysql/flex. I have no experience in web dev before 
this course and only have a degree in I.T. so I got thrown in the deep end 
really and had to teach myself how to swim but I'm addicted to it now and am 
constantly trying to perfect things which I think is my problem. :-)

--- In [email protected], "valdhor" <valdhorli...@...> wrote:
>
> Ooops. That should have been MyImageComponent.mxml instead of 
> MyCustomComponent.mxml.
> 
> BTW, where are you from? I am an ex pat Kiwi now living in the states.
> 
> --- In [email protected], "valdhor" <valdhorlists@> wrote:
> >
> > The way I would do it is to have a click event listener in the custom
> > component that would dispatch a custom bubbling event that the
> > application can listen for and handle. Modified example follows:
> > 
> > Application:
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > layout="vertical" verticalAlign="top"
> >      horizontalAlign="center"
> > backgroundGradientColors="[0x000000,0x323232]" paddingTop="0"
> >      xmlns:components = "*" initialize="onInit()">
> >      <mx:Script>
> >          <![CDATA[
> >              import mx.controls.Alert;
> > 
> >              [Bindable] private var dp:Array = [
> >                  {text: "First", image: "helmet"},
> >                  {text: "Second", image: "helmet"},
> >                  {text: "Third", image: "helmet"},
> >                  {text: "Fourth", image: "helmet"},
> >                  {text: "Fifth", image: "helmet"}
> >                  ];
> > 
> >              private function onInit():void
> >              {
> >                 
> > addEventListener(MyCustomEvent.WHAT_YOU_WANT_TO_USE_AS_AN_EVENT_CONSTANT\
> > , MyCustomEventHndler);
> >              }
> > 
> >              private function
> > MyCustomEventHndler(event:MyCustomEvent):void
> >              {
> >                  // Do what you need to here
> >                  event.stopImmediatePropagation();
> >                  Alert.show(event.currentItem.text);
> >              }
> >          ]]>
> >      </mx:Script>
> >      <mx:HBox>
> >          <mx:Repeater id="myImages" dataProvider="{dp}">
> >              <components:MyImageComponent
> > theItem="{myImages.currentItem}"/>
> >          </mx:Repeater>
> >      </mx:HBox>
> > </mx:Application>
> > 
> > MyCustomComponent.mxml
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
> > horizontalAlign="center" width="200" height="200"
> >      creationComplete="onCreationComplete()">
> >      <mx:Script>
> >          <![CDATA[
> >              public var theItem:Object;
> >              [Bindable] private var imageLocation:String;
> > 
> >              private function onCreationComplete():void
> >              {
> >                  thisText.text = theItem.text;
> >                  thisImage.source = "images/" + theItem.image + ".png";
> >              }
> > 
> >              private function handleClick(event:MouseEvent):void
> >              {
> >                  event.stopImmediatePropagation();
> >                  dispatchEvent(new
> > MyCustomEvent(MyCustomEvent.WHAT_YOU_WANT_TO_USE_AS_AN_EVENT_CONSTANT,
> > theItem));
> >              }
> >          ]]>
> >      </mx:Script>
> >      <mx:Image id="thisImage" rollOverEffect="{glowImage}"
> > rollOutEffect="{unglowImage}"
> >          autoLoad="true" click="handleClick(event)"/>
> >      <mx:Text id="thisText" fontSize="24" click="handleClick(event)"/>
> >      <mx:Glow id="glowImage" duration="1000" alphaFrom="1.0"
> > alphaTo="0.3" blurXFrom="0.0"
> >          blurXTo="50.0" blurYFrom="0.0" blurYTo="50.0" color="0x22A050"/>
> >      <mx:Glow id="unglowImage" duration="1000" alphaFrom="0.3"
> > alphaTo="1.0" blurXFrom="50.0"
> >          blurXTo="0.0" blurYFrom="50.0" blurYTo="0.0" color="0x3380DD"/>
> > </mx:VBox>
> > 
> > MyCustomEvent.as
> > package
> > {
> >      import flash.events.Event;
> > 
> >      public class MyCustomEvent extends Event
> >      {
> >          public static const
> > WHAT_YOU_WANT_TO_USE_AS_AN_EVENT_CONSTANT:String = "blahblah";
> > 
> >          private var _currentItem:Object;
> > 
> >          public function MyCustomEvent(type:String, currentItem:Object,
> > bubbles:Boolean=true, cancelable:Boolean=true)
> >          {
> >              super(type, bubbles, cancelable);
> >              _currentItem = currentItem;
> >          }
> > 
> >          public override function clone():Event
> >          {
> >              return new MyCustomEvent(type, _currentItem, bubbles,
> > cancelable);
> >          }
> > 
> >          public function get currentItem():Object {return _currentItem;}
> > 
> >          public function set currentItem(currentItem:Object):void
> > {_currentItem = currentItem;}
> >      }
> > }
> > 
> > 
> > 
> > HTH
> > 
> > 
> > 
> > Steve
> > 
> > 
> > 
> > 
> > --- In [email protected], "James" <garymoorcroft_ict@>
> > wrote:
> > >
> > > Basically what I mean is I previously had a combo box populated by an
> > array collection that contained the property categoryid and a tilelist
> > populated by an array collection that also contained the property
> > category id. So therefore when a user selected an item in the tilelist
> > only the items that had a categoryid which matched the category id of
> > that selected item were shown within the tilelist. Is this possible to
> > implement into this new example?
> > >
> > > --- In [email protected], "valdhor" valdhorlists@ wrote:
> > > >
> > > > I also looked at TourDeFlex to get some ideas.
> > > >
> > > > Here is a small example that I created that shows how to create a
> > custom
> > > > component as well as do the Glow effect on an image. (I got the
> > image
> > > > from downloading the file inside TourDeFlex under Glow):
> > > >
> > > > Application:
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > > layout="vertical" verticalAlign="top"
> > > >      horizontalAlign="center"
> > > > backgroundGradientColors="[0x000000,0x323232]" paddingTop="0"
> > > >      xmlns:components = "*">
> > > >      <mx:Script>
> > > >          <![CDATA[
> > > >              [Bindable] private var dp:Array = [
> > > >                  {text: "First", image: "helmet"},
> > > >                  {text: "Second", image: "helmet"},
> > > >                  {text: "Third", image: "helmet"},
> > > >                  {text: "Fourth", image: "helmet"},
> > > >                  {text: "Fifth", image: "helmet"}
> > > >                  ];
> > > >          ]]>
> > > >      </mx:Script>
> > > >      <mx:HBox>
> > > >          <mx:Repeater id="myImages" dataProvider="{dp}">
> > > >              <components:MyImageComponent
> > > > theItem="{myImages.currentItem}"/>
> > > >          </mx:Repeater>
> > > >      </mx:HBox>
> > > > </mx:Application>
> > > >
> > > > MyImageComponent.mxml
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
> > > > horizontalAlign="center" width="200" height="200"
> > > >      creationComplete="onCreationComplete()">
> > > >      <mx:Script>
> > > >          <![CDATA[
> > > >              public var theItem:Object;
> > > >              [Bindable] private var imageLocation:String;
> > > >
> > > >              private function onCreationComplete():void
> > > >              {
> > > >                  thisText.text = theItem.text;
> > > >                  thisImage.source = "images/" + theItem.image +
> > ".png";
> > > >              }
> > > >          ]]>
> > > >      </mx:Script>
> > > >      <mx:Image id="thisImage" rollOverEffect="{glowImage}"
> > > > rollOutEffect="{unglowImage}"
> > > >          autoLoad="true"/>
> > > >      <mx:Text id="thisText" fontSize="24"/>
> > > >      <mx:Glow id="glowImage" duration="1000" alphaFrom="1.0"
> > > > alphaTo="0.3" blurXFrom="0.0"
> > > >          blurXTo="50.0" blurYFrom="0.0" blurYTo="50.0"
> > color="0x22A050"/>
> > > >      <mx:Glow id="unglowImage" duration="1000" alphaFrom="0.3"
> > > > alphaTo="1.0" blurXFrom="50.0"
> > > >          blurXTo="0.0" blurYFrom="50.0" blurYTo="0.0"
> > color="0x3380DD"/>
> > > > </mx:VBox>
> > > >
> > > >
> > > > BTW. I only found one png image so I used it repeatedly. Also, I
> > have
> > > > only one size. You should make multiple sizes and place them in the
> > > > images folder. You should also set the width and height inside the
> > > > custom component depending on the size you want (I have them hard
> > coded
> > > > in my example). Then you would pass a size to the custom component
> > by
> > > > exposing a public variable and use a switch statement to select the
> > > > correct size.
> > > >
> > > > HTH
> > > >
> > > >
> > > >
> > > >
> > > > Steve
> > > >
> > > >
> > > >
> > > > --- In [email protected], "valdhor" <valdhorlists@> wrote:
> > > > >
> > > > > OK, I did some googling and this looks like exactly what you are
> > > > after...
> > > > >
> > > > > http://flexaired.blogspot.com/2008/07/sample-image-tile-list.html
> > > > >
> > > > > --- In [email protected], "James" garymoorcroft_ict@
> > wrote:
> > > > > >
> > > > > > Yes but it's the glow effect that I require. when each item is
> > > > hovered over it needs to glow rather than just having the blue
> > themed
> > > > square. Have you got any idea how to do this?
> > > > > >
> > > > > > --- In [email protected], "dannyvenier" <dannyvenier@>
> > > > wrote:
> > > > > > >
> > > > > > > Why not use a tileList or if spark, a List with tile layout. 
> > You
> > > > can use a custom itemrenderer which can re-render when additional
> > > > buttons are added and in rendering, can determine the optimum size
> > based
> > > > on running an algorithm on your dataprovider.  There are all sorts
> > of
> > > > edge conditions to worry about (what if the total text width exceeds
> > > > that of your container etc., etc.., but those have to be dealt with
> > in
> > > > any case, and I imagine you need a custom renderer anyway, to build
> > your
> > > > list items.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --- In [email protected], "James"
> > <garymoorcroft_ict@>
> > > > wrote:
> > > > > > > >
> > > > > > > > I'm lost as to what component to use for navigation within
> > my
> > > > application. Across the top of my app I want something which
> > > > horizontally displays a list of categories which the user can click
> > to
> > > > select. This is fine if I use a tilelist but I also want to allow my
> > > > client to add and remove categories and for the width of the
> > component
> > > > to adjust so that new categories fit in but it seems impossible to
> > apply
> > > > <fit to content> to a tilelist the way you can to a hbox which
> > obviously
> > > > means scrollbars will appear and if you switch the scroll policy off
> > > > this simply means any added categories won't be visible if they are
> > past
> > > > the set width.
> > > > > > > >
> > > > > > > > If a hbox had a selecteditem property that would be perfect.
> > Is
> > > > there any such way of getting a component to work like this?
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


Reply via email to