如何简单地将精灵附加到文本区域?

时间:2011-06-07 05:13:18

标签: flash flex actionscript-3 textarea sprite

如何将附加(不仅仅是将整个文本区域更改为此img,实际附加)将一个简单的25x25图像精灵转换为flex项目中的文本区域?使用动作? (不是mxml)

(它必须是一个火花文本区域组件,主要是因为这是一个灵活的移动项目,并且所有这些都针对移动设备进行了优化)

编辑: 我想我应该这样说,我知道HTML文本是可行的方法。但我真正的困惑在于它首先是一个精灵,所以我没有一个链接到的URL。它是一个实际的sprite var(它将是一个以字节为单位通过网络发送的文件,并保存在sprite对象中。)然后我丢失的第二部分是将其附加到文本内联,因此它不会替换任何文本已经在文本区域中,并且可以在文本区域中滚动。

另外,请记住即时尝试将其附加到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 spark组件中。最终结果将具有在Android或iphone上发送的图片消息的外观。

4 个答案:

答案 0 :(得分:1)

好的问题!之前曾问过类似的问题。看看Actionscript problem in Dynamic TextField

答案 1 :(得分:1)

我以前做过这件事,这是痛苦。用户将键入然后单击图像图标(如图释),它将“插入”文本。我所做的就是打破当前关注的TextField,附加BitmapImage,然后在附加TextField的末尾开始一个新的BitmapImage

步骤:

  • 创建一个存储TextFieldBitmapImage块的数组。
  • 每次听到退格 KeyUp时,请检查您是否在TextField的开头。如果您位于TextField的开头,则会在您的数组块中找到TextField。如果上一个块是BitmapImage,那么找到BitmapImage,将其与现在为空的TextField一起清除,然后将用户的光标放在TextField块的末尾。在BitmapImage
  • 之前
  • 修改和审核。如果您是 human ,则会出现错误。

您最终会感觉像是一个无缝的TextField与“表情符号”集成。这很麻烦,但当你做对了时,肯定会很好。

答案 2 :(得分:0)

最简单的方法是使用html Text。 不知道这是否是最合适的方式,但它有效。 :)

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

答案 3 :(得分:0)

如果您确定上传的文件始终是图像,请尝试将精灵投射到图像中。

另外,你看到了火花组件docs吗?

  

“出于性能原因,它没有   支持滚动,选择,编辑,   可点击的超链接或加载的图像   来自网址。如果你需要那些   能力,请看   RichEditableText类。“

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

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


我不做flex,但我认为这是你需要的?所以基本上,在组件内添加文本流是需要的......

<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>

来自:Adding images with TLF

相关问题