AS3设置(最大 - )动画片段的高度,不缩放内容

时间:2013-09-19 14:59:36

标签: actionscript-3 flash textfield movieclip

我正在尝试设置文本字段的最大高度,之后只有在滚动时才会显示文本。 我知道,您无法设置文本字段的高度,因为它受到保护。因此,我将Textfield放在一个movieclip中,并想为此设置一个高度。但是,如果我这样做,它会重新调整文本。根据文本的数量,它不仅变得难看,而且显然不可读。

function createInfoBox():void
{
for (var i:uint = 0; i < level_200_menu_NEW.numChildren; i++)
{
    var button200 = level_200_menu_NEW.getChildAt(i);
    button200.addEventListener(MouseEvent.CLICK, goBack);
}
while (infobox_MC.numChildren)
{
    infobox_MC.removeChildAt(0);
}

// Create a new instance of the _agilita_str symbol from the document's library.
var myFont:Font = new HelveticaNeueLight();
var nextSprite:MovieClip = new MovieClip();
var prevSprite:MovieClip = new MovieClip();

var infobox_title:TextField = new TextField();
var infobox_text:TextField = new TextField();
var infobox_facts:TextField = new TextField();
var infobox_next:TextField = new TextField();
var infobox_prev:TextField = new TextField();

var format_title:TextFormat = new TextFormat();
format_title.font = myFont.fontName;
format_title.size = 26;
format_title.color = 0x2d4275;

var format_text:TextFormat = new TextFormat();
format_text.font = myFont.fontName;
format_text.size = 20;
format_text.color = 0x000000;
format_text.leading = 6;
format_text.indent = - 17;
format_text.blockIndent = 17;

var format_bullet:TextFormat = new TextFormat();
format_bullet.font = myFont.fontName;
format_bullet.size = 20;
format_bullet.color = 0x000000;
format_bullet.indent = - 17;
format_bullet.blockIndent = 17;
format_bullet.leading = 6;
format_bullet.kerning = true;

var format_btn:TextFormat = new TextFormat();
format_btn.font = myFont.fontName;
format_btn.size = 12;
format_btn.color = 0x2d4275;

var thisItem = xml.item.(@LEVEL == activeLevel);
var nextItem = xml.item.(@LEVEL == thisItem.NEXT_LEVEL);
var prevItem = xml.item.(@LEVEL == thisItem.PREV_LEVEL);

infobox_prev.text = prevItem.NAME;
infobox_prev.autoSize = TextFieldAutoSize.LEFT;
infobox_prev.selectable = false;
infobox_prev.embedFonts        = true; // very important to set
infobox_prev.setTextFormat(format_btn);
prevSprite.x = 50;
prevSprite.y = 720-50;
prevSprite.buttonMode = true;
prevSprite.mouseChildren = false;
prevSprite.addEventListener(MouseEvent.CLICK, infoboxPrev);
prevSprite.addChild(infobox_prev);

infobox_next.text = nextItem.NAME;
infobox_next.multiline = false;
infobox_next.autoSize = TextFieldAutoSize.RIGHT;
infobox_next.selectable = false;
infobox_next.embedFonts        = true; // very important to set
infobox_next.setTextFormat(format_btn);
nextSprite.x = 250;
nextSprite.y = 720-50;
nextSprite.buttonMode = true;
nextSprite.mouseChildren = false;
nextSprite.addEventListener(MouseEvent.CLICK, infoboxNext);
nextSprite.addChild(infobox_next);

var line:Shape = new Shape();
var line2:Shape = new Shape();
var box:Shape = new Shape();
box.name = "box";
infobox_MC.addChild(box);
infobox_MC.setChildIndex(box,0);

infobox_title.text = xml.item.(@LEVEL == activeLevel).NAME;
infobox_title.autoSize = "left";
infobox_title.selectable = false;
infobox_title.embedFonts = true; // very important to set

infobox_text.name = "infobox_text";
infobox_text.autoSize = TextFieldAutoSize.LEFT;
infobox_text.multiline = false;
infobox_text.selectable = false;
infobox_text.wordWrap = false;
infobox_text.embedFonts = true; // very important to set
infobox_text.text = xml.item.(@LEVEL == activeLevel).INFOTEXT;
//infobox_text.mouseWheelEnabled = false;
//infobox_text.appendText("\n aus de.wikipedia.org");

var temp:String = xml.item.(@LEVEL == activeLevel).FACTS;
var FACTS = temp.split("| ").join("\n");
infobox_facts.name = ("infobox_facts")
infobox_facts.multiline = true;
infobox_facts.selectable = false;
infobox_facts.embedFonts = true; // very important to set
infobox_facts.autoSize = TextFieldAutoSize.LEFT;
//infobox_facts.multiline = false;
infobox_facts.wordWrap = false;
infobox_facts.text = FACTS;
infobox_facts.mouseWheelEnabled = false;




infobox_title.defaultTextFormat = format_title;
infobox_text.defaultTextFormat = format_text;
infobox_facts.defaultTextFormat = format_bullet;
infobox_title.setTextFormat(format_title);
infobox_text.setTextFormat(format_text);
infobox_facts.setTextFormat(format_bullet);
//infobox_text.styleSheet = style_text;

box.graphics.beginFill(0xFFFFFF); // choosing the colour for the fill, here it is red
box.graphics.drawRect(0, 0, 400,720); // (x spacing, y spacing, width, height)
box.graphics.endFill(); // not always needed but I like to put it in to end the fill
box.alpha = .85;

infobox_title.x = 30;
infobox_title.y = 50;

infobox_text.x = (1280-700);
infobox_text.y = infobox_title.y + infobox_title.height + 10;
infobox_text.alpha = 0;

var maxWidthFacts:Number = 300;
var maxWidthText:Number = 600;


if (infobox_text.width > maxWidthText)
{
    infobox_text.multiline = true;
    infobox_text.wordWrap = true;
    infobox_text.width = maxWidthText;
}


infobox_facts.x = 50;
infobox_facts.y = infobox_title.y + infobox_title.height + 10;

if (infobox_facts.width > maxWidthFacts)
{
    infobox_facts.multiline = true;
    infobox_facts.wordWrap = true;
    infobox_facts.width = maxWidthFacts;
}


line.graphics.lineStyle(2.5, 0x3F3F3F, 1);
line.graphics.moveTo(infobox_title.x, infobox_title.y + infobox_title.height -2); 
line.graphics.lineTo(box.width - infobox_title.x, infobox_title.y + infobox_title.height-2);

line2.graphics.lineStyle(1, 0x3F3F3F, 1);
line2.graphics.moveTo(infobox_text.x, infobox_text.y + infobox_text.height); 
line2.graphics.lineTo(box.width - infobox_title.x, infobox_text.y + infobox_text.height);

var back_BTN = new Back_BTN();
back_BTN.addEventListener(MouseEvent.CLICK, playBackwards);
back_BTN.x = 1150;
back_BTN.y = 25;
back_BTN.name = "back_BTN";
for each(var item in xml.item.(@LEVEL == activeLevel))
{
    if(item.REFERENZ != "NONE")
    {
        var testSprite:MovieClip = new MovieClip();
        var infobox_more:TextField = new TextField();
        var moreSprite:MovieClip = new MovieClip();
        testSprite.name = "REFERENZ";
        testSprite.x = 50;
        testSprite.y = infobox_facts.y + infobox_facts.height + 25;
        imageLoad(item.REFERENZ,testSprite);
        moreSprite.addChild(infobox_more);
        infobox_MC.addChild(testSprite);
        infobox_MC.addChild(moreSprite);

        moreSprite.x = testSprite.x;
        moreSprite.y = testSprite.y;
        moreSprite.buttonMode = true;
        moreSprite.mouseChildren = false;

        moreSprite.name = "infobox_more";
        infobox_more.text = "Referenzbeispiele";
        infobox_more.multiline = false;
        infobox_more.autoSize = TextFieldAutoSize.RIGHT;
        infobox_more.selectable = false;
        infobox_more.embedFonts = true; // very important to set
        infobox_more.setTextFormat(format_btn);


        //var image = testSprite.getChildAt(0);
        var spriteWidth = testSprite.width * .035;
        var spriteHeight = testSprite.height * .035;

        testSprite.alpha = 0;
        /*
        testSprite.buttonMode = true;
        testSprite.mouseChildren = true;
        testSprite.addEventListener(MouseEvent.ROLL_OVER, iconHover);
        testSprite.addEventListener(MouseEvent.ROLL_OUT, iconOut);
        testSprite.addEventListener(MouseEvent.CLICK, iconBig);
        */
        //moreSprite.buttonMode = true;
        //moreSprite.mouseChildren = true;
        moreSprite.addEventListener(MouseEvent.CLICK, iconBig);
        infobox_MC.setChildIndex(testSprite,infobox_MC.numChildren-1);
        infobox_MC.addChild(moreSprite);

    }
}
var infobox_text_MC:MovieClip = new MovieClip();
infobox_text_MC.name = "infobox_text_MC";
infobox_text_MC.addChild(infobox_text);
infobox_MC.addChild(infobox_text_MC);
infobox_text_MC.scaleMode = StageScaleMode.NO_SCALE;
infobox_text_MC.height = 600;

trace(infobox_text_MC.x);
trace(infobox_text_MC.y);
trace(infobox_text_MC.width);
trace(infobox_text_MC.height);
infobox_text_MC.visible = true;
infobox_facts.text = FACTS;

infobox_MC.addChild(infobox_title);
infobox_MC.addChild(infobox_facts);
//infobox_MC.addChild(nextSprite);
//infobox_MC.addChild(prevSprite);
infobox_MC.addChild(back_BTN);



einblenden(infobox_MC);
}

使用其他一些功能,文本字段的alpha将被转换为一个。因此,一旦我执行了正确的功能,它就会被看到,但它会被压扁。

任何帮助将不胜感激

克里斯

2 个答案:

答案 0 :(得分:0)

您应该使用numLines来确定文本字段中的行数。

var maxlines:Number = 5;

if( infobox_facts.numlines > maxLines )
{
    // scroll it
}

答案 1 :(得分:0)

好的,所以我找到了我错的地方。

行“* infobox_text.autoSize = TextFieldAutoSize.LEFT; *”阻止我设置textField的宽度和高度。关闭它将允许您指定高度和宽度,并且texfield不需要嵌套在movieclip中。

有时人们看不到树木的木头......