如何在as3中的文本字段中添加背景图像

时间:2012-11-10 22:15:48

标签: actionscript-3 flash adobe

嘿伙计我正在为iPhone开发一个应用程序,我正在试图弄清楚如何将背景图像添加到用户存储的电话号码填充的文本字段中。

我的功能 -

function configureLabel():void
{
    label = new TextField();
    label.autoSize = TextFieldAutoSize.LEFT;
    label.background = true;
    label.border = true;
    label.width = 50;
    label.x = 55;
    label.y = 80;
    //label.htmlText = "whasfd";
    var format:TextFormat = new TextFormat();
    format.font = "arial";
    format.color = 0xFF0000;
    format.size = 10;
    format.underline = false;
    //format.leftMargin = 50;


    label.defaultTextFormat = format;
    addChild(label);
}

3 个答案:

答案 0 :(得分:2)

您可以创建包含文本字段和背景的显示对象类。然后,您只需向侦听任何更改的文本字段添加事件侦听器。每次更改时,背景都会调整为文本字段的当前大小。

以下是一个例子:

package 
{
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFieldType;
    import flash.text.TextFormat;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
            loader.load(new URLRequest("images/koala.jpg"));

        }// end function

        private function onComplete(e:Event):void {

            var bitmap:Bitmap = ((e.target as LoaderInfo).content as Bitmap);

            var container:TextFieldContainer = new TextFieldContainer();
            container.textField.autoSize = TextFieldAutoSize.LEFT;
            container.textField.defaultTextFormat = new TextFormat(null, null, 0xFF0000);
            container.textField.type = TextFieldType.INPUT;
            container.textField.multiline = true;
            container.setBackground(bitmap);
            addChild(container);

        }// end function

    }// end class

}// end package

import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;

class TextFieldContainer extends Sprite {

    private var _textField:TextField;
    private var _backgroundContainer:Sprite;

    public function get textField():TextField {

        return _textField;

    }// end function

    public function TextFieldContainer():void {

        _backgroundContainer = new Sprite();
        addChild(_backgroundContainer);

        _textField = new TextField();
        _textField.addEventListener(Event.CHANGE, onChange);
        addChild(_textField);

    }// end function

    private function onChange(e:Event):void {

        resizeBackground();

    }// end function

    public function setBackground(displayObject:DisplayObject):void {

        if (_backgroundContainer.numChildren > 0) {
            _backgroundContainer.removeChildAt(0);
        }// end if

        _backgroundContainer.addChild(displayObject);

        resizeBackground();

    }// end function

        private function resizeBackground():void {
            _backgroundContainer.width = _textField.width;
            _backgroundContainer.height = _textField.height;
        }

}// end function

答案 1 :(得分:1)

简短的回答是,您无法 - Flash TextFields不支持背景图片。

而是将位图放在文本字段后面。

答案 2 :(得分:0)

这可以解决问题。

txt.htmlText =“http://www.flexflashforum.com/styles/prosilver/imageset/site_logo.gif'width ='139'height = '52'>此图片位于Flash的动态文字字段下”