Как просто добавить спрайт в текстовую область? - PullRequest
5 голосов
/ 07 июня 2011

Как мне добавить добавления (не просто изменить всю текстовую область к этому изображению, а добавить) простого спрайта изображения 25x25 в текстовую область в проекте flex? используя Actionscript? (не mxml)

(это должен быть компонент текстовой области, в основном потому, что это гибкий мобильный проект, и это все, что оптимизировано для мобильных устройств)

редактирование: Я думаю, я должен был сказать это, я знаю, что текст HTML это способ сделать это. Но моя настоящая путаница заключается в том, что сначала это спрайт, поэтому у меня нет URL для ссылки. Это фактическая переменная спрайта (это будет файл, отправленный по сети в байтах и ​​сохраненный в объекте спрайта.), А затем вторая часть, в которой я потерян, добавляет его к встроенному тексту, поэтому он не заменяет текст уже в текстовой области и будет прокручиваться в текстовой области.

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

ИЗМЕНИТЬ СНОВА: Так как была некоторая путаница в спрайте, который я пытаюсь добавить, вот как передается изображение,

это просто стандартное изображение камеры, затем ..

var fs:FileStream = new FileStream();
fs.open(new File(imageURL), FileMode.READ);
var bytes:ByteArray = new ByteArray();
fs.readBytes(bytes);
fs.close();
if (bytes == null) 
{
    trace("Image bytes is null!");

} 
else 
{
    var message:Object = new Object();
    message.type = "pic";
    message.bytes = bytes;
    netGroup.post(message);
    trace("Picture sent!");
}

Тогда я получаю это так

var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowCodeImport = false;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoaded,false,0,true);
loader.loadBytes(message.bytes, loaderContext);
// add a new sprite to hold image
imageSprite = new Sprite();
imageSprite.addChild(loader);

Итак, наконец, у меня есть изображение в imageSprite ... и это подводит нас к моей главной проблеме - добавить это изображение в компонент искры TEXT AERA. С конечным результатом, который будет иметь вид графического сообщения, отправленного на Android или iPhone.

Ответы [ 4 ]

1 голос
/ 10 августа 2011

Я делал это раньше, и это было боль . Пользователь печатает и затем щелкает значок изображения (например, смайлик), и он «вставляет» в текст. Все, что я делал, это ломал фокусированный TextField, присоединял BitmapImage, а затем начинал новый TextField в конце присоединенного BitmapImage.

Шаги:

  • Создайте массив, в котором будут храниться ваши фрагменты TextField и BitmapImage.
  • Каждый раз, когда вы слышите backspace KeyUp, проверьте, находитесь ли вы в начале TextField. Если вы находитесь в начале TextField, найдите TextField в вашем массиве фрагментов. Если предыдущий блок равен BitmapImage, найдите BitmapImage, очистите его вместе с теперь пустым TextField и затем поместите курсор пользователя в конец блока TextField, который был до BitmapImage
  • Пересмотр и обзор. Если вы человек , будут ошибки.

В итоге вы получаете ощущение 1034 * с интеграцией "смайликов". Это хлопотно, но, безусловно, хорошо работает , когда вы все правильно поняли.

1 голос
/ 07 июня 2011

хороший вопрос!Подобный вопрос задавался ранее.взгляните на проблему Actionscript в Dynamic TextField

0 голосов
/ 07 июня 2011

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

Кроме того, вы видели документы по компонентам свечей ??

"Из соображений производительности он не поддерживает прокрутку, выбор, редактирование, кликабельные гиперссылки или изображения, загружаемые с URL-адресов. Если вам нужны эти возможности, ознакомьтесь с классом RichEditableText."

RichText http://docs.huihoo.com/flex/4/spark/components/RichText.html

RichEditableText http://docs.huihoo.com/flex/4/spark/components/RichEditableText.html


Я не делаю изгиб, но я думаю, что это то, что вам нужно ??Таким образом, в основном, добавление текстового потока внутри компонента - это то, что нужно ...

<s:RichEditableText id="richTxt" textAlign="justify" width="100%">
            <s:textFlow>
                <s:TextFlow>
                    <s:p>
                        <s:img source="@Embed(source='../assets/butterfly.gif')" height="100" width="100"/>
                    </s:p>
                </s:TextFlow>
            </s:textFlow>
        </s:RichEditableText>

От: Добавление изображений с TLF

0 голосов
/ 07 июня 2011

Самый простой способ сделать это - использовать htmlText. Не знаю, если это самый лучший способ, но это работает. :)

import flash.text.TextField;

var TF:TextField = new TextField();
this.TF.width = 200;
this.TF.height = 200;
this.TF.htmlText="Image in textfield: <img src='http://upload.pusha.se/3/HittaTidning_75.jpg' hspace='0' vspace='0'>";

this.addChild(this.TF);
...