Динамические изображения из БИБЛИОТЕКИ! - PullRequest
0 голосов
/ 07 сентября 2010

Попытка динамически загружать изображения из библиотеки, а НЕ извне, поскольку я хочу, чтобы эти изображения загружались при запуске сайта.В основном у меня есть несколько кнопок, каждая кнопка возвращает событие, которое выбрасывает конкретное имя изображения для захвата.Вот функция;

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);
}

Итак, в основном, когда вызывается функция, я хочу создать экземпляры имен для имен реальных фрагментов роликов в библиотеке.Приведенная ниже функция работает, но только для одного изображения.

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);
} 

Так как я могу сделать эту функцию динамической, используя строку и затем получить изображение, связанное с этой строкой, из библиотеки.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Другая опция использует getDefinitionByName :

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

Итак, если у вас уже есть правильное имя связи, вы можете сделать что-то вроде этого:

function sendDisplayData(e:MouseEvent){
    //create the image object 
    var imgObj:DisplayObject = getDisplayObject(e.currentTarget.parent.menuItemName.text);
    addChild(imgObj);
}
1 голос
/ 07 сентября 2010

Есть много вариантов, здесь один из самых простых, хотя и не очень гибкий.

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

          //etc....

          default:
            return null;
     }
   }
}

Вы также можете поместить все свои объекты изображений в массив, убедитесь, что присваиваете имя каждому из них, а затем используйте метод Array some (), чтобы найти объект, соответствующий имени, и вернуть его.

Тогда вы могли бы сделать это:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...