Как поместить изображение (скажем, PNG) на графику во Flex 3? - PullRequest
1 голос
/ 04 ноября 2008

Я новичок во Flex и пытаюсь написать простое приложение. У меня есть файл с изображением, и я хочу отобразить это изображение на графике. Как мне это сделать? Я попытался [Embed], добавив его и добавив в качестве дочернего компонента к компоненту, владеющему графикой, но я получаю сообщение «Ошибка приведения типов: невозможно преобразовать ... в mx.core.IUIComponent».

Ответы [ 5 ]

7 голосов
/ 04 марта 2011

Принятый ответ неполный, потому что без вызова drawRect() ничего не будет нарисовано. Я реализовал это таким образом, и это работает. Обратите внимание, что я добавил перевод матрицы, иначе изображения должны были бы отображаться либо с 0,0, либо были бы обрезаны неправильно.

[Embed(source='assets/land-field.png')] 
private var ImgField:Class; 
private var field:BitmapData = new ImgField().bitmapData;

public static function drawImage(g:Graphics, image:BitmapData, x:int, y:int):void {
  var mtx:Matrix = new Matrix();
  mtx.translate(x, y);
  g.beginBitmapFill(image, mtx, false, false);
  g.drawRect(x, y, image.width, image.height);
  g.endFill();
}
7 голосов
/ 04 ноября 2008

Сверху головы я могу вспомнить две вещи, которые могут вам помочь (в зависимости от того, чего именно вы пытаетесь достичь):

Если вы просто хотите отобразить встроенное изображение, вы можете добавить компонент Image к сцене и установить значение его source в качестве графического актива (Class), который вы встраиваете:

[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;

myImage.source = MyGfx;

Если вы действительно хотите нарисовать растровое изображение на Graphics объекте, вы можете сделать это с помощью метода beginBitmapFill () :

[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;

var myBitmap:BitmapData = new MyGfx().bitmapData;
myGraphics.beginBitmapFill(myBitmap);
myGraphics.endFill();

Вы можете найти полезными статьи Flex Quick Starts на сайте Adobe, особенно раздел «Встраивание ресурсов» .

0 голосов
/ 19 августа 2010

хорошо, есть другой способ сделать это Вы можете следовать http://livedocs.adobe.com/flex/3/langref/flash/display/Graphics.html#includeExamplesSummary и используйте метод beginBitmapFill (), смотрите пример очень полезный!

0 голосов
/ 05 ноября 2008

Поскольку вы новичок, вот простой способ.

В вашем приложении переключитесь в режим просмотра.

Перетащите компонент изображения из панели компонентов на основной холст приложения.

Размер изображения на холсте и оставить его выбранным. Справа на панели свойств нажмите кнопку «Папка» в поле «Источник».

Выберите ваше изображение. Если вы поместите изображение в папку вашего проекта, оно будет включено в папку сборки.

Тогда взгляните на исходный вид. Вы увидите код MXML, который отражает то, что вы сделали. Вы также можете изменить это вручную. Часть source = "blah.png" также может указывать на удаленный URL.

0 голосов
/ 04 ноября 2008

Вы также можете добавить обычный экранный объект AS3 к компоненту Flex, добавив его в коллекцию rawChildren (myComponent.rawChildren.addChild (myPNG)), но это уже немного.

Если вы пытаетесь сделать это через myDisplayObject.graphics, пожалуйста, опубликуйте пример источника.

...