ImageIcon & Lazy image loading

The whole day I'm fuzzing around with loading an ImageIcon lazily. I suppose you know what lazy means. I want to load my icons when they have to be painted on the screen, because I use thousands of them. I read the "How to Use Icons" tutorial (http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html). With its ArrowIcon implementation of Icon (http://www.iam.ubc.ca/guides/javatut99/uiswing/misc/example-swing/ArrowIcon.java) and its IconDemoApplet (http://java.sun.com/docs/books/tutorial/uiswing/misc/example-1dot4/IconDemoApplet.java). However, I'm still confused. I also took a look at the ImageIconProxy example of the proxy pattern (http://www.javaworld.com/javaworld/jw-02-2002/jw-0222-designpatterns.html). Finally I got the following code (the IconProperties part can be ignored). I'm afraid that this does not what I want. I have now only a few images, so I can't measure it directly. Does my class exactly the same as the ImageIcon class itself? Is there no postponing of instantiation because I subclass ImageIcon? Do I have to implement the interface Icon instead? Do I have to copy all the stuff in ImageIcon to my implementation in that case? Or is it better to extend the Image class to provide functions like described beneath (check upon existence).
And for completeness. I extend this LazyIcon object subsequently with a class named LayeredIcon to create combined icons.
* The class <code>LazyIcon</code> implements <code>ImageIcon</code>
* because their will be at least some calls like:
* <pre>
*   Icon icon = new ImageIcon(imageURL);
*     Image image = icon.getImage();
*     image = image.getScaledInstance(...);
*   Icon icon2 = new ImageIcon(image);
* </pre>
* Besides that I want to add a function <code>IconExists</code> and
* to add lazy image loading, and maybe also background loading.
* This doesn't work, so it seems like in the constructor of
* ImageIcon there is done more than only setImage(image).
* @author A.C. van Rossum
public class LazyIcon  extends ImageIcon {
  boolean isIconCreated = false;
  protected Image image;
  protected IconProperties properties;
   * The <code>LazyIcon</code> stores the <code>Image</code> until
   * the moment it has to be created. It has default icon properties.
  public LazyIcon(Image image) {
    this(image, IconProperties.DEFAULTICON);
  public LazyIcon(Image image, IconProperties properties) {
    this.image = image;
    setIconProperties(properties);
  //other constructors have to follow
   * The method <code>setIconProperties</code> enables the user
   * to change the properties of an icon, before calling the
   * method <code>paintIcon</code>.
   * @param properties A set of properties: dimension, etc.
  public void setIconProperties(IconProperties properties) {
    this.properties = properties;
  public int getIconHeight() {
    return isIconCreated ? super.getIconHeight() : properties.getHeight();
  public int getIconWidth() {
     return isIconCreated ? super.getIconWidth() : properties.getWidth();
   * The method <code>paintIcon</code> does only set the image of
   * the ImageIcon class lazily (when this function is called.)
  public void paintIcon(final Component c, Graphics g, int x, int y) {
    if(!isIconCreated) {
      setImage(image);
      isIconCreated = true;
    super.paintIcon(c, g, x, y);
  public Image getImage() {
    if (isIconCreated)
      return super.getImage();
    else return image;
}Is my problem formulation clear enough? Many thanks in advance if you want to give it a look.
Andy

I spent some more time looking at the programs today, and it seems that all of the students involved were using a graphics library called objectdraw (http://cortland.cs.williams.edu:16080/~cs134/eof/). As far as I can tell, the objectdraw source code isn't public, so I can't say which (if any) of the standard methods they were using.
After some work, I managed to produce a method with the same parameters as the objectdraw getImage method that used the AWT Toolkit. When I overrode the objectdraw version in the students' code, the bug (at least for the moment) seems to have gone away. So the problem may be in that other library.
Does anyone else have experience with objectdraw? Is this a known bug, or could this be something else...?

Similar Messages

  • ImageIcon fails to load image from known source

    Hello,
    I have tried multiple ways to use ImageIcon to place an image within a JFrame.
    I have tried to place directly on the JFrame using drawImage and within a JLabel.
    I have tried multiple sources such as fully qualified regular files to the root and filenames relative to the current project. I have also tried using URLs.
    I am executing this project from Eclipse and have used both Windows and the Mac.
    My debugging code tells me the load of the image is not successful.
    Thank you for your help with this problem.
    ====================================================================
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.io.*;
    import javax.swing.*;
       class Main extends JFrame implements ItemListener {
         Image image;
         Image imagecopy;
         String imagefile;
         URL imageurl;
         String strslnts = "Slavery notes";
         String strnsnts = "North & South notes";
         String strwpnts = "Weapons notes";
         String strbtnts = "Battle notes";
         int frwidth, frheight, il, it;
         List stuslist;
         Main() {
              super("The Civil War as Presented by Garrett Neuman");
              imagefile = "file:///Users/teacher/Desktop/garrett/CivilWar/flags.gif";       
              image = getToolkit().getImage(imagefile);
              setIconImage(image);
              frwidth = 1024;
              frheight = 735;   //leave room for task bar
               WindowEventHandler weh = new WindowEventHandler();
               addWindowListener(weh);
               Insets insets = getInsets();
              il = insets.left; it = insets.top;
               setSize(frwidth, frheight);
              setResizable(false);
              try {imageurl = (new URL("http://www.ariped.com/01-pat_metheny_01.jpg"));}
              catch (MalformedURLException e) {stuslist.add("malformed url");};
              ImageIcon icon = new ImageIcon(imageurl);
              int fstatus = icon.getImageLoadStatus();
    //         stuslist.add(String.valueOf(fstatus));
              JLabel iconLabel = new JLabel(icon);
              setContentPane(iconLabel);
              setVisible(true);

    Thanks for the advice on SSCCE. This cracked the case for me and will be useful in the future.
    One observation I gained from testing is that even regular files seem to need to go through the URL process for the image load to be successful.
    This may or may not be useful but the following code caused the image load to fail. I tried commenting out the code line by line from the bottom up but the mere presence of the definition caused failure of the image load.
            public void paint(Graphics g) {
                  int iwidth = image.getWidth(null);
                  int frmidd = (il + frwidth - iwidth) / 2;     
                  g.drawImage(image, frmidd , (it + 30), null);
                  g.drawRect(75, 175, 210, 230);
             }

  • Images loading from url

    Hi All !
    I am trying to load images onto a canvas using url source.
    The images loaded are forming a map , so its important that
    every image will be
    exactly in the wright place.
    The problem is that sometimes an image is not loaded , and I
    get error 504 "Gateway RequestTimeout" ,
    what i want to do is shorten the time of the error so if an
    image isnt loaded after 5 seconds i will get the error
    and reload it. How do i change the timeout of the loading ?
    or maybe i should use another method to load the images to
    the canvas ?
    10x alot !
    mr. flex ;)

    hi,
    looks like PaintComponent() instead of paint did the job.
    thanks a million..
    for those interested in loading images, I find ImageIcon very limited and at the end I found a better solution :
    public class ImageComponent extends JComponent implements ImageObserver{
        private Image image;
        public void loadImage(URL imageURL){           
                image = Toolkit.getDefaultToolkit().getImage(imageURL);
                prepareImage(image,getWidth(),getHeight(), this);
        public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height){
            System.out.print("."); // loading progress...
        public void paintComponent(Graphics g){
            if(image!=null){
                 g.drawImage(image,0,0,null);
    }it is far nicer as it displays dots while loading... up to you to attach progress bars or favorit loading guizmo...
    DrLeinster.

  • Cannot convert from ImageIcon to Image

    Please tell me why I'm getting error: I have seen many example of this both in this forum and other places.
    Type mismatch: cannot convert from ImageIcon to Image[b]
    Thanks in advance
    here's my code, I m using fileupload to load my images:
    <%@ page import="java.util.List"%>
    <%@ page import="java.util.Iterator"%>
    <%@ page import="java.io.File" %>
    <%@ page import="java.io.IOException"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.awt.image.ImageFilter"%>
    <%@ page import="java.awt.Color"%>
    <%@ page import="java.awt.image.ImageProducer"%>
    <%@ page import="java.awt.image.ReplicateScaleFilter"%>
    <%@ page import="java.awt.image.FilteredImageSource"%>
    <%@ page import="javax.swing.*"%>
    <%@ page import="java.awt.image.BufferedImage"%>
    <%@ page import="java.awt.Image"%>
    <%@ page import="java.awt.Graphics"%>
    <%@ page import="java.awt.Toolkit"%>
    <%@ page import="com.sun.image.codec.jpeg.JPEGCodec"%>
    <%@ page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
    <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
    <%@ page import="org.apache.commons.fileupload.*"%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
       <center><table border="2">
            <tr><td><h1>Your files  uploaded </h1></td></tr>
       <%
        //setting the target w + h
         int targetWidth=0;
        int targetHeight=0;
         //session values used to rename loaded image.
         String adID = "EM225";
         session.setAttribute("adID", adID);
         String fileName = null;
      // String imageid = request.getParameter("imgageID");
         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
         if (!isMultipart) {
         } else {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List items = null;
            try {
                 items = upload.parseRequest(request);
            } catch (FileUploadException e) {
                 System.out.println("Unable to load image" +  e.getMessage());
            Iterator itr = items.iterator();
            while(itr.hasNext()) {
                   FileItem item = (FileItem) itr.next();
                   if (item.isFormField()) {
                        //String name = item.getFieldName();  //This will get the field names. for eg. if u have a hidden field this line will get the hidden filed name.
                    //value = item.getString();
                        //out.println(value);
                   } else {
                 try {
                      File fullFile  = new File(item.getName());
                      fileName = fullFile.getName();
                      String id = (String)session.getAttribute("adID");
                      String newName =  id+fileName;
                      //passing renamed uploaded image.
                      Image sourceImage = new ImageIcon(Toolkit.getDefaultToolkit().getImage(newName));
                      // Calculate the target width and height
                      float scale = 50/100;
                      targetWidth = (int)(sourceImage.getWidth(null)*scale);
                      targetHeight = (int)(sourceImage.getHeight(null)*scale);
                      BufferedImage resizedImage = this.scaleImage(sourceImage,targetWidth,targetHeight);
                      ByteArrayOutputStream baos = new ByteArrayOutputStream();
                   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
                      encoder.encode(resizedImage);
                   byte[] b = baos.toByteArray();
                     // File tosave = new File(getServletContext().getRealPath("/"),resizedImage);
                     // item.write(tosave);
                 } catch (Exception e) {
                      System.out.println("Unable to save the image" + e.getMessage());
       %>
       <%!
       private BufferedImage scaleImage(Image sourceImage, int width, int height){
            ImageFilter filter = new ReplicateScaleFilter(width,height);
            ImageProducer producer = new FilteredImageSource
            (sourceImage.getSource(),filter);
            Image resizedImage = Toolkit.getDefaultToolkit().createImage(producer);
            return this.toBufferedImage(resizedImage);
        private BufferedImage toBufferedImage(Image image){
            image = new ImageIcon(image).getImage();
            BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
            Graphics g = bufferedImage.createGraphics();
            g.setColor(Color.white);
            g.fillRect(0,0,image.getWidth(null),image.getHeight(null));
            g.drawImage(image,0,0,null);
            g.dispose();
            return bufferedImage;
       %>
        </table>
       </center>
        </table>
       </center>

    Hello. So, it's difficult to say, but the following line is probably the cause of the problem.:
    Image sourceImage = new ImageIcon(Toolkit.getDefaultToolkit().getImage(newName));Basically, you are making an ImageIcon by passing an image, but perhaps you can just replace the line with this:
    Image sourceImage = Toolkit.getDefaultToolkit().getImage(newName);I use ImageIcon when reading from files, such as:
    BufferedImage image = ImageIO.read(file);
    Icon icon = new ImageIcon(image);However, if you already have an Image, I don't see why you just can't just use the Image reference. Perhaps someone more wise will have a more concise answer. Good luck.

  • Excessively Large image loading

    I have a program that is calling a large number of PNG files
    from a separate source folder. A few of these images are far too
    big (in excess of 200KB) and they refuse to load.
    If the image is under 200KB (roughly), the image loads into
    the imagebox. If it is higher than 200KB, the imagebox does
    nothing, however, clicking any image after that, including ones
    that do display, sends the file size too high and my back up
    picture (TooBig.png) is loaded instead. I have tried clearing the
    image loaded, but I can't seem to get it to stop loading the large
    images.

    I saved your image to e:/java/test/jpg and this code worked fine for me.import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;
    public class TestImageIO {
       void makeUI() {
          File file = new File("e:/java/test.jpg");
          Image thumb = null;
          try {
             thumb = ImageIO.read(file)
                   .getScaledInstance(128, 96, Image.SCALE_SMOOTH);
          } catch (IOException ex) {
             ex.printStackTrace();
          JLabel label = new JLabel(new ImageIcon(thumb));
          JFrame frame = new JFrame("TestImageIO");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setSize(300, 300);
          frame.add(label);
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
       public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                new TestImageIO().makeUI();
    }db

  • Jasper report on HTML when one image loaded from database and for the other

    How to generate jasper report on HTML when one image loaded from database and for the other we give a image path
    My code
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
              exporter = new JRHtmlExporter();
              exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
              exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
              exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, strImageInputDirectory);
         exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, strImageOutputPath == null ? "." : strImageOutputPath);
         exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
         exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
         exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
              exporter.exportReport();
              byte[] bdata = ((ByteArrayOutputStream) baos).toByteArray();
    Can any one help pls
    Message was edited by:
    ameet.au

    hey sorry for posting it in this forum.
    but do u have sample code for making it work.. since i am able to do it on PDF format(image from Database and another stored in the webserver) using
    byte image[] =(byte[]) outData.get("image");
                        ByteArrayInputStream img = new ByteArrayInputStream(image);
                        hmimg.put("P_PARAMV3", img);
    print = JasperFillManager.fillReport(reportFileName, hmimg, jrxmlds);
    bdata= JasperExportManager.exportReportToPdf(print);

  • How can i control what images load on my project to save preload time and avoid loading all images, elements, divs not yet visible?

    Sup buddies,
    How can I control what images load on my project to save preload time and avoid loading all images, elements, divs not yet visible?
    As the project grows in size the load time increases. How does one control not loading all images ,divs,elements etc. until they're
    needed on the timeline? For example some sections are off and only become visible when recalled. My projects slowly grow in size so loading
    all images , is counter productive . My other option would be to create separate htmls but that breaks the seamless user experience .
    TY...Over N Out... 

    hello, kiwi
    quote: "Is there an easy way to burn a completed project to DVD, but keep only the (lo res, lo size) previews on my hard drive?"
    yes.
    maybe,...
    1. you might think of making DVD backups first prior to importing the photos into Aperture. "Store Files: In their current location" once in Aperture make low rez Previews, and export finished Project.
    or,
    2. bring in the photographs to hard drive first prior to importing the photos into Aperture. "Store Files: In their current location" once in Aperture make low rez Previews, and export finished Project.
    the low rez Previews will stay in Aperture but the high quality Versions will be exported onto DVDs and gone from the hard drive (if you delete the originals).
    another way would be to export small about 50-70 pixel wide high quality jpegs to a folder on your Desktop and import & keep these in Aperture Library as a reference. make metadata to show where the original Project DVDs are stored and DVD filing system used.
    victor

  • Any Way I Can Make My Page's Images Load One At a Time?

    Hi folks,
    I have a page with a stack of large images. It takes several seconds for them all to load, but I was wondering if there's any way I could dictate the order in which all of these images load? This way, the top image would load first, then the the next one down, and so on, leaving little perceivable page load time for visitors.
    It seems like this would be a common necessity for a web page, does anyone know an easy (because I know very little about this) way to do this?
    Thanks!

    One major problem, is that you have scaled the images in DW, and not in a graphics program.   I have your page open in the background and it's been a while loading and it's still not finished  :-)
    eg:  the following images has properties of:
    http://www.selfeffacingtheories.com/web-content/pictures/picpics/holes.jpg
    933px × 699px  but you have scaled it to:  615px × 458px
    Trying to put your page through the Web Optimiser - doesn't show a very good result - it couldn't be tested because it exceed the size requirement.
    http://www.websiteoptimization.com/services/analyze/
    The size of this web page (4264698 bytes) has exceeded the maximum size of 3000000 bytes.
    This is just way too big a file size and seriously needs to be optimised.  The only way to do this is to scale down the images in either Photoshop or Fireworks.
    Why not use a lightbox effect, where you show a much smaller size of the image and then when someone clicks on it they see a much larger version of the image:
    My small demo here: (using the Dreamweaver Lightbox Extension)
    http://dreamweaverresources.com/tutorials/dreamweaver-lightbox/

  • Problems with image loader 'swissarmy.js' in 7.0.1

    My Javascript image loader 'swissarmy.js' at www.sustainableaggregates.com loads images right justified in 7.0.1, in older versions of Firefox or all other current browsers it's OK.
    Is this a bug in Firefox 7.0.1 rendering engine or is it down to a bad piece of Javascript. Swissarmy.js is used a lot in many websites.
    Will a future imminent FF upgrade cure this or do I need to source a new image loader script?

    My Javascript image loader 'swissarmy.js' at www.sustainableaggregates.com loads images right justified in 7.0.1, in older versions of Firefox or all other current browsers it's OK.
    Is this a bug in Firefox 7.0.1 rendering engine or is it down to a bad piece of Javascript. Swissarmy.js is used a lot in many websites.
    Will a future imminent FF upgrade cure this or do I need to source a new image loader script?

  • XML scrolling thumbnail, image loader, & Buttons [halfway works]

    Intro:
    I started a flash-based website a few years ago. Back in 2006 I was able to get a xml scrolling thumbnail, image loader to work without a glitch.
    For numerous reasons I had to put the project on hold until now. [one was that my 30 day trial of flash expired and only recently was I able to purchase the Adobe Web Suite CS4 as well as a new computer which could run the apps.]
    Last Friday saw a bump in the road in the development of my site as two, rather straightforward task, turned into something short of a nightmare as I have been unable to get past these two, seemingly, relatively simple task.
    I have posted in 4 other flash forums the issues, in detail, that I am facing - and have quite a bit of interest/views in the topic as the numbers suggest - yet no response/answer as of yet. [Which confirms other messages I have seen which seem to state that working with buttons has become increasingly difficult with the newer version of flash - something Im a bit surprised with actually from Adobe. - I would have thought there would be a palette where you could set parameters...]
    Screenshot of Site/Timeline:
    Before getting into the two questions I have, I would like to post an image of the site as it looks whenever an swf file is saved out, as well as a piece of the timeline in the back for reference.
    Issue #1
    As of now when the swf file is saved out you get exactly what you see above:
    a: A scrolling thumbnail
    b: ...which loads a large image when clicked on it - PEFECT...
    BUT...
    1a: I need for the buttons to load in this action, not for it to just load on its own.
    [i.e., the silk_paintings gallery is what is open, so I need the "silk_paintings" button to call up this action]
    note: Initially I had attacked this problem by taking out the actions layer you see above and applying it directly to the individual buttons with some crude MouseEvent Listener/Handerls... that did not work - at all.
    Im sure it may be "easier" to make an array out of it, but with my coding level it may be "easier" to apply it to the buttons.
    1b: How I currently see it, I would take the xml-list and duplicate it for the number of galleries I have.
    [I would then re-name the xml-list to reflect the name of the galleries they are to represent, i.e. "silk_paintings"]
    [also, I would have to rename the folders to "thumbnails1,2,3, etc., & "images 1,2,3, etc"
    From there I would duplicate the actions and paste it into the buttons, changing the xml-list name to that of "silk_paintings", etc., as well as write in the MouseEvent listener Handler to make it work. [ah, ha, but what is that magic phrase, I have tried to implement various code from other tutorials, and all in vein.]
    Issue #2
    At this point I would be tickled pink just to get this to basic function to work.
    However, once the buttons are working and calling up the xml, etc., then I need the buttons to stay on the semi-transparent blue color it is whenever in the 'hit' state. [note: NOT pictured above.]
    With the way the buttons are currently set up, and with wanting to use scripting to get them to interact with the thumbnail gallery, it will have to be some miraculous code to tell that button what color to stay as whenever its clicked, and of course it going back to white when another button is clicked.
    Conclusion:
    Since this is an Adobe Forum I would like to make a few additional statements in hopes that the developers, etc. may take heed.
    Adobes products are not cheap, and when I went to purchase the websuite I went in as a designer needing a program as not to need to program.
    I understand the flexibility that coding gives, but something as simple as linking buttons should not be in the realms of rocket science. [yes, for many its not...but my brain just does not operate that route despite all the tutorials thrown at me.]
    Again, it would seem that there would be a button panel where you could drag options like scrolling thumbnail slider, loader, and then parameters would come up. [much like Apples iWeb. - but before the argument of one being pro and the other for non-pros, I see it differently. Software should not be the limiting factor in how flexible you can design, or rather ones lack of programming shouldnt be. With all the talented, and I say this in all humility and honesty, programmers working for Adobe, Im sure something could be programmed like what Im asking for.]
    note: Director is a good example, back in 1997 I knew nothing of multimedia and in one week I had assembled a portfolio, clicking buttons, speech, movies, and all. - and no, I dont have the money to buy more software!
    At this moment I am at the mercy of someone who reads code like its a nighttime tale they are telling their kids, and who can see the exact issue I have and can share the appropriate, correct code. [as I have noticed, it has to be on target - naturally - but this target changes with just a slight change in the design.]
    Thank you,
    peace
    Dalen
    p.s.
    The actionscript: [note: This is only the current working/good code that Im trying to get the buttons to call up.]
    stop();
    fscommand("allowscale", false);//keep SWF display at 100%
    var x:XML = new XML ();//Define XML Object
    x.ignoreWhite = true;
    var fullURL:Array = new Array;//Array of full size image urls
    var thumbURL:Array = new Array;//Array of thumbnail urls
    var thumbX:Number = 25;//Initial offset of _x for first thumbnail
    x.onLoad = function(){ //Function runs after XML is loaded
        var photos:Array = this.firstChild.childNodes;//Defines variable for length of XML file
         for (i=0;i<photos.length;i++) {//For loop to step through all entry lines of XML file
              fullURL.push(photos[i].attributes.urls);//Each loop, adds URL for full sized image to Array fullURL
              thumbURL.push(photos[i].attributes.thumbs);//Each loop, adds URL for thumbnails to Array thumbURL
              trace(i+". Full Image = "+fullURL[i]+"  Thumb Image = "+thumbURL[i]);         
              var t = panel.attachMovie("b","b"+i,i);//Each loop, Define local variable 't' as a new instance of 'b' movie clip, given unique instance name of 'b' plus the index number of the For loop
              t.img.loadMovie(thumbURL[i]);// Each loop, load thumbnail image from XML data into variable movie clip
              t._y = 0;//Set Y coordinate of variable movie clip
              t._x = thumbX;//Set X coordinate of variable movie clip based on variable thumbX
              t.numb = i;//Set sub-variable 'numb' inside variable t to hold index number
              t._alpha = 75;//Set the Alpha value of the variable movie clip to 75% - for onRollOver highlight action
              thumbX += 55;//Increment thumbX value so next thumbnail is placed 125 pixels to the right of the one before
              t.onRollOver = function () {//define onRollOver event of the variable movie clip
                   this._alpha = 100;//Set thumbnail alpha to 100% for highlight
              t.onRollOut = function () {//define onRollOut event of the variable movie clip
                   this._alpha = 75;//Reset thumbnail alpha to 75%
              t.onPress = function () {//define onPress event of the variable movie clip
                   this._rotation += 3;//rotates thumbnail 3 degrees to indicate it's been pressed
                   this._x += 3;//Offset X coordinate by 3 pixels to keep clip centered during rotation
                   this._y -= 3;//Offset Y coordinate by 3 pixels to keep clip centered during rotation
              t.onReleaseOutside = function () {//define onRelease event of the variable movie clip
                   this._rotation -= 3;//rotate thumbnail back 3 degrees
                   this._x -= 3;//Reset X coordinate by 3 pixels to keep clip centered during rotation
                   this._y += 3;//Reset Y coordinate by 3 pixels to keep clip centered during rotation
                   this._alpha = 75;//Reset thumbnail alpha to 75%
              t.onRelease  = function () {//define onRelease function to load full sized image
                   this._rotation -= 3;//rotate thumbnail back 3 degrees
                   this._x -= 3;//Reset X coordinate by 3 pixels to keep clip centered during
                   this._y += 3;//Reset Y coordinate by 3 pixels to keep clip centered during
                   this._alpha = 75;//Reset thumbnail alpha to 75%
                   holder.loadMovie(fullURL[this.numb]);//Load full sized image into holder clip based on sub-variable t.numb, referenced by 'this'
         holder.loadMovie(fullURL[0]);//Initially load first full size image into holder clip
    x.load ("silk_paintings.xml");// path to XML file
    panel.onRollOver = panelOver;
    function panelOver() {
         this.onEnterFrame = scrollPanel;
         delete this.onRollOver;
    var b = stroke.getBounds(_root);
    function scrollPanel() {
         if (_xmouse<b.xMin||_xmouse>b.xMax||_ymouse<b.yMin||_ymouse>b.yMax) {
         this.onRollOver = panelOver;
         delete this.onEnterFrame;
         if (panel._x >= 740) {
         panel._x = 740;
    if(panel._x <= (thumbX-10))  {
              panel._x = (thumbX-10)
         var xdist = _xmouse - 830;
         panel._x += -xdist / 7;
    The xml:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <slideshow>
    <photo thumbs="thumbnails/i_brown_fairy.jpg"  urls="images/brown_fairy.jpg"  />
    <photo thumbs="thumbnails/i_blonde_fairy.jpg"  urls="images/blonde_fairy.jpg"  />
    <photo thumbs="thumbnails/i_flower_fairy.jpg"  urls="images/flower_fairy.jpg"  />
    <photo thumbs="thumbnails/i_red_fairy.jpg"  urls="images/red-fairy.jpg"  />
    </slideshow>
    Attached is a link to the file I made named "index".
    https://rcpt.yousendit.com/706233226/5e7b4fe0973dacf090b5cbae32c47398
    I would have liked to have included the following files but was limited due to "you-send-it" not uploading folders.  Files not included: [but functioning] : xml list - images [folder] - thumbnails [folder]
    Again, Thank you
    Dalen

    The issues with the buttons calling up the scrolling thumbnail panel have been resolved, as well as keeping the buttons in their hit state once clicked, thanks to Rob.
    Those that have been following this thread, or stumble upon it in their searches later, may appreciate to see the final solution to this particular issue.
    [Hopefully I will be able to update this thread with a url in the future to show the site in operation, which may help somebody with their project in the future if its set up similarly.]
    Alas, it would be nice if future versions of flash had a more direct, flexible, user friendly method for creating navigation.
    [We may see development beyond the flash ads which everyone seems to loathe... and more creativity with flash in terms of games, web interactivity, &  animation.
    Below are 2 sets of code:
    a] the first is located within the first frame of the first button, and has some extra variables in it that the additional buttons call upon...
    b] the second is the code applied to every other button.
    stop();
    fscommand("allowscale", false);//keep SWF display at 100%
    var x:XML = new XML();//Define XML Object
    x.ignoreWhite = true;
    var fullURL:Array = new Array();//Array of full size image urls
    var thumbURL:Array = new Array();//Array of thumbnail urls
    //  .......  CHANGE
    var thumbX:Number;// = 25;//Initial offset of _x for first thumbnail
    // make an array of all of the instance names of each button object...
    // only do this once
    var buttonsList:Array = new Array(shadesOfGrey, silkPaintings);
    shadesOfGrey.isLatched = false;
    // the rollover function... repeat for each button
    shadesOfGrey.onRollOver = shadesOfGrey.onDragOver=function ():Void {
         if (!this.isLatched) {
              this.gotoAndStop(2);
    // the rolloff function... repeat for each button
    shadesOfGrey.onRollOut = shadesOfGrey.onDragOut=shadesOfGrey.onReleaseOutside=function ():Void {
         if (!this.isLatched) {
              this.gotoAndStop(1);
    // the mouse press function... repeat for each button
    shadesOfGrey.onPress = function():Void  {
         resetAllButtons();
         this.isLatched = true;
         this.gotoAndStop(3);
    shadesOfGrey.onRelease = function():Void  {
         x.load("shadesOfGrey.xml");// path to XML file
         thumbX = 25;
    function resetAllButtons():Void {
         for (b in buttonsList) {
              buttonsList[b].isLatched = false;
              buttonsList[b].gotoAndStop(1);
    x.onLoad = function() {//Function runs after XML is loaded
         //  resets the position of the panel on each new load
         panel._x = 740;
         //  .......  CHANGE  removes the existing movieclips from the panel before any new load...
         for (c in panel) {
              if (typeof (panel[c]) == "movieclip") {
                   removeMovieClip(panel[c]);
         var photos:Array = this.firstChild.childNodes;//Defines variable for length of XML file
         for (i=0; i<photos.length; i++) {//For loop to step through all entry lines of XML file
              fullURL.push(photos[i].attributes.urls);//Each loop, adds URL for full sized image to Array fullURL
              thumbURL.push(photos[i].attributes.thumbs);//Each loop, adds URL for thumbnails to Array thumbURL
              //trace(i+". Full Image = "+fullURL[i]+"  Thumb Image = "+thumbURL[i]);
              var t = panel.attachMovie("b", "b"+i, i);//Each loop, Define local variable 't' as a new instance of 'b' movie clip, given unique instance name of 'b' plus the index number of the For loop
              t.img.loadMovie(thumbURL[i]);// Each loop, load thumbnail image from XML data into variable movie clip
              t._y = 0;//Set Y coordinate of variable movie clip
              t._x = thumbX;//Set X coordinate of variable movie clip based on variable thumbX
              t.numb = i;//Set sub-variable 'numb' inside variable t to hold index number
              t._alpha = 75;//Set the Alpha value of the variable movie clip to 75% - for onRollOver highlight action
              thumbX += 55;//Increment thumbX value so next thumbnail is placed 125 pixels to the right of the one before
              t.onRollOver = function() {//define onRollOver event of the variable movie clip
                   this._alpha = 100;//Set thumbnail alpha to 100% for highlight
              t.onRollOut = function() {//define onRollOut event of the variable movie clip
                   this._alpha = 75;//Reset thumbnail alpha to 75%
              t.onPress = function() {//define onPress event of the variable movie clip
                   this._rotation += 3;//rotates thumbnail 3 degrees to indicate it's been pressed
                   this._x += 3;//Offset X coordinate by 3 pixels to keep clip centered during rotation
                   this._y -= 3;//Offset Y coordinate by 3 pixels to keep clip centered during rotation
              t.onReleaseOutside = function() {//define onRelease event of the variable movie clip
                   this._rotation -= 3;//rotate thumbnail back 3 degrees
                   this._x -= 3;//Reset X coordinate by 3 pixels to keep clip centered during rotation
                   this._y += 3;//Reset Y coordinate by 3 pixels to keep clip centered during rotation
                   this._alpha = 75;//Reset thumbnail alpha to 75%
              t.onRelease = function() {//define onRelease function to load full sized image
                   this._rotation -= 3;//rotate thumbnail back 3 degrees
                   this._x -= 3;//Reset X coordinate by 3 pixels to keep clip centered during
                   this._y += 3;//Reset Y coordinate by 3 pixels to keep clip centered during
                   this._alpha = 75;//Reset thumbnail alpha to 75%
                   holder.loadMovie(fullURL[this.numb]);//Load full sized image into holder clip based on sub-variable t.numb, referenced by 'this'
         holder.loadMovie(fullURL[0]);//Initially load first full size image into holder clip
    // this one function scrolls the panel for all of the buttons, it gets the
    // size of the panel when the images are loaded by any given button...
    stroke.onEnterFrame = function() {
         if (this.hitTest(_xmouse, _ymouse, false)) {
              if (panel._x>=740) {
                   panel._x = 740;
              if (panel._x<=740-panel._width+mask._width) {
                   panel._x = 740-panel._width+mask._width;
              if ((panel._x<=740) && (panel._x>=740-panel._width+mask._width)) {
                   var xdist = _xmouse-830;
                   panel._x += -xdist/7;
    Of note is the change to how the movie clips are measured... this change in and of itself has really helped to make the thumbnail panels operation more efficient.
    Below is the script for each additional button: [Having issues with the forums not letting me post additional code, so I will put the remaining code in a reply below.]
    cont.

  • Issue with Image Loader in 14.0

    Hi All,
    In our application, we have a custom function module in ECC, which is passing the URL of an image uploaded on the content management server(KPRO). Custom FM calls 'SDOK_PHIO_GET_URL_FOR_GET' to get the URL of the image.
    When we execute the FM in ECC, we get the URL as:
    http://gbswidkprodb01.global.rexam.net:81/ContentServer/ContentServer.dll?get&pVersion=0046&contRep=YA&docId=001F296E9EB61ED3B6F490000438C20C&compId=TJ12A.jpg&accessMode=r&authId=CN%3DBC3,OU%3DI0520020335,OU%3DSAPWebAS,O%3DSAPTrustCommunity,C%3DDE&expirat
    when I use this URL in the browser the image gets loaded in browser.
    When I capture the output of JCO call in write file URL returned from FM is:
    http://<server>:81/ContentServer/ContentServer.dll?get&amp;pVersion=0046&amp;contRep=YA&amp;docId=001F296E9EB61ED3B6F490000438C20C&amp;compId=TJ12A.jpg&amp;accessMode=r&amp;authId=CN%3DBC3,OU%3DI0520020335,OU%3DSAPWebAS,O%3DSAPTrustCommunity,C%3DDE&amp;expiration=20140617181313&amp;secKey=MIIBUgYJKoZIhvcNAQcCoIIBQzCCAT8CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGCAR4wggEaAgEBMG8wZDELMAkGA1UEBhMCREUxHDAaBgNVBAoTE1NBUCBUcnVzdCBDb21tdW5pdHkxEzARBgNVBAsTClNBUCBXZWIgQVMxFDASBgNVBAsTC0kwNTIwMDIwMzM1MQwwCgYDVQQDEwNCQzMCByASCCcTUiEwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE0MDYxNzE2MTMxM1owIwYJKoZIhvcNAQkEMRYEFM%2FKd4MzWL0y1KfF58AHNg9PYqOlMAkGByqGSM44BAMELzAtAhUAtqASnXbD3E2ZM8EhG%2FLxgJhKCs0CFH0qFlBxzWlzS8kjeFw3kad63SHW
    when I use this URL in the browser I get 'HTTP 400' error.
    Using either of the two URL's in the image loader I get the error:
    [WARN] [ImageLoader_0]ImageLoader_0 Status: 400 - (bad request)
    We are currently on SAP MII 14.0 SP05(patch 3).
    Thanks in advance for your help.
    Regards,
    Darshan

    Sam,
    I tried logging in to ECC with the same user as the one that is making the Jco connection and it is giving the same URL which i was getting earlier when i was executing the FM with my user id. I am testing the FM through SE37.
    There is no logic in the custom BAPI to replace the <server> keyword. Based on the image name, it gives the URL of where the image is stored on the KPRO server.
    Could not find URL Decode function in the MII link editor, i believe it is the decode function which you are referring to. Even that is not working. If it is something other than this, do let me know.
    PS: This works fine in the 11.5 system from which we have upgraded to 14.0.
    regards,
    darshan

  • Images load really slow after using Reduce File Size...

    After using the "Reduce File Size..." feature in Acrobat 9 on Windows Vista, some of the images load really slow as I page through the document. Is there some kind of compression setting that I should look for to prevent the images from be affected by this?
    For some of my documents it will take 30 to 60 seconds to load an image. Sometimes I can't do anything with the document until the graphic loads entirely.

    Can you post an example of a file that has this issue? Personally, I recommend using the PDF optimizer, it gives better control of the final pdf file.

  • I have created a webpage. The images load on EI and Chrome. But not on Firefox. Why is that?

    I have created a webpage ( luckysquidstudios.com) with basic HTML and none of the images load on Firefox. They load on Chrome and IE. Why is that.

    That is a problem with backslashes in the image links that Firefox sees as %5c.<br />
    You need to change those to forward slashes
    See Tools > Page Info > Media
    *http://luckysquidstudios.com/%5Cimages%5CHome%5Cconsquid.png
    *http://luckysquidstudios.com/%5Cimages%5CHome%5Cfacebookicon.png
    *http://luckysquidstudios.com/%5Cimages%5CHome%5Cdaicon.png

  • Something in correct with Image loading....

    Hi All,
    I have created a very simple form to load image into a form.
    Using forms 10g dev suite on win XP.
    I load two images for two image items.
    for IMAGE1 I have written the below code in its when-image-pressed trigger and this Image loading WORKS FILE...
    i get the desired image loaded
    DECLARE
         tiff_image_dir VARCHAR2(80) := 'C:\DevSuiteHome_1\forms\111.gif';
         photo_filename VARCHAR2(80);
    BEGIN
         :System.Message_Level := '25';
         photo_filename := tiff_image_dir ;
         READ_IMAGE_FILE(photo_filename, 'GIF', 'emp.my_test_button');
         READ_IMAGE_FILE(photo_filename, 'GIF', 'emp.my_test_button');
         IF NOT FORM_SUCCESS THEN MESSAGE('This employee does not have a photo on file.');END IF;
         :SYSTEM.MESSAGE_LEVEL := '0';
         END;
    the problem is with Image two...it laods some incorrect image .....as i am trying to USE JAR file
    the trigger code is below
    DECLARE
         photo_filename VARCHAR2(80);
    BEGIN
         :System.Message_Level := '25';
         READ_IMAGE_FILE('111.gif', 'URL', 'emp.image_item');
         IF NOT FORM_SUCCESS THEN MESSAGE('This employee does not have a photo on file.');END IF;
         :SYSTEM.MESSAGE_LEVEL := '0';
    END;
    below is the entry for my formsweb.cfg
    I have placed my
    [my_app]
    width=675
    height=480
    separateFrame=false
    splashScreen=no
    lookAndFeel=oracle
    colorScheme=blue
    background=/forms/formsdemo/images/blue.gif
    logo=/forms/formsdemo/images/bannerlogo.gif
    baseHTMLjinitiator=demobasejini.html
    baseHTMLjpi=demobase.htm
    baseHTML=demobase.html
    baseHTMLie=demobaseie.html
    envFile=formsdemo.env
    archive_jini=frmall_jinit.jar,AppIcons.jar
    #archive=frmall_jinit.jar
    pageTitle=Oracle Forms - My Application
    form=my_test_button.fmx
    imagebase=codebase
    userid=scott1/tiger@ora11g
    My classpath entry in ENV file is
    CLASSPATH=C:\DevSuiteHome_1\jlib\debugger.jar;C:\DevSuiteHome_1\forms\demos\my_app\AppIcons.jar;C:\DevSuiteHome_1\forms\demos\jars\uploadserver.jar;C:\DevSuiteHome_1\forms\demos\jars\demowebserviceclientside.jar;C:\DevSuiteHome_1\jdk\jre\lib\rt.jar;C:\DevSuiteHome_1\forms\demos\jars\javamailintegration.jar;C:\DevSuiteHome_1\forms\demos\jars\mail.jar;C:\DevSuiteHome_1\forms\demos\jars\activation.jar
    What mistake am i doing?
    rgds,
    s

    Slava ,Magoo and S@r@h....
    I have done the following,still no respite..
    step 1) Create the jar file
    C:\myapp>jar cvf AppIcons.jar *.gif
    added manifest
    adding: 111.GIF(in = 28895) (out= 28675)(deflated 0%)
    adding: 222.GIF(in = 28895) (out= 28675)(deflated 0%)
    adding: name_gif.GIF(in = 28903) (out= 28681)(deflated 0%)
    step 2) move the AppIcons.jar in the ClassPATH specified by env file(envFile=formsdemo.env)
    in my case the classpath looks like below
    and I have moved the AppIcons.jar to C:\DevSuiteHome_1\forms\demos\my_app
    CLASSPATH=C:\DevSuiteHome_1\jlib\debugger.jar;C:\DevSuiteHome_1\forms\demos\my_app\AppIcons.jar;C:\DevSuiteHome_1\forms\demos\jars\uploadserver.jar;C:\DevSuiteHome_1\forms\demos\jars\demowebserviceclientside.jar;C:\DevSuiteHome_1\jdk\jre\lib\rt.jar;C:\DevSuiteHome_1\forms\demos\jars\javamailintegration.jar;C:\DevSuiteHome_1\forms\demos\jars\mail.jar;C:\DevSuiteHome_1\forms\demos\jars\activation.jar
    step 3) shutdown and restart the OC4J
    To Answer Slava's question:
    2. Check Jinitiator console and see if AppIcons.jar is loaded.
    You should see :
    Loading http://host:port/forms/java/AppIcons.jar from JAR cache
    YES its loading prefectly.
    To answer Magoo's questions:
    q)What is the incorrect image look like? Somehting like a broken link image?
    Yes,the image is a small page icon which is broken like a torn page(and has three small solid figures in it)
    q)Do you get there a message like Unable to load image 111.gif for Image Item ?
    No I do not get any error message.
    What next ?
    rgds
    s

  • No Action Until Image Loads, Please

    Hi;
    For some reason the squares of color that are supposed to load behind the image that acts as a mask load first, momentarily showing while the image loads, which looks bad. Hre is the code:
    package
        import flash.display.Sprite;
        import flash.text.TextLineMetrics;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.text.TextFormatAlign;
        import flash.text.TextFieldAutoSize;
        import flash.net.navigateToURL;
        import flash.display.Bitmap;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.display.MovieClip;
        import com.greensock.*;
        import com.greensock.easing.*;
        import flash.display.Loader;
        import flash.events.ProgressEvent;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.text.TextFieldAutoSize;
        import flash.net.URLRequest;
        import Images;
        import flash.display.SpreadMethod;
        [SWF(backgroundColor="0x505050")]
        public class BillsBBQPreloader extends MovieClip
            var loader:Loader = new Loader();
            var loader2:Loader = new Loader();
            var loader3:Loader = new Loader();
            var loader4:Loader = new Loader();
            var loader5:Loader = new Loader();
            private var myTextField:TextField = new TextField();
            var imgFlag1:Boolean = new Boolean(false);
            var imgFlag2:Boolean = new Boolean(false);
            var imgFlag3:Boolean = new Boolean(false);
            var imgFlag4:Boolean = new Boolean(false);
            var imgFlag5:Boolean = new Boolean(false);
            var thermometer:Images = new Images();
            var thermometerMask:Images = new Images();
            var mask_container:Sprite = new Sprite();
            var square:Sprite = new Sprite();
            public function BillsBBQPreloader()
                addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
            private function init(e:Event)
    //            addChild(mask_container);
    //            mask_container.addChild(thermometerMask);
                addChild(square);
                AddThermometer();
            private function AddText():void
                var clientName:TextField = new TextField();
                var format:TextFormat = new TextFormat();
                format.font = 'Arial';
                format.size = 35;
                clientName.textColor = 0x023048;
                clientName.text = "Bill's Texas Pit BBQ";
                clientName.autoSize = TextFieldAutoSize.LEFT;
                clientName.setTextFormat(format);
                var nameSprite:Sprite = new Sprite();
                nameSprite.x = stage.stageWidth/2 - 150;
                nameSprite.y = 10;
                nameSprite.alpha = 0;
                TweenLite.to(nameSprite, 2, {alpha:1});
                addChild(nameSprite);
                nameSprite.addChild(clientName);
                AddWhite();
            private function AddThermometerMask():void
                thermometerMask.ImagesArray = ["images/thermometer-mask.png", "index.py", 144, 1152, (stage.stageWidth-144)/2, 23];
                AddRed();
            private function AddWhite():void
                square.graphics.beginFill(0xffffff);
                square.graphics.moveTo(0,0);
                square.graphics.lineTo(100,0);
                square.graphics.lineTo(100,504);
                square.graphics.lineTo(0,504);
                square.graphics.endFill();
                square.x = (stage.stageWidth-100)/2;
                square.y = ((stage.stageHeight+458)/2)-83;
                AddRed();
            private function AddRed():void
    //            square.mask = mask_container;
                square.graphics.beginFill(0xff0000);
                square.graphics.moveTo(0,0);
                square.graphics.lineTo(75,0);
                square.graphics.lineTo(75,504);
                square.graphics.lineTo(0,504);
                square.graphics.endFill();
                square.x = (stage.stageWidth-74)/2;
                square.y = ((stage.stageHeight+458)/2)-83;
                AddLoaders();
            private function AddThermometer():void
                thermometer.ImagesArray = ["images/thermometer-mask.png", "index.py", 144, 1152, (stage.stageWidth-144)/2, (stage.stageHeight-458)/2];
                addChild(thermometer);
    //            AddThermometerMask();
                AddText();
            private function AddLoaders():void
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
                loader.load(new URLRequest("images/logo_w_fire.png"));
                loader2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
                loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded2);
                loader2.load(new URLRequest("images/tpwebbaseline.jpg"));
                loader3.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded3);
                loader3.load(new URLRequest("images/tpdplatebgwflame.jpg"));
                removeEventListener(Event.ADDED_TO_STAGE, init);
                addChild(myTextField);
                myTextField.width = 250;
                myTextField.x = (stage.stageWidth-50)/2;
                myTextField.y = 470;
                myTextField.selectable = false;
                myTextField.border = false;
                myTextField.borderColor = 0xAA0000;
                myTextField.autoSize = TextFieldAutoSize.LEFT;
                var myFormat:TextFormat = new TextFormat();
                myFormat.color = 0x023048;
                myFormat.size = 24;
                myFormat.italic = true;
                myTextField.defaultTextFormat = myFormat;
            private function imageLoaded(event:Event):void
                imgFlag1 = true;
                if (imgFlag2 == true && imgFlag3 == true)
                    completePreloader();
            private function imageLoaded2(event:Event):void
                imgFlag2 = true;
                if (imgFlag1 == true && imgFlag3 == true)
                    completePreloader();
            private function imageLoaded3(event:Event):void
                imgFlag3 = true;
                if (imgFlag1 == true && imgFlag2 == true)
                    completePreloader();
            function completePreloader()
                var req:URLRequest = new URLRequest('index.py');
                navigateToURL(req, '_self');
            function loop(e:ProgressEvent):void
                var perc:Number = e.bytesLoaded/e.bytesTotal;
                myTextField.text = Math.ceil(perc*100).toString() + "%";
                var myY:Number = ((stage.stageHeight+458)/2)-83-(3.75*perc*100)
                square.y = myY;
    Here's the code for Images()
    package  {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.filters.*;
        import flash.filters.BitmapFilterQuality;
        import flash.net.URLRequest;
        import flash.net.URLLoader;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.display.DisplayObject;
        import flash.events.Event;
        import flash.events.IOErrorEvent;
        public class Images extends MovieClip
            private var parent_container:Sprite = new Sprite();
            private var _path:String = new String("path");
            private var _myWidth:Number = new Number(20);
            private var _myHeight:Number = new Number(20);
            private var _myX:Number = new Number(20);
            private var _myY:Number = new Number(20);
            private var _myURL:String = new String("url");
            public function Images():void
            public function set ImagesArray(_imagesArray:Array):void
                _path = _imagesArray[0];
                _myURL = _imagesArray[1];
                _myWidth = _imagesArray[2];
                _myHeight = _imagesArray[3];
                _myX = _imagesArray[4];
                _myY = _imagesArray[5];
                LoadImage();
            function LoadImage():void
                parent_container = new Sprite();
                addChild(parent_container)
                var req:URLRequest = new URLRequest(_path);
                var loader:Loader = new Loader();
                loader.load(req);
                loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);         
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadedImage);
            function LoadedImage(e:Event):void
                var loaderInfo:LoaderInfo = e.target as LoaderInfo;
                var displayObject:DisplayObject = loaderInfo.content;
                displayObject.width = _myWidth;
                displayObject.height = _myHeight;
                parent_container.addChild(displayObject);
                parent_container.x = _myX;
                parent_container.y = _myY;
            function ioErrorHandler(event:IOErrorEvent):void {
                trace("ioErrorHandler: " + event);
    I have experimented with adding the square child elsewhere (such as in the code where it is created twice), but that proves even more disastrous. Please advise.
    TIA,
    Beno

    Oops. I realize now you guys showed me how to do this; namely dispatchEvent(). (This was a problem I set aside while we solved the one that addressed this issue.) Here is the revised code which accomplishes what I wanted:
    package
        import flash.display.Sprite;
        import flash.text.TextLineMetrics;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.text.TextFormatAlign;
        import flash.text.TextFieldAutoSize;
        import flash.net.navigateToURL;
        import flash.display.Bitmap;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.display.MovieClip;
        import com.greensock.*;
        import com.greensock.easing.*;
        import flash.display.Loader;
        import flash.events.ProgressEvent;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.text.TextFieldAutoSize;
        import flash.net.URLRequest;
        import Images;
        import flash.display.SpreadMethod;
        [SWF(backgroundColor="0x505050")]
        public class BillsBBQPreloader extends MovieClip
            var loader:Loader = new Loader();
            var loader2:Loader = new Loader();
            var loader3:Loader = new Loader();
            var loader4:Loader = new Loader();
            var loader5:Loader = new Loader();
            private var myTextField:TextField = new TextField();
            var imgFlag1:Boolean = new Boolean(false);
            var imgFlag2:Boolean = new Boolean(false);
            var imgFlag3:Boolean = new Boolean(false);
            var imgFlag4:Boolean = new Boolean(false);
            var imgFlag5:Boolean = new Boolean(false);
            var thermometer:Images = new Images();
            var thermometerMask:Images = new Images();
            var mask_container:Sprite = new Sprite();
            var square:Sprite = new Sprite();
            public function BillsBBQPreloader()
                addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
            private function init(e:Event)
    //            addChild(mask_container);
    //            mask_container.addChild(thermometerMask);
                AddThermometer();
            private function AddText():void
                var clientName:TextField = new TextField();
                var format:TextFormat = new TextFormat();
                format.font = 'Arial';
                format.size = 35;
                clientName.textColor = 0x023048;
                clientName.text = "Bill's Texas Pit BBQ";
                clientName.autoSize = TextFieldAutoSize.LEFT;
                clientName.setTextFormat(format);
                var nameSprite:Sprite = new Sprite();
                nameSprite.x = stage.stageWidth/2 - 150;
                nameSprite.y = 10;
                nameSprite.alpha = 0;
                TweenLite.to(nameSprite, 2, {alpha:1});
                addChild(nameSprite);
                nameSprite.addChild(clientName);
                AddWhite();
            private function AddThermometerMask():void
                thermometerMask.ImagesArray = ["images/thermometer-mask.png", "index.py", 144, 1152, (stage.stageWidth-144)/2, 23];
                AddRed();
            private function AddWhite():void
                square.graphics.beginFill(0xffffff);
                square.graphics.moveTo(0,0);
                square.graphics.lineTo(100,0);
                square.graphics.lineTo(100,504);
                square.graphics.lineTo(0,504);
                square.graphics.endFill();
                square.x = (stage.stageWidth-100)/2;
                square.y = ((stage.stageHeight+458)/2)-83;
                AddRed();
            private function AddRed():void
    //            square.mask = mask_container;
                square.graphics.beginFill(0xff0000);
                square.graphics.moveTo(0,0);
                square.graphics.lineTo(75,0);
                square.graphics.lineTo(75,504);
                square.graphics.lineTo(0,504);
                square.graphics.endFill();
                square.x = (stage.stageWidth-74)/2;
                square.y = ((stage.stageHeight+458)/2)-83;
                AddLoaders();
            private function AddThermometer():void
                thermometer.ImagesArray = ["images/thermometer-mask.png", "index.py", 144, 1152, (stage.stageWidth-144)/2, (stage.stageHeight-458)/2];
                thermometer.addEventListener("loadcomplete", AddToStage);
            private function AddToStage(e:Event):void
                addChild(square);
                addChild(thermometer);
                AddText();
            private function AddLoaders():void
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
                loader.load(new URLRequest("images/logo_w_fire.png"));
                loader2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
                loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded2);
                loader2.load(new URLRequest("images/tpwebbaseline.jpg"));
                loader3.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded3);
                loader3.load(new URLRequest("images/tpdplatebgwflame.jpg"));
                removeEventListener(Event.ADDED_TO_STAGE, init);
                addChild(myTextField);
                myTextField.width = 250;
                myTextField.x = (stage.stageWidth-50)/2;
                myTextField.y = 470;
                myTextField.selectable = false;
                myTextField.border = false;
                myTextField.borderColor = 0xAA0000;
                myTextField.autoSize = TextFieldAutoSize.LEFT;
                var myFormat:TextFormat = new TextFormat();
                myFormat.color = 0x023048;
                myFormat.size = 24;
                myFormat.italic = true;
                myTextField.defaultTextFormat = myFormat;
            private function imageLoaded(event:Event):void
                imgFlag1 = true;
                if (imgFlag2 == true && imgFlag3 == true)
                    completePreloader();
            private function imageLoaded2(event:Event):void
                imgFlag2 = true;
                if (imgFlag1 == true && imgFlag3 == true)
                    completePreloader();
            private function imageLoaded3(event:Event):void
                imgFlag3 = true;
                if (imgFlag1 == true && imgFlag2 == true)
                    completePreloader();
            function completePreloader()
                var req:URLRequest = new URLRequest('index.py');
                navigateToURL(req, '_self');
            function loop(e:ProgressEvent):void
                var perc:Number = e.bytesLoaded/e.bytesTotal;
                myTextField.text = Math.ceil(perc*100).toString() + "%";
                var myY:Number = ((stage.stageHeight+458)/2)-83-(3.75*perc*100)
                square.y = myY;
    package  {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.filters.*;
        import flash.filters.BitmapFilterQuality;
        import flash.net.URLRequest;
        import flash.net.URLLoader;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.display.DisplayObject;
        import flash.events.Event;
        import flash.events.IOErrorEvent;
        public class Images extends MovieClip
            private var parent_container:Sprite = new Sprite();
            private var _path:String = new String("path");
            private var _myWidth:Number = new Number(20);
            private var _myHeight:Number = new Number(20);
            private var _myX:Number = new Number(20);
            private var _myY:Number = new Number(20);
            private var _myURL:String = new String("url");
            public function Images():void
            public function set ImagesArray(_imagesArray:Array):void
                _path = _imagesArray[0];
                _myURL = _imagesArray[1];
                _myWidth = _imagesArray[2];
                _myHeight = _imagesArray[3];
                _myX = _imagesArray[4];
                _myY = _imagesArray[5];
                LoadImage();
            function LoadImage():void
                parent_container = new Sprite();
                addChild(parent_container)
                var req:URLRequest = new URLRequest(_path);
                var loader:Loader = new Loader();
                loader.load(req);
                loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);         
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadedImage);
            function LoadedImage(e:Event):void
                var loaderInfo:LoaderInfo = e.target as LoaderInfo;
                var displayObject:DisplayObject = loaderInfo.content;
                displayObject.width = _myWidth;
                displayObject.height = _myHeight;
                parent_container.addChild(displayObject);
                parent_container.x = _myX;
                parent_container.y = _myY;
                dispatchEvent(new Event("loadcomplete"));
            function ioErrorHandler(event:IOErrorEvent):void {
                trace("ioErrorHandler: " + event);
    Thanks,
    Beno

Maybe you are looking for

  • Please help, Applet and JInternalFrame

    Hi, I have EXHAUSTEDresearch but to no avail on how to make the internal frame title ... closing button visible Currently it just covers up the entire area with the JInternalFrame The folwing is the code form the applet class                //JDeskto

  • Photos do not print in Contacts (a.k.a. Address Book) when I am printing a group.

    One of simple things that I have loved from the beginning with my iPhone and my iMac is that when I meet a new person, I can record their contact information in the Address Book on my iPhone and attached their photo to it.  When I arrive home I am th

  • My Apple Mail doesn't work properly on a specific wifi network.

    When I'm on a friend's wifi network with my Macbook, Apple Mail doesn't refresh and get new mail. However, all the other internet functionality works just fine on the laptop. This is specifically the only wifi network that doesn't let my Apple Mail c

  • Cannot Install Illustrator CS5.5 - Mac Lion

    I bought CS5.5 Production Premium and have tried unsuccessfully to install it about a dozen times now.  After searching the forums I've tried a wide variety of things to get the install to work, but no matter what, when the installation is complete,

  • JavaHelp OutOfMemoryError ?!

    I`m getting this error after 20 or 30 openings of different help pages in my application. Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space         at java.awt.image.DataBufferInt.<init>(Unknown Source)