Solved

Loading external images to Flash at run-time

Posted on 2004-10-06
3
145 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

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Suggested Solutions

There are times in your Flash CS4 application when you want more than a simple pointer or a hand, and it's hard to find an ideal walk-through to tell you what to do.  I spent a few days recently learning my way around making custom cursors in Flash,…
Recently, I was asked to recommend a tracking system to be implemented on a clients website. As the entire site was built on flash, my first thought was to suggest custom built tracking system. However, our company at that point of time didn't h…
The goal of the tutorial is to teach the user how to live broadcast using Flash Media Live Encoder and connecting it to YouTube to broadcast. Log into your Youtube account, choose live stream settings, start live stream from Flash Media Live Enc…
This Micro Tutorial will teach to how to utilize bit rate in Adobe Flash Media Live Encoder.

759 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

24 Experts available now in Live!

Get 1:1 Help Now