簡體   English   中英

AS3設置影片剪輯的(最大)高度(不縮放內容)

[英]AS3 set (maximum-)height of movieclip without scaling content

我正在嘗試設置文本字段的最大高度,此后僅在滾動時才會顯示文本。 我知道,您不能設置受保護的文本字段的高度。 因此,我將Textfield放在動畫片段中,並希望為其設置高度。 但是,如果這樣做,它將重新縮放文本。 根據文本的數量,它不僅丑陋,而且明顯不可讀。

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切換為一個。 因此,一旦我執行了正確的功能,它便可見但被壓扁。

任何幫助,將不勝感激

克里斯

您應該使用numLines確定文本字段中的行數。

var maxlines:Number = 5;

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

好,所以我發現我要去哪里了。

“ * infobox_text.autoSize = TextFieldAutoSize.LEFT; *”行使我無法設置textField的寬度和高度。 禁用該選項后,您可以指定高度和寬度,並且texfield不必嵌套在動畫片段中。

有時人們看不到樹木的樹林...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM