开发者

Dynamic images from LIBRARY!

Trying to load images dynamically from library NOT externally since i want these images to开发者_JAVA百科 be loaded when the site is launched. Basically i have several buttons, each button returns an event that throws a specific image name to grab. Here is the function;

function sendDisplayData(e:MouseEvent){
    display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; //name of image eg. "myImageName" in the library;

    //create the image object 
    var imgObj:Object = e.currentTarget.parent.menuItemName.text;
    addChild(imgObj);
}

So basically when the function is called, i want to instantiate the names to the names of the actual movieclips in the library. The function below works but only for one image.

function sendDisplayData(e:MouseEvent){
    display_mc.displayName.text = e.currentTarget.parent.menuItemName.text;

    //create the image object 
    var image:Salads = new Salads(); //the class of the image is "Salads"
    display_mc.addChild(Salads);
} 

So how can i make this function dynamic by using a String and then grabbing the image related to that string from the library.


Another option is using getDefinitionByName:

function getDisplayObject(linkage:String):DisplayObject {
    var clazz:Class = getDefinitionByName(linkage) as Class;
    return new clazz();
}

So, if you already have the proper linkage name, you could do something like this:

function sendDisplayData(e:MouseEvent){
    //create the image object 
    var imgObj:DisplayObject = getDisplayObject(e.currentTarget.parent.menuItemName.text);
    addChild(imgObj);
}


There are many options, here one of the simpler ones , although not really flexible.

public class Inventory
{
    public static function getMovieClipByName(value:String):MovieClip
    {
       switch(value )
       {
          case "Salads":
            return new Salads();
            break;

          //etc....

          default:
            return null;
     }
   }
}

You could also put all your image objects in an array make sure to assign a name to each of them and then use the Array some() method to find the object corresponding to the name and return it.

Then you could do this:

function sendDisplayData(e:MouseEvent){
    var _name:String = display_mc.displayName.text = e.currentTarget.parent.menuItemName.text;

    //create the image object 
    var image:MovieCLip = Inventory.getMovieClipByName(_name);
    display_mc.addChild(image);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜