Complex animated rollover using AS3

Flash newbie here. I've been able to create a button symbol
with an embedded movie clip that animates in the rollover state.
The problem is that the animation is slightly complex - it runs for
20 frames - and when the user rolls out of the button, it quickly
reverts to it's normal state which makes the animation effect seem
jerky (i.e. unprofessional).
I know it's possible to create a movie clip with AS3 that
acts like a button but I haven't been able to find any sample AS3
code that will tell the movie clip to let the animation finish even
if the user moves the cursor off the button.
Anyone have any ideas how this could be done?

Use a movieclip instead of a button. There is no way of
taming a button to remain in a state when the mouse events
change.

Similar Messages

  • Animated Rollover for Muse

    Hi, I'm trying to create an animated rollover for use in Muse (not a button, JUST a rollover) using Edge Animate, like the example on this page (scroll or click Features): PozitivA - Multipurpose One Page Muse Template
    It doesn't seem like I am able to insert the animation as a state or within a state button. How can I go about accomplishing this?
    Thank you.

    Thank you! I figured it out via this tutorial after reading your answer: Adobe Edge Animate Interactive Rollover Web Buttons Tutorial - YouTube
    I'm completely new to Edge Animate

  • Tweening using AS3 - Not Smooth

    Hi, im trying to develop a simple web gallery.
    When the user scroll his mouse to the left side of the image the leftArrow will appear to allow him to move back
    and same goes for the right arrow. Im using AS3 tweening using the tween class but the animation is really not smooth.
    I saw this effect on a different website and the side arrows just pops out and a such a smooth way but i cant get it to work.
    Any one can tell me why ?
    Attahced i the .SWF file.
    Thanks

    Sorry ! just had to change the frames per sec !!

  • Create animated GIF using imageio

    How do you create an animated GIF using the J2SE's javax.imageio classes?
    I have been browsing these 3 threads (one of which I participated in) to try and develop an SSCCE of creating an animated GIF.
    [Writing out animated gifs with ImageIO?|http://forums.sun.com/thread.jspa?threadID=5204877]
    [Wirting image metadata to control animated gif delays |http://forums.java.net/jive/thread.jspa?messageID=214284&]
    [Help with GIF writer in imageio|http://www.javakb.com/Uwe/Forum.aspx/java-programmer/32892/Help-with-GIF-writer-in-imageio]
    (pity I did not prompt the OP on that last one, to supply an SSCCE.)
    Unfortunately, my efforts so far have been dismal. Either, without the IIOMetadata object, the GIF has frames with no delay, and it cycles just once, or with the IIOMetadata object I get an error.
    IIOInvalidTreeException: Unknown child of root node!Can anyone point me in the right direction?
    import java.awt.*;
    import java.awt.image.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.URL;
    import java.util.Iterator;
    import javax.imageio.*;
    import javax.imageio.metadata.*;
    import javax.imageio.stream.*;
    import org.w3c.dom.Node;
    class WriteAnimatedGif {
      /** Adapted from code via Brian Burkhalter on
      http://forums.java.net/jive/thread.jspa?messageID=214284& */
      public static Node getRootNode(String delayTime) {
        IIOMetadataNode root =
          new IIOMetadataNode("javax_imageio_gif_stream_1.0");
        IIOMetadataNode gce =
          new IIOMetadataNode("GraphicControlExtension");
        gce.setAttribute("disposalMethod", "none");
        gce.setAttribute("userInputFlag", "FALSE");
        gce.setAttribute("transparentColorFlag", "FALSE");
        gce.setAttribute("delayTime", delayTime);
        gce.setAttribute("transparentColorIndex", "255");
        root.appendChild(gce);
        IIOMetadataNode aes =
          new IIOMetadataNode("ApplicationExtensions");
        IIOMetadataNode ae =
          new IIOMetadataNode("ApplicationExtension");
        ae.setAttribute("applicationID", "NETSCAPE");
        ae.setAttribute("authenticationCode", "2.0");
        byte[] uo = new byte[] {
          (byte)0x21, (byte)0xff, (byte)0x0b,
          (byte)'N', (byte)'E', (byte)'T', (byte)'S',
          (byte)'C', (byte)'A', (byte)'P', (byte)'E',
          (byte)'2', (byte)'.', (byte)'0',
          (byte)0x03, (byte)0x01, (byte)0x00, (byte)0x00,
          (byte)0x00
        ae.setUserObject(uo);
        aes.appendChild(ae);
        root.appendChild(aes);
        return root;
      /** Adapted from code via GeogffTitmus on
      http://forums.sun.com/thread.jspa?messageID=9988198 */
      public static File saveAnimate(
        BufferedImage[] frames,
        String name,
        String delayTime) throws Exception {
        File file = null;
        file = new File(name+".gif");
        Node root = getRootNode(delayTime);
        ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next();
        ImageOutputStream ios = ImageIO.createImageOutputStream(file);
        iw.setOutput(ios);
        //IIOImage ii = new IIOImage(frames[0], null, null);
        //IIOMetadata im = iw.getDefaultStreamMetadata(null);
        //IIOMetadata im = new AnimatedIIOMetadata();
        //im.setFromTree("gif", root);
        iw.prepareWriteSequence(null);
        for (int i = 0; i < frames.length; i++) {
          BufferedImage src = frames;
    ImageWriteParam iwp = iw.getDefaultWriteParam();
    IIOMetadata metadata = iw.getDefaultStreamMetadata(iwp);
    System.out.println( "IIOMetadata: " + metadata );
    //metadata.mergeTree(metadata.getNativeMetadataFormatName(), root);
    metadata.setFromTree(metadata.getNativeMetadataFormatName(), root);
    //Node root = metadata.getAsTree("javax_imageio_gif_image_1.0");
    IIOImage ii = new IIOImage(src, null, metadata);
    iw.writeToSequence( ii, (ImageWriteParam)null);
    iw.endWriteSequence();
    ios.close();
    return file;
    public static void main(String[] args) throws Exception {
    // uncomment the other two if you like, but we can
    // see it work or fail with just the first and last.
    String[] names = {
    "bronze",
    //"silver",
    //"gold",
    "platinum"
    String pre = "http://forums.sun.com/im/";
    String suff = "-star.gif";
    BufferedImage[] frames = new BufferedImage[names.length];
    for (int ii=0; ii<names.length; ii++) {
    URL url = new URL(pre + names[ii] + suff);
    System.out.println(url);
    frames[ii] = ImageIO.read(url);
    File f = saveAnimate(frames, "animatedstars", "500");
    JOptionPane.showMessageDialog( null, new ImageIcon(f.toURI().toURL()) );
    Desktop.getDesktop().open(f);
    ImageInputStream iis = ImageIO.createImageInputStream(f);
    //System.out.println("ImageReader: " + ir1);
    //System.out.println("IIOMetadata: " + ir1.getStreamMetadata());
    Iterator itReaders = ImageIO.getImageReaders(iis);
    while (itReaders.hasNext() ) {
    ImageReader ir = (ImageReader)itReaders.next();
    System.out.println("ImageReader: " + ir);
    System.out.println("IIOMetadata: " + ir.getStreamMetadata());

    According to imagio's [gif metadata specification|http://java.sun.com/javase/6/docs/api/javax/imageio/metadata/doc-files/gif_metadata.html], the metadata you are specifying is image-specific metadata. The stream metadata is global metadata applicable to all the images.
    So change this,
    IIOMetadataNode root =
        new IIOMetadataNode("javax_imageio_gif_stream_1.0");to this,
    IIOMetadataNode root =
        new IIOMetadataNode("javax_imageio_gif_image_1.0");and this,
    IIOMetadata metadata = iw.getDefaultStreamMetadata(iwp);
    System.out.println( "IIOMetadata: " + metadata );
    //metadata.mergeTree(metadata.getNativeMetadataFormatName(), root);
    metadata.setFromTree(metadata.getNativeMetadataFormatName(), root);
    //Node root = metadata.getAsTree("javax_imageio_gif_image_1.0");to this,
    IIOMetadata metadata = iw.getDefaultImageMetadata(
            new ImageTypeSpecifier(src),null);
    System.out.println("IIOMetadata: " + metadata);
    metadata.mergeTree(metadata.getNativeMetadataFormatName(), root);Here is your program again, but with the above changes.
    import java.awt.*;
    import java.awt.image.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.URL;
    import java.util.Iterator;
    import javax.imageio.*;
    import javax.imageio.metadata.*;
    import javax.imageio.stream.*;
    import org.w3c.dom.Node;
    class WriteAnimatedGif {
        /** Adapted from code via Brian Burkhalter on
        http://forums.java.net/jive/thread.jspa?messageID=214284& */
        public static Node getRootNode(String delayTime) {
            IIOMetadataNode root =
                    new IIOMetadataNode("javax_imageio_gif_image_1.0");
            IIOMetadataNode gce =
                    new IIOMetadataNode("GraphicControlExtension");
            gce.setAttribute("disposalMethod", "none");
            gce.setAttribute("userInputFlag", "FALSE");
            gce.setAttribute("transparentColorFlag", "FALSE");
            gce.setAttribute("delayTime", delayTime);
            gce.setAttribute("transparentColorIndex", "255");
            root.appendChild(gce);
            IIOMetadataNode aes =
                    new IIOMetadataNode("ApplicationExtensions");
            IIOMetadataNode ae =
                    new IIOMetadataNode("ApplicationExtension");
            ae.setAttribute("applicationID", "NETSCAPE");
            ae.setAttribute("authenticationCode", "2.0");
            byte[] uo = new byte[]{
                (byte) 0x21, (byte) 0xff, (byte) 0x0b,
                (byte) 'N', (byte) 'E', (byte) 'T', (byte) 'S',
                (byte) 'C', (byte) 'A', (byte) 'P', (byte) 'E',
                (byte) '2', (byte) '.', (byte) '0',
                (byte) 0x03, (byte) 0x01, (byte) 0x00, (byte) 0x00,
                (byte) 0x00
            ae.setUserObject(uo);
            aes.appendChild(ae);
            root.appendChild(aes);
            return root;
        /** Adapted from code via GeogffTitmus on
        http://forums.sun.com/thread.jspa?messageID=9988198 */
        public static File saveAnimate(
                BufferedImage[] frames,
                String name,
                String delayTime) throws Exception {
            File file = null;
            file = new File(name + ".gif");
            Node root = getRootNode(delayTime);
            ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next();
            ImageOutputStream ios = ImageIO.createImageOutputStream(file);
            iw.setOutput(ios);
            //IIOImage ii = new IIOImage(frames[0], null, null);
            //IIOMetadata im = iw.getDefaultStreamMetadata(null);
            //IIOMetadata im = new AnimatedIIOMetadata();
            //im.setFromTree("gif", root);
            iw.prepareWriteSequence(null);
            for (int i = 0; i < frames.length; i++) {
                BufferedImage src = frames;
    ImageWriteParam iwp = iw.getDefaultWriteParam();
    IIOMetadata metadata = iw.getDefaultImageMetadata(
    new ImageTypeSpecifier(src), null);
    System.out.println("IIOMetadata: " + metadata);
    metadata.mergeTree(metadata.getNativeMetadataFormatName(), root);
    IIOImage ii = new IIOImage(src, null, metadata);
    iw.writeToSequence(ii, (ImageWriteParam) null);
    iw.endWriteSequence();
    ios.close();
    return file;
    public static void main(String[] args) throws Exception {
    // uncomment the other two if you like, but we can
    // see it work or fail with just the first and last.
    String[] names = {
    "bronze",
    //"silver",
    //"gold",
    "platinum"
    String pre = "http://forums.sun.com/im/";
    String suff = "-star.gif";
    BufferedImage[] frames = new BufferedImage[names.length];
    for (int ii = 0; ii < names.length; ii++) {
    URL url = new URL(pre + names[ii] + suff);
    System.out.println(url);
    frames[ii] = ImageIO.read(url);
    File f = saveAnimate(frames, "animatedstars", "500");
    JOptionPane.showMessageDialog(null, new ImageIcon(f.toURI().toURL()));
    Desktop.getDesktop().open(f);
    ImageInputStream iis = ImageIO.createImageInputStream(f);
    //System.out.println("ImageReader: " + ir1);
    //System.out.println("IIOMetadata: " + ir1.getStreamMetadata());
    Iterator itReaders = ImageIO.getImageReaders(iis);
    while (itReaders.hasNext()) {
    ImageReader ir = (ImageReader) itReaders.next();
    System.out.println("ImageReader: " + ir);
    System.out.println("IIOMetadata: " + ir.getStreamMetadata());

  • Resizing animated GIF using JIMI.

    Hi everybody,
    I have a very simple question: how can i resize an animated gif using JIMI?
    what i can do now is open the gif resize it and save it as a jpeg pic, but the animation dosen't normally remain. i want to save it as a gif thus the animation info remains.
    when i try saving it using this code:
    try{
                    Jimi.putImage("image/gif",new_image,destination);
                catch(JimiException je){
                    System.err.println("JimiException: " + je.toString());
                }i get this exception:
    com.sun.jimi.core.JimiException: Cannot find encoder for type: image/gif.
    Where can i find a gif encoder for JIMI?
    Please help.

    Jimi doesn't support GIF encoding and I afraid not support resizing animated GIFs but resize only the first frame. To resize animated GIFs I suggest to use Gif4J (http://www.gif4j.com): it's commercial but it works and works very well.

  • Set frame delay time for animated gif using ImageIO

    I'm trying to change the delay time of each frame for an animated gif by changing the metadata for each frame as following but it doesn't change anything.
    static private IIOMetadata setMetadata(IIOMetadata metadata, int delayMS) throws IOException
              Node root = metadata.getAsTree("javax_imageio_gif_image_1.0");
              for (Node c = root.getFirstChild(); c != null; c = c.getNextSibling())
                   String name = c.getNodeName();
                   if (c instanceof IIOMetadataNode)
                        IIOMetadataNode metaNode = (IIOMetadataNode) c;
                        if ("GraphicControlExtension".equals(name))
                             metaNode.setAttribute("delayTime", Integer.toString(delayMS));
         }Does anyone know how to set delay time for animated gif using ImageIO ?

    I'm trying to change the delay time of each frame for an animated gif by changing the metadata for each frame as following but it doesn't change anything.
    static private IIOMetadata setMetadata(IIOMetadata metadata, int delayMS) throws IOException
              Node root = metadata.getAsTree("javax_imageio_gif_image_1.0");
              for (Node c = root.getFirstChild(); c != null; c = c.getNextSibling())
                   String name = c.getNodeName();
                   if (c instanceof IIOMetadataNode)
                        IIOMetadataNode metaNode = (IIOMetadataNode) c;
                        if ("GraphicControlExtension".equals(name))
                             metaNode.setAttribute("delayTime", Integer.toString(delayMS));
         }Does anyone know how to set delay time for animated gif using ImageIO ?

  • How to read a local file using as3 in a flash object in HTML? [urgent]

    My web site contains a flash object.
    I want to use as3 to read some local .txt file
    by getting the user directory of the file.
    i know AIR can support this by sth like:
    File.desktopDirectory.resolvePath
    but when i open a AIR file for this, it seems
    the action cant be run when i embed it in html.
    And i tried to use the above function in a normal
    flash file in the action script.
    But it cant recognize the File. class..
    How can it be done ?
    It's reli urgent,
    please help...
    Thanks !

    a web based flash app can't detect user directories.  you can use the filereference class'es browse method to let the user locate a file in any directory the user wants.  flash can then retrieve the file's name and type.  but, as mentioned before,  flash can't determine the file's directory.

  • How do I create a play button for movie clip using AS3

    Hello.
    Bit new to this and have been searching the adobe forums and google. I am trying to create a button that will play an imported MovieClip.
    I have a movie clip that I've imported into it's own layer (Layer1) Frame 1.  I've given the MovieClip an instance name of foundationMovie.
    I've created a button and have that on its own layer(Layer2) above layer1, it is also in Frame 1.
    I've added a
    stop (); action to layer2
    The video is not set to autoplay.
    I want the video to start playing when the viewer clicks the button.  I know I've got to put some kind of event listener using AS3 in my timeline somewhere.
    I've found some code and I've been trying to work with it.  I'm sure I've mutilated it beyond usability but this is what I've got.
    stop ();
    player.addEventListener(MouseEvent.CLICK,play);
    function play(event:MouseEvent)
    gotoAndPlay("foundationMovie");
    If someone could point me the right direction or help me with my code I would really appreciate it.  Thanks.

    First, you need to clear up what you are working with... a movieclip and a video are usually entirely different things.
    Next, your code may get you started on your way with some changes.   You shouldn't use "play" as a function name due to there already being a play() method/function in Flash.
    If the movieclip is a movieclip and has an instance name of "foundationMovie", and your button has an instance name of "player" then the following adjusted code would normally work...
    stop ();
    player.addEventListener(MouseEvent.CLICK,playMovie);
    function playMovie(event:MouseEvent)
         foundationMovie.play();

  • Dynamic Photo Gallery in Flash using AS3.0 and XML, but it doesn't work and missed up my app.

    Hi,
    I am creating an iPad app using AS3. The app contains three sections.
    One of those sections (chocolate sources)contains Dynamic Photo Gallery using XML. The photos, thumbnails, and text in this section are loaded from XML.
    I faced may issue when I tried to run this app:
    The gallery photos didn't show up
    The thumbnails (buttons to navigate the photo gallery) didn't show up at all. (The thumbnails should show up under the photo gallery box.)
    The text doesn't show up (the text should be in every photo as describtion)
    I want to include Swipe in the photo gallery, how can I do that?
    When I click on "Chocolate Sources" button, the photo gallery appears in every section, here are print screens describe what I mean:
    The photo gallery covers the home screen too.
    Here is my XML:
    <?xml version="1.0" encoding="utf-8"?>
    <sources>
              <section>
                        <details>
                                            Cocoa tree exists in the tropics area, such as Central and South America.
                                  </details>
                                            <image>
                                                      <url>coca1.jpg</url>
                                                      </image>
                                                      </section>
              <section>
                        <details>
                        Cocoa is supplied in many countries such as Indonesia, Ghana, Brazil, Ecuador and Cameroon.
                        </details>
                                  <image>
                                  <url>coca2.jpg</url>
                                  </image>
                                            </section>
              <section>
                                  <details>
                                  Dark chocolate helps to relax and reduce the stress and blood pressure because it has antioxidants elements, which helps in vasodilatory process.
                                  </details>
                                            <image>
                                            <url>coca3.jpg</url>
                                                      </image>
                                                                </section>
              <section>
                        <details>
                        Chocolate provides energy and hyperactive sometimes because it contains high level of caffeine and sugar.
                        </details>
                                  <image>
                                  <url>coca4.jpg</url>
                                            </image>
                                                      </section>
              <section>
                        <details>
                        Chocolate could be mixed with many different flavors, such as mint, strawberry, orange, banana, vanilla, hazelnut, almond, coconut, and etc.
                        </details>
                                  <image>
                                  <url>coca5.jpg</url>
                                  </image>
                                            </section>
              <section>
                        <details>
                                  Chocolate is expressing of well hospitality and good time due to its lovely taste.
                                  </details>
                                            <image>
                                            <url>coca6.jpg</url>
                                                      </image>
                                                                </section>
    </sources>
    And here is my Action Script for "Chocolate Sources" section:
    stop();
    function Choco1(evt:MouseEvent): void {
              gotoAndStop('16');
    choco_btn.addEventListener(MouseEvent.CLICK,Choco1);
    function Souc1 (evt:MouseEvent): void {
              gotoAndStop ('31');
    souc_btn.addEventListener(MouseEvent.CLICK,Souc1);
    function ShopIn1 (evt:MouseEvent):void {
              gotoAndStop('46');
    shops_btn.addEventListener(MouseEvent.CLICK,ShopIn1);
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.display.Loader;
    import fl.motion.MotionEvent;
    import flash.events.MouseEvent;
    import flash.sampler.NewObjectSample;
    import flash.text.TextFormat;
    var xmlLoader: URLLoader = new URLLoader (new URLRequest("sources.xml"));
    xmlLoader.addEventListener(Event.COMPLETE, finishedXmlLoader);
    var xmlFile:XML;
    var xextend:int = 10;
    var gal:galary = new galary ();
              gal.x = 85;
              gal.y = 165;
              addChild(gal);
    var txfe: TextField = new TextField ();
    txfe.x = 25;
    txfe.y = 45;
    var tformat:TextFormat = new TextFormat ();
    tformat.bold = true;
    tformat.color = 0xFFFFFF;
    tformat.size = "18";
    tformat.font = "Arial";
    txfe.defaultTextFormat = tformat;
    addChild(txfe);
    function finishedXmlLoader (e:Event): void{
              xmlFile = new XML (xmlLoader.data);
              var leng:int = xmlFile.image.length();
              txfe.text = xmlFile.image.details[0];
              for (var i:int = 0;i<leng;i++){
                        var b:thumbs = new thumbs ();
                        b.x = xextend;
                        b.y = 480;
                        b.buttonMode = true;
                        b.details = (i+1).toString();
                        addChild(b);
                        b.addEventListener(MouseEvent.MOUSE_OVER, theMosover);
                        b.addEventListener(MouseEvent.MOUSE_OUT, theMosout);
                        b.addEventListener(MouseEvent.CLICK, onMosClick);
                        var bloader:Loader = new Loader();
                        bloader.load(new URLRequest("thumbs/" + (i+1) + ".jpg"));
                        b.addChild(bloader);
                        xextend += b.width + 50;
    var loader:Loader = new Loader ();
    loader.load(new URLRequest ("pictures/coca1.jpg"));
    gal.addChild(loader);
    function theMosover(m:MotionEvent):void{
              m.currentTarget.alpha = 0.5;
    function theMosout (m:MouseEvent):void{
              m.currentTarget.alpha = 1.0;
    function onMosClick(m:MouseEvent):void{
              var loader:Loader = new Loader();
              loader.load(new URLRequest("pictures/" + m.currentTarget.details + ".jpg"));
              gal.addChild(loader);
              txfe.text = xmlFile.image.details[int(m.currentTarget.details) -1];
    I need an urgent help to fix the errors and make this section work well.
    thanks.

    try:
    txfe.text = xmlFile.section[int(m.currentTarget.details) -1].details;
    instead of
    txfe.text = xmlFile.image.[int(m.currentTarget.details) -1];
    and add your thumbs to gal, not the stage.  when you're done with the gallery, remove gal.

  • Tracing Captivate 4 variables in Flash CS4 using AS3

    Hello. I've googled this 9 ways to Sunday and can't find an answer. I'm hoping one of you can help.
    I have a very simple Captivate 4 quiz with one question. I embed the Captivate SWF file in a Flash file, which plays fine. However I am struggling with tracing one of the Captivate variables in the Flash file using AS3.
    All I want is for Flash to read the Captivate variables so I can continue developing my quiz in Flash (building additional functionality Captivate does not provide).
    The variable I'm attempting to trace is cpInfoAuthor.
    I've attempted:
    trace(root.cpInfoAuthor);
    trace(root.movie.cpInfoAuthor);
    var cpAuthor = MovieClip(root).cpInfoAuthor;
    All of the above examples error out: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    Captivate preferences are set to publish in AS3.
    Anyone with an explanation?
    Be splendid, Jodie.

    Hi Jodie,
    I'm not exactly 100% proficient in AS3 but to me it looks like your statements are wrong.
    Since you are loading your Captivate SWF into a Flash SWF then (root) actually refers to your Flash SWF. I guess that you are loading your Captivate SWF into a movieclip on your Flash stage and that movieclip has an instance name,
    You would therefore need to grab the variables like var cpAuthor = yourLoaderMovieClip.cpInfoAuthor;
    See if that doesn't do the trick for you.
    /Michael
    Visit my Captivate blog with tips & tricks, tutorials and Widgets.

  • How to Access Custom Event using AS3?

    Hi All,
    Maybe it's that its Monday morning and my brain is still foggy, but I can't seem to figure out how to set custom events using AS3.
    I have a custom GridRow itemRenderer, and have declared the event using the appropriate metatags.
    Then I create the GR item dynamically using AS3 instantiation, but the event is not available for selection in the intellisense drop-down.
    Let's take the following as an example:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Grid
         xmlns:mx="http://www.adobe.com/2006/mxml"
         xmlns:renderers="com.brassworks.renderers.*"
         creationComplete="componentInit();"
    >
         <mx:Script>
              <![CDATA[
                   private function componentInit():void
                        newRow     :MyRow     = new MyRow();
                        //newRow.myEvent is not an available option to set
              ]]>
         </mx:Script>
    </mx:Grid>
    Then the itemRenderer:
    <?xml version="1.0" encoding="utf-8"?>
    <GridRow
         xmlns:mx="http://www.adobe.com/2006/mxml"
         xmlns:classes="com.brassworks.components.classes.*"
         creationComplete="componentInit();"
    >
         <mx:Metadata>
              [Event(name="myEvent", type="flash.events.Event")]
         </mx:Metadata>
         <mx:Script>
              <![CDATA[
                   private function itemChanged(event:Event):void
                   Alert.show("test");
                   this.dispatchEvent(new Event("myEvent"));
              ]]>
         </mx:Script>
         <mx:GridItem>
              <mx:TextInput
                   change="itemChanged"
              />
         </mx:GridItem>
    </GridRow>
    How do I go about setting the handler method for custom events on instantiated items? Do I need to do this via the AddEventListener() method? Does this mean that events aren't exposed in ActionScript like they are in MXML? (In MXML all I have to do is <MyRow myEvent="handler(event)" />.)
    Thanks!
    -Mike

    Yes, I you need to do this via the addEventListener() method.
    myRow.addEventListener( "myEvent", myHandler );
    I hope that helps.
    Ben Edwards

  • Creating AIR/Web Apps. with XML & E4X using AS3

    Needing tips using AS3 with XML/E4X to make my project work over the server:
    1) Here I'm having trouble trying to create a component with a 'GOOGLE MAP' with the user being able to input their location for directions with once submitting the get directions button that it generates the directions in the datagrid automatically.
    2) Including a 'DATAGRID'  for customers to be able to retain their info in a datagrid that has been updated by office personnel from an 'AIR APPLICATION' with a XML file that holds the customers info
    /**the Component*/
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:s="library://ns.adobe.com/flex/spark" width="1400" backgroundColor="#666666" xmlns:mx2="library://ns.adobe.com/flex/mx" creationComplete="initApp(event)">
        <mx:Style source="map_1.css"/>
        <mx:XML id="customer_info.xml" source="Assets/customer_info.xml" />
    <mx:Script>
            <![CDATA[
                /**Google Map Code API:http://code.google.com/apis/maps/documentation/flash/tutorial-flexbuilder.html#DeclaringMa ps_&
                 _http://www.adobe.com/devnet/flex/articles/googlemaps_api.html */
                import com.google.maps.LatLng;
                import com.google.maps.Map;
                import com.google.maps.MapEvent;
                import com.google.maps.MapType;
                private function onMapReady(event:Event):void {
                        this.map.setCenter(new LatLng(31.683952973286058, -97.09904551506042), 14, MapType.NORMAL_MAP_TYPE);
                            click="processForm(event);"
                            private function processForm(event:Event):void { trace(from.text + " " + to.text); }
                [Bindable]
                    public var directionsSteps:ArrayCollection = new ArrayCollection();
                    dataProvider="{directionsSteps}"
                    var directions:Directions = new Directions(); directions.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirectionsSuccess);
                    directions.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirectionsFail);directions.load("from: " + from.text + " to: " + to.text);
                    Alert.show("Status:" + event.directions.status);
                    map.clearOverlays(); var directions:Directions = event.directions; var directionsPolyline:IPolyline = directions.createPolyline(); map.addOverlay(directionsPolyline);
                                var directionsBounds:LatLngBounds = directionsPolyline.getLatLngBounds(); map.setCenter(directionsBounds.getCenter()); map.setZoom(map.getBoundsZoomLevel(directionsBounds));
                                var startLatLng:LatLng = dir.getRoute(0).getStep(0).latLng;
                                var endLatLng:LatLng = dir.getRoute(directions.numRoutes-1).endLatLng; map.addOverlay(new Marker(startLatLng)); map.addOverlay(new Marker(endLatLng));
                    for (var r:Number = 0 ; r < directions.numRoutes; r++ ) { var route:Route = directions.getRoute(r); for (var s:Number = 0 ; s < route.numSteps; s++ )
                    { var step:Step = route.getStep(s); directionsSteps.addItem(step);
                                    directionsSteps.removeAll();
                                    itemClick="onGridClick(event)"
                                    privatefunction onGridClick(event:Event):void { var latLng:LatLng = directionsGrid.selectedItem.latLng;
                                        var opts:InfoWindowOptions = new InfoWindowOptions(); opts.contentHTML = directionsGrid.selectedItem.descriptionHtml; map.openInfoWindow(latLng, opts);
                                        var ServerPath:String = "http://www.sometext.com/";
                                        var ServerPage:String = serverPath + "getCountries";
                                                dataProvider="{directionsSteps}"
                                                var directions:Directions = new Directions(); directions.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirectionsSuccess); directions.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirectionsFail);
                                                directions.load("from: " + from.text + " to: " + to.text);
                                                Alert.show("Status:" + event.directions.status);
                                                map.clearOverlays(); var directions:Directions = event.directions; var directionsPolyline:IPolyline = directions.createPolyline();
                                                map.addOverlay(directionsPolyline);
                                                var directionsBounds:LatLngBounds = directionsPolyline.getLatLngBounds(); map.setCenter(directionsBounds.getCenter());
                                                map.setZoom(map.getBoundsZoomLevel(directionsBounds));
                                                var startLatLng:LatLng = dir.getRoute(0).getStep(0).latLng; var endLatLng:LatLng = dir.getRoute(directions.numRoutes-1).endLatLng; map.addOverlay(new Marker(startLatLng));
                                                map.addOverlay(new Marker(endLatLng));
                                                for (var r:Number = 0 ; r < directions.numRoutes; r++ ) { var route:Route = directions.getRoute(r); for (var s:Number = 0 ; s < route.numSteps; s++ )
                                                { var step:Step = route.getStep(s); directionsSteps.addItem(step); } }
                                                directionsSteps.removeAll();
                                                itemClick="onGridClick(event)"
                        import flash.events.IOErrorEvent;
                        import flash.events.SecurityErrorEvent;
                                    var sender:URLLoader;
                                    var sendPage:URLRequest;
                                    var sendVars:URLVariables;
                                         initApp;
                                        function initApp:void {
                                    var ServerPath:String = "http://localhost/silverfoxcc/";
                                    var url:String = serverPath + "login.aspx";
                                    sender = new URLLoader();
                                    sendPage = new URLRequest(url);
                                    sendPage.method = URLRequest.POST;
                                    sendvars = new URLVariables();
                                    SUBMIT.btn.addEventListener(MouseEvent.CLICK, clickHandler);
                                    sender.addEventListener(Event.COMPLETE, completeHandler);
                                    sender.addEventListener(IOErrorEvent.SECURITY_ERROR, securityErrorhandler);
                                                function clickhandler(e:MouseEvent:void{
                                                    var suppSUBMIT:String = username_txt.text;
                                                    var suppRESET:String = reset_txt.text;
                                                    if (suppSUBMIT.length > 0 && suppRESET.length > 0) {
                                                        message_txt.text = "";
                                                        sendVars.submit = suppSUBMIT;
                                                        sendVars.reset = suppRESET;
                                                        sendPage.data = sendVars;
                                                        sender.load(sendPage);
                                                    else{
                                                        message_txt.text ="You must enter a last name and customer identification before clicking the submit button."
                                                  function completeHandler(e:Event):void{
                                                      var xmlResponse:XML = XML(e.target.data;
                                                          var userMessage:String;
                                                          if (xmlResponse.text().toString() == "true") {
                                                              userMessage = "Congratulations, information is retrieved"'';
                                                          else {
                                                              usermessage = "Information to be retrieved failed. Please try again";
                                                                              message_txt.text =userMessage;
                                                                      function ioErrorHandler(e:IOErrorEvent):void{
                                                                          message_txt.text = e.text;
                                                                      function securityErrorHandler(e:SecurityErrorEvent):void {
                                                                          message_txt.text = e.text;
                                                             /**Foundation for Ed: XML & E4X-Chapter 9: COMMUNICATION WITH THE SERVER*/
                                                              import mx.events.FlexEvent;
                                                              import xmlUtilities.XMLLoader;
                                                              import flash.events.IOErrorEvent;
                                                              import flash.events.SecurityErrorEvent
                                                              private var serverPath:String = "http://localhost/FOE/";
                                                              private function initApp(e:FlexEvent):void {
                                                                  myXMLLoader = new XMLLoader();
                                                                  myXMLLoader.addEventListener(Event.COMPLETE, completeHandler);
                                                                  myXMLLoader.addEventListener(IOErrorEvent.IO_Error, IOErrorHandler);
                                                                  SUBMIT.btn.addEventListener(MouseEvent.CLICK, clickHandler);
                                                                          private function completeHandler(e:Event):void{
                                                                              var userMessage:String;
                                                                              var response:String =myXMLLoader.response().toString();
                                                                              if (response:String = myXMLLoader.response().toString();
                                                                                  if (response == true"){
                                                                                         usermessage = "Congratualtions. You were successful";
                                                                                              else{
                                                                                            userMessage = Login failed. Please try again";
                                                                                      message_txt.text = userMessage;
                                                                                  private function clickHandler(e:MouseEvent):void{
                                                                                      var SUBMIT:String = submit_txt.text;
                                                                                      var RESET:String = reset_txt.text;
                                                                                      vars myVars:URLVariables = new URLVariables();
                                                                                      if (username.length > 0 && password.length > 0) {
                                                                                          myVars.SUBMIT = submit;
                                                                                          myVars.CUSTMER ID = customerid;
                                                                                          myXMLLOADER.loafxml("login.aspx, myVars);
                                                                                            else {
                                                                                             message_txt.text = "You must enter a last name and customer id before clicking the submit button"
                                                                                  private function IOErrorHandler(e:IOErrorEvent):void{
                                                                                      message_txt.text = e.text;
                                                                                  private function securityErrorHandler(e:SecurityErrorEvent):void{
                                                                                      message_txt.text = e.text;
                                                                            /**Foundation for Ed: XML & E4X-Chapter 8: MODIFYING XML CONTENT WITH ACTIONSCRIPT 3.0*/
                                                                                import mx.events.FlexEvent;
                                                                                import mx.events.ListEvent;
                                                                                import mx.collections.XMLListCollection;
                                                                                import xmlUtilities.MyXMLLoaderHelper;
                                                                                import mx.events.FlexEvent;
                                                                                import mx.events.DataGridEvent;
                                                                                private function initApp(e:Event):void {
                                                                                /add testing lines here
                                                                                            private var myXMLLoader:MyXMLLoaderHelper;
                                                                                            private function initApp(e:FlexEvent):void {
                                                                                                 myXMLLoader = new MyXMLLoaderHelper();
                                                                                                 myXMLLoader.addEventListener(Event.COMPLETE, completeHandler);
                                                                                                 myXMLLoader.addEventListener("xmlUpdated", xmlUpdatedHandler);
                                                                                                 authors_cbo.addEventListener(ListEvent.CHANGE, changeHandler);
                                                                                                 addRow_btn.addEventListener(MouseEvent.CLICK, addClickHandler);
                                                                                                 delete_btn.addEventListener(MouseEvent.CLICK, deleteClickHandler);
                                                                                                 books_dg.addEventListener(DataGridEvent.ITEM_EDIT_END, itemEditEndHandler);
                                                                                                 authors_cbo.labelFunction = getFullName;
                                                                                                 myXMLLoader.loadXML("Assets/customer_info.xml", "lastname");
                                                                                            private function completeHandler(e:Event):void {
                                                                                                 authors_cbo.dataProvider = myXMLLoader.getChildElements("author");
                                                                                                 tree_txt.text = myXMLLoader.getXML().toXMLString();
                                                                                                 books_dg.dataProvider = myXMLLoader.getBooks(0);
                                                                                            private function getFullName(item:Object):String {
                                                                                              return item.authorFirstName + " " + item.customerLastName;
                                                                                            private function changeHandler(e:Event):void {
                                                                                                 books_dg.dataProvider = myXMLLoader.getBooks(e.target.selectedIndex);
                                                                                            private function addClickHandler(e:MouseEvent):void {
                                                                                              var newBookName:String = name_txt.text;
                                                                                              var newPublishYear:String = year_txt.text;
                                                                                              var newBookCost:String = cost_txt.text;
                                                                                              var authorIndex:int = authors_cbo.selectedIndex;
                                                                                              if(newBookName.length > 0 && newPublishYear.length > 0 && newBookCost.length > 0) {
                                                                                                 myXMLLoader.addBook(authorIndex, newBookName, newPublishYear, newBookCost);
                                                                                            private function deleteClickHandler(e:MouseEvent):void {
                                                                                              var bookIndex:int = books_dg.selectedIndex;
                                                                                              var authorIndex:int = authors_cbo.selectedIndex;;
                                                                                              if (books_dg.selectedIndex != -1) {
                                                                                                 myXMLLoader.deleteBook(authorIndex, bookIndex);
                                                                                            private function itemEditEndHandler(e:DataGridEvent):void {
                                                                                              var authorIndex:int = authors_cbo.selectedIndex;
                                                                                              var dg:DataGrid = e.target as DataGrid;
                                                                                              var field:String = e.dataField;
                                                                                              var row:int = e.rowIndex;
                                                                                              var col:int = e.columnIndex;
                                                                                              var oldVal:String = e.itemRenderer.data[field];
                                                                                              var newVal:String = dg.itemEditorInstance[dg.columns[col].editorDataField];
                                                                                              if (oldVal != newVal) {
                                                                                                   myXMLLoader.modifyXMLTree(authorIndex, dg.columns[col].dataField, row, newVal)
                                                                                            private function xmlUpdatedHandler(e:Event):void {
                                                                                                 books_dg.dataProvider = myXMLLoader.getBooks(authors_cbo.selectedIndex);
                                                                                                 tree_txt.text = myXMLLoader.getXML().toXMLString();
            ]]>
        </mx:Script>
        <s:Panel x="9" y="257" width="459" height="383" contentBackgroundColor="#666666" backgroundColor="#666666" chromeColor="#FCF6F6" title="DIRECTIONS TO SILVER FOX COLLISION CENTER:" fontSize="14">
            <s:TextInput x="55" y="7" contentBackgroundColor="#030000" height="17" width="392"/>
            <mx:Label x="3" y="6" text="FROM:" fontSize="14" color="#FDF9F9"/>
            <s:TextInput x="1114" y="637" contentBackgroundColor="#FCF7F7" height="17" width="213"/>
            <s:Button x="1337" y="634" label="GET DIRECTIONS" focusColor="#FBFCFD" chromeColor="#666666" color="#FEFEFE" width="141" fontSize="14"/>
            <mx:Label x="1088" y="637" text="TO:" fontSize="12" color="#FDFBFB"/>
            <s:Button x="295" y="56" label="GET DIRECTIONS" focusColor="#FBFCFD" chromeColor="#666666" color="#FEFEFE" width="157" fontSize="12"/>
            <s:TextInput x="55" y="31" contentBackgroundColor="#070000" height="17" width="392"/>
            <mx:Label x="25" y="30" text="TO:" fontSize="14" color="#FDFBFB"/>
        </s:Panel>
        <mx2:DataGrid x="10" y="54" width="458" height="104" color="#666666" contentBackgroundColor="#060000" borderColor="#030000" fontSize="8" focusColor="#666666" chromeColor="#030000" selectionColor="#666666" dropShadowVisible="true" rollOverColor="#FFFFFF">
            <mx2:columns>
                <mx2:DataGridColumn headerText="LAST NAME:" dataField="col1"/>
                <mx2:DataGridColumn headerText="DESIGNATED DUE DATE:" dataField="col2"/>
                <mx2:DataGridColumn headerText="STATUS UPDATED:" dataField="col3"/>
                <mx2:DataGridColumn headerText="CUSTOMER ID:" dataField="col3"/>
            </mx2:columns>
        </mx2:DataGrid>
        <mx:Text id="directionsSummary" width="100%"/> <mx:DataGrid id="directionsGrid" dataProvider="{directionsSteps}" width="100%" height="100%" sortableColumns="false" />
        <mx:Text id="directionsCopyright" width="100%"/>
        <mx:HBox> <mx:Label text="From: " width="70"/> <mx:TextInput id="from" text="San Francisco, CA" width="100%"/> </mx:HBox>
        <mx:HBox> <mx:Label text="To: " width="70"/> <mx:TextInput id="to" text="Mountain View, CA" width="100%"/> </mx:HBox>
        <s:Label x="11" y="38" text="LAST NAME:" color="#FCFBFB" fontSize="14" verticalAlign="top"/>
        <s:TextArea x="96" y="32" width="145" height="18" focusColor="#FCFAFA" color="#010000" contentBackgroundColor="#000000" id="message_txt" text="{xmlService.lastResult.toString()}>
        <s:Label x="273" y="37" text="CUSTOMER ID;" fontSize="14" color="#FDFBFB"/>
        <s:TextInput x="376" y="32" width="89" height="18" focusColor="#FCF9F9" color="#FAF8F8" contentBackgroundColor="#040000"/>
        <s:Button x="318" y="212" label="RESET" focusColor="#F8FAFB" color="#FEFBFB" chromeColor="#666666" fontSize="12"/>
        <s:Button x="393" y="212" label="SUBMIT" focusColor="#F8F9FA" color="#FFFBFB" chromeColor="#666666" fontSize="12"/>
        <s:TextArea x="10" y="160" width="458" height="48" color="#FEF8F8" contentBackgroundColor="#050000"/>
        <mx:Panel x="483" y="31" width="750" height="609" layout="absolute" backgroundColor="#666666" borderVisible="true" dropShadowVisible="true" chromeColor="#FDF9F9">
            <mx:VBox x="26" y="7" height="559" width="708">
                <maps:Map xmlns:maps="com.google.maps.*" id="map" mapevent_mapready="onMapReady(event)" x="500" y="25" width="700" height="550" key="ABQIAAAA9YXHa-b0xqHBMiooUNYUbhRpa9TAnukyOWjhoGl3Y9H2BJoi9xSrm6cnM0lBZ4lCtqRLxKpQK_eb Rg" sensor="true"/>
            </mx:VBox>
        </mx:Panel>
    </mx:Application>
    /**the AIR APPLICATION*/
    <?xml version="1.0" encoding="utf-8"?>
    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/mx" backgroundColor="#666666" width="854" height="348" creationComplete="initApp(event)">
        <s:HTTPService id="customer_info" url="data/customer_info.xml" resultFormat="e4x" result="resultHandler(event)"/>
        <mx:Script>
            <![CDATA[
            /**FLEX 4 Bible: Chapter 24- Managing XML w/ E4X*/
            private var xmlData:XML;
            private function resultHandler(event:ResultEvent):void
                xmlData = event.result as XML:
            ]]>
        </mx:Script>
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <mx:Image source="@Embed('Assets/logo.png')" x="1" y="0" width="760" height="168"/>
        <s:Label x="96" y="126" text="Last Name:&#xd;" color="#FFFFFF" fontSize="20" fontFamily="Times New Roman"/>
        <s:Label x="13" y="218" text="Designated Due Date:&#xd;" fontSize="20" fontFamily="Times New Roman" color="#FBF8F8"/>
        <s:Label x="63" y="186" text="Status Updated:&#xd;" color="#FCF5F5" fontSize="20" fontFamily="Times New Roman"/>
        <s:TextInput x="192" y="125" width="196"/>
        <s:TextInput x="193" y="215" width="195"/>
        <s:TextInput x="193" y="185" width="195"/>
        <s:Label x="80" y="158" text="Customer ID:" color="#FDFCFC" fontSize="20" fontFamily="Times New Roman"/>
        <s:TextInput x="192" y="155" width="196"/>
        <s:Button x="243" y="241" label="RESET"/>
        <s:Button x="317" y="241" label="UPDATE" focusColor="#666666"/>
    </s:WindowedApplication>
    /**the Customer Information XML*/
    <?xml version="1.0" encoding="utf-8"?>
        <allNames>
            <name namesID="1">
                <nameLastName>Ambrose</nameLastName>
                <customerids>
                    <customerid customerID="1">
                        <customerID>777777</customerID>
                    </customerid>
                </customerids>

    Hi All,
    please note that we found the problem. The problem was that we didn't configure under:
    "Configuration-> Security -> Message Security -> SOAP" the voprrect provider to handle the security.
    After that was done (extract of domain.xml) the message was understood.
    <provider-config class-name="com.sun.identity.agents.jsr196.as9soap.AMServerAuthModule" provider-id="AMServerProvider-UserNameToken-Plain" provider-type="server">
                <request-policy auth-source="content"/>
                <response-policy auth-source="content"/>
                <property name="providername" value="UserNameToken-Plain"/>
              </provider-config>unfortunately the next problem occured I will post in a new thread.
    Edited by: rankin_ut on Jan 26, 2009 4:43 AM

  • Link button to local html page using AS3

    I am using AS3 and having trouble linking a button to a local html page

    Okay, I tried both of the codes and it is still now working.
    navigateToURL(new URLRequest("file:///fishcom/Home.html"));
    I get a Windows dialog box that states that the path can not be found.
    navigateToURL(new URLRequest("./fishcom/Home.html"));
    This goes to http://./fishcom/Home.html  but not my page.
    The Flash file and the HTML page are in the fishcom folder on my desktop. Very frustrating because this was so easy in AS2. 

  • How to make OLAPDATAGRID use AS3

    How to make OLAPDATAGRID use AS3? I make like this and have a
    problem lease halp me type simple example!
    [Attach Code]
    package My
    import mx.collections.ArrayCollection;
    import mx.collections.IList;
    import mx.controls.Alert;
    import mx.controls.OLAPDataGrid;
    import mx.olap.IOLAPCube;
    import mx.olap.IOLAPDimension;
    import mx.olap.IOLAPQuery;
    import mx.olap.IOLAPQueryAxis;
    import mx.olap.OLAPAttribute;
    import mx.olap.OLAPCube;
    import mx.olap.OLAPDimension;
    import mx.olap.OLAPHierarchy;
    import mx.olap.OLAPLevel;
    import mx.olap.OLAPMeasure;
    import mx.olap.OLAPQuery;
    import mx.olap.OLAPResult;
    import mx.olap.OLAPSet;
    import mx.rpc.AsyncResponder;
    import mx.rpc.AsyncToken;
    public class OlapDGCreator
    [Bindable]
    private var flatData:ArrayCollection = new ArrayCollection(
    {otd:"div1",pos:"programmer",year:2007,quarter:"q1",zp:20000},
    {otd:"div1",pos:"manager",year:2007,quarter:"q1",zp:15000},
    {otd:"div2",pos:"programmer",year:2007,quarter:"q1",zp:25000},
    {otd:"div2",pos:"manager",year:2007,quarter:"q1",zp:23000},
    {otd:"div1",pos:"programmer",year:2007,quarter:"q2",zp:21000},
    {otd:"div1",pos:"manager",year:2007,quarter:"q2",zp:16000},
    {otd:"div2",pos:"programmer",year:2007,quarter:"q2",zp:27000},
    {otd:"div2",pos:"manager",year:2007,quarter:"q2",zp:24000},
    public var str:String = "";
    public var ODG:OLAPDataGrid = new OLAPDataGrid();
    public var MyCube:OLAPCube = new OLAPCube("otchet");
    public function OlapDGCreator()
    MyCube.dataProvider=flatData;
    var m:OLAPMeasure = new OLAPMeasure("ZP");
    m.aggregator="SUM";
    m.dataField="zp";
    var a:IList = new ArrayCollection();
    a.addItem(m);
    var dimDateTime:OLAPDimension = new
    OLAPDimension("DateTime","DateTime");
    dimDateTime.cube=MyCube;
    dimDateTime.name="DateTime";
    var hierDataTime:OLAPHierarchy = new
    OLAPHierarchy("hierDataTime","displayHierDataTime");
    var l1:OLAPLevel = new OLAPLevel("Year","Year")
    var l2:OLAPLevel = new OLAPLevel("Quarter","Quarter")
    hierDataTime.levels.addItem(l1);
    hierDataTime.levels.addItem(l2);
    var att1:OLAPAttribute = new OLAPAttribute("Year","Year")
    att1.dataField="year";
    att1.name="Year";
    var att2:OLAPAttribute = new
    OLAPAttribute("Quarter","quarter")
    att2.dataField="quarter";
    att2.name="Quarter";
    dimDateTime.attributes.addItem(att1)
    dimDateTime.attributes.addItem(att2)
    dimDateTime.hierarchies.addItem(hierDataTime);
    var dimDivDim:OLAPDimension = new
    OLAPDimension("DivDim","DivDim");
    dimDivDim.cube=MyCube;
    dimDivDim.name="DivDim";
    var hierDivDim:OLAPHierarchy = new
    OLAPHierarchy("hierDivDim","displayHierDivDim");
    var dd_l1:OLAPLevel = new OLAPLevel("Otd","Otd")
    var dd_l2:OLAPLevel = new OLAPLevel("Pos","Pos")
    hierDivDim.levels.addItem(dd_l1);
    hierDivDim.levels.addItem(dd_l2);
    var dd_att1:OLAPAttribute = new OLAPAttribute("Otd","Otd")
    dd_att1.dataField="otd";
    dd_att1.dimension=dimDivDim;
    var dd_att2:OLAPAttribute = new OLAPAttribute("Pos","Pos")
    dd_att2.dataField="pos";
    dd_att2.dimension=dimDivDim;
    dimDivDim.attributes.addItem(dd_att1);
    dimDivDim.attributes.addItem(dd_att2);
    dimDivDim.hierarchies.addItem(hierDivDim);
    MyCube.dimensions.addItem(dimDateTime);
    MyCube.dimensions.addItem(dimDivDim);
    MyCube.measures = a
    MyCube.refresh();
    //MyCube.measures.addEventListener("www",test);
    //MyCube.addEventListener(CubeEvent.CUBE_COMPLETE,runQuery)
    runQuery();
    //запустили
    выражение
    // Create the OLAP query.
    private function getQuery(cube:IOLAPCube):IOLAPQuery {
    // Create an instance of OLAPQuery to represent the query.
    var query:OLAPQuery = new OLAPQuery;
    // Get the row axis from the query instance.
    var rowQueryAxis:IOLAPQueryAxis =
    query.getAxis(OLAPQuery.ROW_AXIS);
    // Create an OLAPSet instance to configure the axis.
    var otdSet:OLAPSet = new OLAPSet;
    // Add the Product to the row to aggregate data
    // by the Product dimension.
    var tmp:IOLAPDimension = cube.findDimension("DivDim");
    var tmp2:OLAPDimension = cube.dimensions[0];
    otdSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[0]).childre n);//zah
    otdSet.addElements(cube.findDimension("DivDim").findAttribute("Otd").children);
    // Add the OLAPSet instance to the axis.
    var posSet:OLAPSet = new OLAPSet;
    // Add the Product to the row to aggregate data
    // by the Product dimension.
    posSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[1]).childre n);//zah
    posSet.addElements(cube.findDimension("DivDim").findAttribute("Pos").children);
    // Add the OLAPSet instance to the axis.
    rowQueryAxis.addSet(otdSet.crossJoin(posSet));
    // Get the column axis from the query instance, and
    configure it
    // to aggregate the columns by the Quarter dimension.
    var colQueryAxis:IOLAPQueryAxis =
    query.getAxis(OLAPQuery.COLUMN_AXIS);
    var yearSet:OLAPSet= new OLAPSet;
    yearSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[0]).childr en);//zah
    yearSet.addElements(cube.findDimension("DateTime").findAttribute("Year").children);
    var quarterSet:OLAPSet= new OLAPSet;
    quarterSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[1]).chi ldren);//zah
    //quarterSet.addElements(cube.findDimension("DateTime").findAttribute("Quarter").children );
    colQueryAxis.addSet(yearSet.crossJoin(quarterSet));
    return query;
    // Event handler to execute the OLAP query
    // after the cube completes initialization.
    // private function runQuery(event:CubeEvent):void {
    private function runQuery():void {
    // Get cube.
    //var cube:IOLAPCube = IOLAPCube(event.currentTarget);
    var cube:IOLAPCube = IOLAPCube(this.MyCube);
    // Create a query instance.
    var query:IOLAPQuery = getQuery(cube);
    // Execute the query.
    var token:AsyncToken = cube.execute(query);
    // Setup handlers for the query results.
    token.addResponder(new AsyncResponder(showResult,
    showFault));
    // Handle a query fault.
    private function showFault(result:Object, token:Object):void
    Alert.show("Error in query.");
    // Handle a successful query by passing the query results to
    // the OLAPDataGrid control..
    private function showResult(result:Object,
    token:Object):void {
    if (!result) {
    Alert.show("No results from query.");
    return;
    ODG.dataProvider= result as OLAPResult;
    [/Attach Code]

    Here is the fixed code. I would have loved to re-organize the
    code but left it as is so that you can diff the files and make a
    note of the differences.
    package
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    import mx.controls.OLAPDataGrid;
    import mx.events.CubeEvent;
    import mx.olap.IOLAPCube;
    import mx.olap.IOLAPDimension;
    import mx.olap.IOLAPQuery;
    import mx.olap.IOLAPQueryAxis;
    import mx.olap.OLAPAttribute;
    import mx.olap.OLAPCube;
    import mx.olap.OLAPDimension;
    import mx.olap.OLAPHierarchy;
    import mx.olap.OLAPLevel;
    import mx.olap.OLAPMeasure;
    import mx.olap.OLAPQuery;
    import mx.olap.OLAPResult;
    import mx.olap.OLAPSet;
    import mx.rpc.AsyncResponder;
    import mx.rpc.AsyncToken;
    public class OlapDGCreator
    [Bindable]
    private var flatData:ArrayCollection = new ArrayCollection(
    {otd:"div1",pos:"programmer",year:2007,quarter:"q1",zp:20000},
    {otd:"div1",pos:"manager",year:2007,quarter:"q1",zp:15000},
    {otd:"div2",pos:"programmer",year:2007,quarter:"q1",zp:25000},
    {otd:"div2",pos:"manager",year:2007,quarter:"q1",zp:23000},
    {otd:"div1",pos:"programmer",year:2007,quarter:"q2",zp:21000},
    {otd:"div1",pos:"manager",year:2007,quarter:"q2",zp:16000},
    {otd:"div2",pos:"programmer",year:2007,quarter:"q2",zp:27000},
    {otd:"div2",pos:"manager",year:2007,quarter:"q2",zp:24000},
    public var str:String = "";
    public var ODG:OLAPDataGrid = new OLAPDataGrid();
    public var MyCube:OLAPCube = new OLAPCube("otchet");
    public function OlapDGCreator()
    MyCube.dataProvider=flatData;
    var m:OLAPMeasure = new OLAPMeasure("ZP");
    m.aggregator="SUM";
    m.dataField="zp";
    //var a:IList = new ArrayCollection();
    //a.addItem(m);
    var dimDateTime:OLAPDimension = new
    OLAPDimension("DateTime","DateTime");
    //dimDateTime.cube=MyCube;
    //dimDateTime.name="DateTime";
    var hierDataTime:OLAPHierarchy = new
    OLAPHierarchy("hierDataTime","displayHierDataTime");
    var l1:OLAPLevel = new OLAPLevel("Year","Year")
    l1.attributeName = "Year";
    var l2:OLAPLevel = new OLAPLevel("Quarter","Quarter")
    l2.attributeName = "Quarter";
    //hierDataTime.levels.addItem(l1);
    //hierDataTime.levels.addItem(l2);
    hierDataTime.levels = new ArrayCollection([l1, l2]);
    var att1:OLAPAttribute = new OLAPAttribute("Year","Year")
    att1.dataField="year";
    //att1.name="Year";
    var att2:OLAPAttribute = new
    OLAPAttribute("Quarter","quarter")
    att2.dataField="quarter";
    //att2.name="Quarter";
    //dimDateTime.attributes.addItem(att1)
    //dimDateTime.attributes.addItem(att2)
    dimDateTime.attributes = new ArrayCollection([att1, att2]);
    //dimDateTime.hierarchies.addItem(hierDataTime);
    dimDateTime.hierarchies = new
    ArrayCollection([hierDataTime]);
    var dimDivDim:OLAPDimension = new
    OLAPDimension("DivDim","DivDim");
    //dimDivDim.cube=MyCube;
    //dimDivDim.name="DivDim";
    var hierDivDim:OLAPHierarchy = new
    OLAPHierarchy("hierDivDim","displayHierDivDim");
    var dd_l1:OLAPLevel = new OLAPLevel("Otd","Otd")
    dd_l1.attributeName = "Otd";
    var dd_l2:OLAPLevel = new OLAPLevel("Pos","Pos")
    dd_l2.attributeName = "Pos";
    //hierDivDim.levels.addItem(dd_l1);
    //hierDivDim.levels.addItem(dd_l2);
    hierDivDim.levels = new ArrayCollection([dd_l1, dd_l2]);
    var dd_att1:OLAPAttribute = new OLAPAttribute("Otd","Otd")
    dd_att1.dataField="otd";
    //dd_att1.dimension=dimDivDim;
    var dd_att2:OLAPAttribute = new OLAPAttribute("Pos","Pos")
    dd_att2.dataField="pos";
    //dd_att2.dimension=dimDivDim;
    //dimDivDim.attributes.addItem(dd_att1);
    //dimDivDim.attributes.addItem(dd_att2);
    //dimDivDim.hierarchies.addItem(hierDivDim);
    dimDivDim.attributes = new ArrayCollection([dd_att1,
    dd_att2]);
    dimDivDim.hierarchies = new ArrayCollection([hierDivDim]);
    //MyCube.dimensions.addItem(dimDateTime);
    //MyCube.dimensions.addItem(dimDivDim);
    //MyCube.measures = a
    MyCube.elements = [dimDateTime, dimDivDim, m];
    MyCube.refresh();
    //MyCube.measures.addEventListener("www",test);
    MyCube.addEventListener(CubeEvent.CUBE_COMPLETE,runQuery)
    // Create the OLAP query.
    private function getQuery(cube:IOLAPCube):IOLAPQuery {
    // Create an instance of OLAPQuery to represent the query.
    var query:OLAPQuery = new OLAPQuery;
    // Get the row axis from the query instance.
    var rowQueryAxis:IOLAPQueryAxis =
    query.getAxis(OLAPQuery.ROW_AXIS);
    // Create an OLAPSet instance to configure the axis.
    var otdSet:OLAPSet = new OLAPSet;
    // Add the Product to the row to aggregate data
    // by the Product dimension.
    var tmp:IOLAPDimension = cube.findDimension("DivDim");
    var tmp2:OLAPDimension = cube.dimensions[0];
    otdSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[0]).children );//zah
    otdSet.addElements(cube.findDimension("DivDim").findAttribute("Otd").children);
    // Add the OLAPSet instance to the axis.
    var posSet:OLAPSet = new OLAPSet;
    // Add the Product to the row to aggregate data
    // by the Product dimension.
    posSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[1]).children );//zah
    posSet.addElements(cube.findDimension("DivDim").findAttribute("Pos").children);
    // Add the OLAPSet instance to the axis.
    rowQueryAxis.addSet(otdSet.crossJoin(posSet));
    // Get the column axis from the query instance, and configure
    it
    // to aggregate the columns by the Quarter dimension.
    var colQueryAxis:IOLAPQueryAxis =
    query.getAxis(OLAPQuery.COLUMN_AXIS);
    var yearSet:OLAPSet= new OLAPSet;
    yearSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[0]).childre n);//zah
    yearSet.addElements(cube.findDimension("DateTime").findAttribute("Year").children);
    var quarterSet:OLAPSet= new OLAPSet;
    quarterSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[1]).chil dren);//zah
    //quarterSet.addElements(cube.findDimension("DateTime").findAttribute("Quarter").children) ;
    colQueryAxis.addSet(yearSet.crossJoin(quarterSet));
    return query;
    // Event handler to execute the OLAP query
    // after the cube completes initialization.
    // private function runQuery(event:CubeEvent):void {
    private function runQuery(event:Event):void {
    // Get cube.
    //var cube:IOLAPCube = IOLAPCube(event.currentTarget);
    var cube:IOLAPCube = IOLAPCube(this.MyCube);
    // Create a query instance.
    var query:IOLAPQuery = getQuery(cube);
    // Execute the query.
    var token:AsyncToken = cube.execute(query);
    // Setup handlers for the query results.
    token.addResponder(new AsyncResponder(showResult,
    showFault));
    // Handle a query fault.
    private function showFault(result:Object, token:Object):void
    Alert.show("Error in query.");
    // Handle a successful query by passing the query results to
    // the OLAPDataGrid control..
    private function showResult(result:Object, token:Object):void
    if (!result) {
    Alert.show("No results from query.");
    return;
    ODG.dataProvider= result as OLAPResult;

  • Draw a Line From any Point A To any Point B Dynamically Using AS3

    I am trying to make an anmation where there are several locations(say A,B,C,D,......) made on a  map. If a person clicks on one location A and then another location B, I wanted to draw a dotted line from point A (from  destination of the plane) to point B(to destination of the plane)  using AS3. Please help me........

    Here is a quick and dirty timeline code that does it (class is below):
    var line:Shape;
    var lineGraphics:Graphics;
    var clickSwitch:int = 0;
    var mousePositions:Array = [];
    var conversion:Number = 180 / Math.PI;
    init();
    function init():void {
         drawBackground();
         line = new Shape();
         addChild(line);
         lineGraphics = line.graphics;
         stage.addEventListener(MouseEvent.CLICK, onClick);
    function onClick(e:MouseEvent):void
         clickSwitch = 1 - clickSwitch;
         mousePositions[clickSwitch] = new Point(mouseX, mouseY);
         if (clickSwitch == 0) {
              drawLine();
         else {
              removeLine();
    function removeLine():void
         lineGraphics.clear();
         line.rotation = 0;
    function drawLine():void
         lineGraphics.lineStyle(1, 0xff0000);
         lineGraphics.moveTo(0, 0);
         var dotDistance:Number = 2;
         var nextX:Number = dotDistance;
         while (line.width < Point.distance(mousePositions[0], mousePositions[1])) {
              lineGraphics.lineTo(nextX, 0);
              nextX += dotDistance;
              lineGraphics.moveTo(nextX, 0);
              nextX += dotDistance;
         line.rotation =  conversion * Math.atan2(mousePositions[0].y - mousePositions[1].y, mousePositions[0].x - mousePositions[1].x);
         line.x = mousePositions[1].x;
         line.y = mousePositions[1].y;
    function drawBackground():void
         var s:Shape = new Shape();
         var g:Graphics = s.graphics;
         g.beginFill(0xC0C0C0);
         g.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
         g.endFill();
         addChild(s);
    Class:
    package
         import flash.display.Graphics;
         import flash.display.Shape;
         import flash.display.Sprite;
         import flash.events.MouseEvent;
         import flash.geom.Point;
         public class DottedLine extends Sprite
              private var line:Shape;
              private var lineGraphics:Graphics;
              private var clickSwitch:int = 0;
              private var mousePositions:Array = [];
              private var conversion:Number = 180 / Math.PI;
              public function DottedLine()
                   init();
              private function init():void {
                   drawBackground();
                   line = new Shape();
                   addChild(line);
                   lineGraphics = line.graphics;
                   stage.addEventListener(MouseEvent.CLICK, onClick);
              private function onClick(e:MouseEvent):void
                   clickSwitch = 1 - clickSwitch;
                   mousePositions[clickSwitch] = new Point(mouseX, mouseY);
                   if (clickSwitch == 0) drawLine();
                   else removeLine();
              private function removeLine():void
                   lineGraphics.clear();
                   line.rotation = 0;
              private function drawLine():void
                   lineGraphics.lineStyle(1, 0xff0000);
                   lineGraphics.moveTo(0, 0);
                   var dotDistance:Number = 2;
                   var nextX:Number = dotDistance;
                   while (line.width < Point.distance(mousePositions[0], mousePositions[1])) {
                        lineGraphics.lineTo(nextX, 0);
                        nextX += dotDistance;
                        lineGraphics.moveTo(nextX, 0);
                        nextX += dotDistance;
                   line.rotation =  conversion * Math.atan2(mousePositions[0].y - mousePositions[1].y, mousePositions[0].x - mousePositions[1].x);
                   line.x = mousePositions[1].x;
                   line.y = mousePositions[1].y;
              private function drawBackground():void
                   var s:Shape = new Shape();
                   var g:Graphics = s.graphics;
                   g.beginFill(0xC0C0C0);
                   g.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
                   g.endFill();
                   addChild(s);

Maybe you are looking for

  • Cannot connect to internet

    After about a week of no use, I woke up my Macbook and I can no longer connect to the internet.  The Airport connects to the wireless router, but does not make it to the internet.  I have a Dell and iPad that are connecting okay, but the Macbook no l

  • The old transparency problem

    After initial optimism about using iWeb to make my new website to sell my ebook from, I am beginning to lose heart. Major bugs that are well documented on these forums have obstructed me, and I've read up as much as I can on them. It's this transpare

  • Update database logon in reports using java

    Please review the code below and let me know where did I go wrong! I am able to login to CMS and able to retrieve the list of reports. Now, I am trying to update the database credentials for a single report using java (My requirement is to update all

  • Request waiting for approval

    Hi, I have request that is in status running from last 24 hours and waht it is doing is begin PO_REQAPPROVAL_ACTION.APPROVE_DOC (:v1, :v2, :v3, :v4, :v5); end; I got this by query SELECT vs.inst_id,vs.osuser,vw.event,vw.p1,vw.p2,vw.p3 ,vt.sql_text ,

  • How do i make tools open by defalt?

    I want to open a pdf and have tools open at the same time.