Improve company productivity with a Business Account.Sign Up

x
?
Solved

Load PNG into Flash Library for ActionScript

Posted on 2009-05-12
6
Medium Priority
?
1,425 Views
Last Modified: 2013-11-11
Is there a way to load an external PNG file into the Flash library at runtime and then add an identifier to it dynamically so that I could attach the image to various movie clips?  I don't want to loadMovie('file.png',mc) over and over again.  I'd like to just load the PNG file once, give it a reference name, and then use the name to attach the image to numerous movie clips.

I'D LIKE TO LOAD THE PNG FILE ONCE:::

var logo_loader = new MovieClipLoader();
var logoListener:Object = new Object();
logo_loader.addListener(logoListener);
logoListener.onLoadInit = function(target:MovieClip) {target.forceSmoothing = true;}
logo_loader.loadClip( source_url, [some movie clip that I can reference later]  );

AND THEN USE THE LOADED PNG LIKE THIS::

for (i=0; i<10; i++) {
      logo = story_holder.attachMovie('[ movie clip with loaded PNG]','my_png_button',i);
      logo._x = 10;
      logo._y = 5;
}

I'm trying to avoid loading and re-loading the same PNG when it only needs to be loaded once and then referenced.  I'm more familiar with loading PNG assets that are already in the library at runtime, but in this case I need to load the PNG and then attach the reference name when the swf first loads.

Can this be done?
0
Comment
Question by:marcparillo
6 Comments
 
LVL 39

Expert Comment

by:blue-genie
ID: 24372003
I don't think this is possible. what you can do is load it at runtime off stage and access it that way.
0
 
LVL 3

Author Comment

by:marcparillo
ID: 24373266
So, I would load the PNG into a movie clip off stage and then attach that off-stage movie clip containing the PNG to any other movie clip?
0
 
LVL 39

Accepted Solution

by:
blue-genie earned 800 total points
ID: 24375330
yeah you could do that by referencing the movieclip it's loaded into.
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
LVL 37

Assisted Solution

by:CyanBlue
CyanBlue earned 400 total points
ID: 24375474
I don't think you can duplicate the movieClip that contains the loaded image...  It'll need to be reloaded everytime you need it...  Glad to be proven wrong...  I'd love to have that feature...

CyanBlue
0
 
LVL 22

Assisted Solution

by:rascalpants
rascalpants earned 800 total points
ID: 24378121
I believe duplicateMovieClip() is what you are looking for in AS 2.0  

for AS 3.0, you can use Senocular's DupilcateDisplayObject class...

http://www.senocular.com/flash/actionscript.php?file=ActionScript_3.0/com/senocular/display/duplicateDisplayObject.as


or you could create a Singleton Class that loads the PNG, and then you call a method in the Singleton class that gets the Movieclip reference, and then you use addChild to push it to the display stack of the individual Movieclip that needs the PNG.


that sounded overly complex, but it really isn't.


more specifics would help...


rp / ZA
0
 
LVL 22

Expert Comment

by:rascalpants
ID: 24379588
also, if you are allowed to take the PNG and turn it into a SWF, then you could use the below code to make it work for you...

Lets say the PNG is loaded into a movieclip and the export for Actionscript is checked... the example assumes you named it "TheLogo"

then you load in the SWF with the normal Loader class, and then you use the applicationDomain by referencing the class name you gave it in the external SWF...  in this case "TheLogo".

then you can create a new instance of that class...  

FYI... this is all AS3.


rp / ZA


import flash.display.Loader;
import flash.system.ApplicationDomain;
 
var logoURL:String = "TheLogo.swf";
var total:int = 10;
 
var logoLoader = new Loader();
logoLoader.load( new URLRequest( logoURL ) );
 
logoLoader.contentLoaderInfo.addEventListener(Event.INIT, logoLoader_OnInit, false, 0, true);
 
function logoLoader_OnInit( evt:Event ):void
{
	logoLoader.contentLoaderInfo.removeEventListener(Event.INIT, logoLoader_OnInit);
	
	// "TheLogo" is the class name given in the library properties panel
	var logo:Class = evt.target.applicationDomain.getDefinition("TheLogo");
 
	for( var i:int = 0; i < total; ++i )
	{
		var tempL:DisplayObject = new logo();
		
		tempL.x = Math.ceil( Math.random() * 400 );
		tempL.y = Math.ceil( Math.random() * 400 );
		
		this.addChild( tempL );
	}
}

Open in new window

0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

This is a very simple example to help those of you who are still migrating from AS2 to AS3 understand the redesigned event model in AS3. In AS2.0, event functions (that is, the function to be performed when an event is fired) were stored as a pro…
I have found that much of my time doing support ends up being a constant repetition of the same steps to different people.  Early on I stated using web pages with Frequently Asked Questions (FAQs) to alleviate most of the burden.  Sometimes this jus…
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.

602 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