Хорошо, я только что потратил пару часов, разбираясь с этим, но у меня это работает во Flash и Flex.
Отображение изображений в текстовом поле
Вы можете загружать объекты DisplayObject в теги TextField <img />
, включая фрагменты роликов, спрайты и встроенные изображения.
Во Flash или Flex, если вы хотите отобразить встроенное изображение, вам нужно будет создать класс-оболочку, который расширяет класс DisplayObject
(например, Sprite или MovieClip).
Убедитесь, что ваше текстовое поле достаточно велико, чтобы вместить изображение. Во время тестирования я думал, что что-то не работает, когда у меня действительно было слишком мало TextField для отображения всего изображения.
Пример Flash
Простой пример, весь код находится на главной временной шкале.
Создайте динамическое текстовое поле в рабочей области. Дайте ему удобное имя, я зову свое txtImageTest
.
Измените размер txtImageTest
до подходящего размера, например 300x150 пикселей.
Создайте новый символ MovieClip и дайте ему имя класса, например imageClip1
.
Нарисуйте что-нибудь в своем новом клипе или поместите встроенное изображение внутрь imageClip1
.
Вернитесь на основную временную шкалу, снимите выделение со всех объектов и откройте редактор ActionScript на первом кадре.
Включите многострочность и перенос слов в текстовом поле:
imageClip1.wordWrap = true;
imageClip1.multiline = true;
imageClip1.htmlText = "<p>You can include an image in your HTML text with the <img> tag.</p><p><img id='testImage' src='imageClip1' align='left' width='30' height='30' hspace='10' vspace='10'/>Here is text that follows the image. I'm extending the text by lengthening this sentence until it's long enough to show wrapping around the bottom of the image.</p>"
Сохраните и протестируйте свой фильм.
Пример Flex
Поскольку мы не можем просто создать новый MovieClip в библиотеке, как это было во Flash, нам нужно создать новый класс, который выполняет ту же задачу (этот метод также работает во Flash, если вы хотите создать новый клип в библиотеке) .
Вот мой класс для пули с черным треугольником, который называется BlackArrow.as:
// Set the correct package for you class here.
package embed
{
import flash.display.Sprite;
import mx.core.BitmapAsset;
public class BlackArrow extends Sprite
{
// Embed the image you want to display here.
[Embed(source='assets/embed/triangleIcon_black.png')]
[Bindable]
private var TriangleImage:Class;
public function BlackArrow()
{
super();
// Instantiate the embedded image and add it to your display list.
var image:BitmapAsset = new TriangleImage();
addChild(image);
}
}
}
ПРИМЕЧАНИЕ. Не расширяйте Bitmap (во Flash) или BitmapAsset (во Flex), поскольку они неправильно масштабируются или позиционируются в TextField. Выберите Sprite или что-то подобное.
Вот пример класса, который отображает это изображение в TextField:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%">
<mx:Script>
<![CDATA[
import embed.BlackArrow;
// You must include a variable declaration of the same type as your
// wrapper class, otherwise the class won't be compiled into
// the SWF and you will get an IOError.
private var img2:BlackArrow;
]]>
</mx:Script>
<mx:Text id="txtResults1" width="100%" height="100%">
<mx:htmlText>
<![CDATA[<p>You can include an image in your HTML text with the <img> tag.</p><p><img id='testImage' src='embed.BlackArrow' align='left' hspace='10' vspace='10'/>Here is text that follows the image. I'm extending the text by lengthening this sentence until it's long enough to show wrapping around the bottom of the image.</p>]]>
</mx:htmlText>
</mx:Text>
</mx:VBox>
Обратите внимание, что я использую полное имя класса в атрибуте src
тега изображения.
Заключительные примечания
person
Sly_cardinal
schedule
13.11.2009