Flex AS3: динамически назначить кнопке свойство upSkin для удаленного файла? - PullRequest
0 голосов
/ 18 марта 2010

Я создаю приложение Flex с ActionScript 3. К сожалению, я ударил стену этим ...

Я хотел бы иметь возможность применить upSkin к моей динамически генерируемой кнопке, например:

//this theSkin variable is dynamic in my app, but for this example it's a simple string
var theSkin:String = "http://www.mypicturedomain.com/images/myimage.gif";

var navBtn:Button = new Button();
navBtn.id = "thumb1";
navBtn.width = 60;
navBtn.height = 45;    

//skin the button
navBtn.setStyle("upSkin", theSkin);

//add the button to my canvas
myCanvas.addChild(navBtn);

Когда я пытаюсь это сделать, я получаю эту ошибку:

Ошибка типа: ошибка # 1034: сбой приведения типа: невозможно преобразовать flash.display :: Loader @ 3dac941 в класс.

Как мне скинуть эту кнопку с моим изображением динамически? Несколько вещей для рассмотрения:

  1. Образ upSkin должен быть удаленным. Это не может быть местным.
  2. Кнопка должна генерироваться динамически (она находится в цикле for).

Любая помощь / идеи будут очень признательны на этом этапе!

Ответы [ 2 ]

0 голосов
/ 23 марта 2010

Я решил свою проблему, перейдя с компонентом HorizontalList вместо холста. Намного легче! Просто нужно было вставить мои изображения в массив и убедиться, что itemRenderer был установлен в mx.controls.Image, чтобы он отображал элементы в моей коллекции массивов как изображения. Как только мой массив был создан, мне просто нужно было создать из него коллекцию массивов, а затем назначить источник данных для горизонталиста. Это выглядит примерно так:

private function myFunction():void{

    var thumbArray:Array = new Array("http://www.something.com/mypic1.png", "http://www.something.com/mypic4.png", "http://www.something.com/mypic3.png");
    var myArrayCollection = new ArrayCollection(thumbArray);

    imageScroller.dataSource = myArrayCollection;

}

<mx:HorizontalList itemRenderer="mx.controls.Image" columnWidth="80" rowHeight="64" x="0" y="0" id="imageScroller" width="640" enabled="true" borderStyle="none" backgroundAlpha="1" borderColor="#FCA000" backgroundColor="#1C1C1C"></mx:HorizontalList>

Надеюсь, это поможет кому-то еще!

0 голосов
/ 18 марта 2010

Вы пытались загрузить изображение в объект?

[Embed(source="myimage.gif")] 
private var theSkin:Class;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...