Solved

Loading external images to Flash at run-time

Posted on 2004-10-06
3
146 Views
Last Modified: 2010-04-03
I have a map (created in Flash MX) which consist of many location node's represented by the 'square' icon (image in JPEG format, 3KB in size). It will take nearly 50 seconds to load all the icons (more than 90 icons) and display it on the map. I'm using actionscript to fetch the icons from server.
Few questions to ask here :- Hope you expert guys out there can hands the help. :)
1. What's is the best way to load all the icons in terms of  design, coding and technology wise.
2. How to make faster loading time of icons?
3. Is there any possibilities to load and save the icons(images) to local PC (using cache) for future local-loading?

Icon Table
ID      status      url      blink
1      11      yellow.jpg      1
2      12      red.jpg      1


ASP coding
---
            strSQL = "select * from map_ico"
            Set rs = objConn.Execute(strSQL)

            i = 0
                  
            While Not rs.EOF
                     Response.Write "&ico_status" & i & "=" & rs("status")& "&<br>"
                     Response.Write "&url" & i & "=" & rs("url")& "&<br>"
                     Response.Write "&blink" & i & "=" & rs("blink")& "&<br>"'add for         
                      i = i+1
                      rs.MoveNext
            Wend
      
            Response.Write "&icoNum=" & i & "&<br>"
---


Actionscript coding
----
      _root.icoUrls.splice(0);
      _root.icosNum = lvData.icoNum;
            
      for (i=0; i<lvData.icoNum; i++) {
            _root.icoUrls[i] = new icoUrlClass(lvData["ico_status" add i],lvData["url" add i],lvData["blink" add i]);
            
      }

some codes here
            for(j = 0; j<_root.icosNum; j++){
                  if(_root.icoUrls[j].status == lvData["ico" add i]){
                  
                        eval("_root.summary" add i).ico.url = _root.icoUrls[j].url;
                        eval("_root.summary" add i).ico.gotoAndStop(2);
                        
                        break;
                  }
            }

----



0
Comment
Question by:showbix
3 Comments
 
LVL 6

Expert Comment

by:nishasrilankan
ID: 12245554
Hi...

I think you can put all the icons in one larger Image (Lets think that icon is 10x10px in size...for 90 icons you can use larger image which contains 30cols and 30rows...and using a mask which is 10x10px..you can set the x and y of the larger image to display the relevent icon.) this will help to reduce the loading time..and  reduce the file size by 90%....if you are using just a plain square as an Icon you can use the color object to change the color of the Icon instead of the separate icons...
0
 

Author Comment

by:showbix
ID: 12245714
Hi nishasrilankan.
I'm still new to Flash and the Actionscript. Maybe you can elaborate more of your comments and if possible with examples.
0
 

Accepted Solution

by:
subhailc earned 100 total points
ID: 12455145
showbix:

unless you're times are in reference to dialup dl's, there's something wrong.  if you have only 90 images at 3kb each, it certainly shouldnt take that long to load.  i always dynamically load jpgs, and often have well in excess of a 100, which are rarely as small as you've mentioned filesize-wise.  i commonly use 380x380 as a standard size for product 'fullsize' shots, which usually run about 20-25kb.  are you sure everything's at 72dpi and that the bit depth is at 8?  i don't think thats the problem since it would be obvious (i.e., the filesize wouldn't be 3kb).

perhaps its the db import - as's xml class is plenty for what you're doing - actually LoadVars would be even better considering time since we then wouldnt incur the overhead of an xml parser - can you get the image list into a text file?  delimit them any way you want (tab, comma, space, carriage return) and put this in frame 1

m = new LoadVars();
m.load("yourtextfile.txt");
m.onData = function(r) {
      var n = [];
      n = r.split("\r\n");
      for (i=0; i<n.length; i++) {
            x=createEmptyMovieClip(n[i], i);
            x.createEmptyMovieClip("jpg",0);
            x.jpg.loadMovie(n[i]);
      }
};

course, change "yourtextfile.txt" to the appropriate filename, and i used \r and \n as delimiters; carriage returns and line stops.  if you use something else, just change what's between the quotes in that line to whatever you're using (so if you separated them with commas, you'd use n=r.split(",");)

hth, gl
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is intended to introduce all collision detection principles in flash, their strengths, weaknesses and workarounds. The main method for Collision Detection in flash is using hitTestObject. But unless you'll be pushing rectangular shapes without …
Sometimes you know that one object has a specific child in it, but you can't find the child. This happened to me when I was trying to code some actionScript to make a toolbar work with its embedded buttons.  My partner had created the toolbar usi…
In this tutorial viewers will learn how to create a basic motion tween animation in Flash Open a new document in Flash: Draw/import an image: Press CTRL + F8 to convert it into a graphic symbol: Select a frame (how long you want the tween to last): …
This Micro Tutorial will teach to how to utilize bit rate in Adobe Flash Media Live Encoder.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now